示例#1
0
def main(param_args, frame):
    args = ParamArgs(param_args)
    nmsThreshold = args.nms
    global outNames, config, classes, winName
    # If config specified, try to load it as TensorFlow Object Detection API's pipeline.
    config = readTextMessage(args.config)
    if 'model' in config:
        print('TensorFlow Object Detection API config detected', file=sys.stderr)
        if 'ssd' in config['model'][0]:
            print('Preparing text graph representation for SSD model: ' + args.out_tf_graph, file=sys.stderr)
            createSSDGraph(args.model, args.config, args.out_tf_graph)
            args.config = args.out_tf_graph
        elif 'faster_rcnn' in config['model'][0]:
            print('Preparing text graph representation for Faster-RCNN model: ' + args.out_tf_graph, file=sys.stderr)
            createFasterRCNNGraph(args.model, args.config, args.out_tf_graph)
            args.config = args.out_tf_graph

    # Load names of classes
    classes = None
    if args.classes:
        with open(args.classes, 'rt') as f:
            classes = f.read().rstrip('\n').split('\n')

    # Load a network
    try:
        net = cv.dnn.readNet(args.model, args.config, args.framework)
        net.setPreferableBackend(args.backend)
        net.setPreferableTarget(args.target)
        outNames = net.getUnconnectedOutLayersNames()

        if not frame is None:
            frameHeight = frame.shape[0]
            frameWidth = frame.shape[1]
        
        # Create a 4D blob from a frame.
        inpWidth = frameWidth
        inpHeight = frameHeight
        blob = cv.dnn.blobFromImage(frame, size=(inpWidth, inpHeight), swapRB=args.rgb, ddepth=cv.CV_8U)

        # Run a model
        net.setInput(blob, scalefactor=args.scale)
        if net.getLayer(0).outputNameToIndex('im_info') != -1:  # Faster-RCNN or R-FCN
            frame = cv.resize(frame, (inpWidth, inpHeight))
            net.setInput(np.array([[inpHeight, inpWidth, 1.6]], dtype=np.float32), 'im_info')

        if is_async:
            futureOutputs.append(net.forwardAsync())
        else:
            outs = net.forward(outNames)
            boxes, confidences, classIds = postprocess(net, frame, outs)
        return boxes, confidences, classIds
    except Exception as e:
        raise e

    return [], [], []
示例#2
0
def func2(args):
    global outNames, config, classes, winName
    # If config specified, try to load it as TensorFlow Object Detection API's pipeline.
    config = readTextMessage(args.config)
    if 'model' in config:
        print('TensorFlow Object Detection API config detected',
              file=sys.stderr)
        if 'ssd' in config['model'][0]:
            print('Preparing text graph representation for SSD model: ' +
                  args.out_tf_graph,
                  file=sys.stderr)
            createSSDGraph(args.model, args.config, args.out_tf_graph)
            args.config = args.out_tf_graph
        elif 'faster_rcnn' in config['model'][0]:
            print(
                'Preparing text graph representation for Faster-RCNN model: ' +
                args.out_tf_graph,
                file=sys.stderr)
            createFasterRCNNGraph(args.model, args.config, args.out_tf_graph)
            args.config = args.out_tf_graph

    # Load names of classes
    classes = None
    if args.classes:
        with open(args.classes, 'rt') as f:
            classes = f.read().rstrip('\n').split('\n')

    # Load a network
    net = cv.dnn.readNet(args.model, args.config, args.framework)
    net.setPreferableBackend(args.backend)
    net.setPreferableTarget(args.target)
    outNames = net.getUnconnectedOutLayersNames()

    # Process inputs
    if args.motion_tracker:
        winName = 'Deep learning object detection in OpenCV'
        cv.namedWindow(winName, cv.WINDOW_NORMAL)
示例#3
0
parser.add_argument('--async', type=int, default=0,
                    help='Number of asynchronous forwards at the same time. '
                         'Choose 0 for synchronous mode')
args, _ = parser.parse_known_args()
add_preproc_args(args.zoo, parser, 'object_detection')
parser = argparse.ArgumentParser(parents=[parser],
                                 description='Use this script to run object detection deep learning networks using OpenCV.',
                                 formatter_class=argparse.ArgumentDefaultsHelpFormatter)
args = parser.parse_args()

args.model = findFile(args.model)
args.config = findFile(args.config)
args.classes = findFile(args.classes)

# If config specified, try to load it as TensorFlow Object Detection API's pipeline.
config = readTextMessage(args.config)
if 'model' in config:
    print('TensorFlow Object Detection API config detected')
    if 'ssd' in config['model'][0]:
        print('Preparing text graph representation for SSD model: ' + args.out_tf_graph)
        createSSDGraph(args.model, args.config, args.out_tf_graph)
        args.config = args.out_tf_graph
    elif 'faster_rcnn' in config['model'][0]:
        print('Preparing text graph representation for Faster-RCNN model: ' + args.out_tf_graph)
        createFasterRCNNGraph(args.model, args.config, args.out_tf_graph)
        args.config = args.out_tf_graph


# Load names of classes
classes = None
if args.classes:
示例#4
0
                         '%d: OpenCL, '
                         '%d: OpenCL fp16 (half-float precision), '
                         '%d: VPU' % targets)
args, _ = parser.parse_known_args()
add_preproc_args(args.zoo, parser, 'object_detection')
parser = argparse.ArgumentParser(parents=[parser],
                                 description='Use this script to run object detection deep learning networks using OpenCV.',
                                 formatter_class=argparse.ArgumentDefaultsHelpFormatter)
args = parser.parse_args()

args.model = findFile(args.model)
args.config = findFile(args.config)
args.classes = findFile(args.classes)

# If config specified, try to load it as TensorFlow Object Detection API's pipeline.
config = readTextMessage(args.config)
if 'model' in config:
    print('TensorFlow Object Detection API config detected')
    if 'ssd' in config['model'][0]:
        print('Preparing text graph representation for SSD model: ' + args.out_tf_graph)
        createSSDGraph(args.model, args.config, args.out_tf_graph)
        args.config = args.out_tf_graph
    elif 'faster_rcnn' in config['model'][0]:
        print('Preparing text graph representation for Faster-RCNN model: ' + args.out_tf_graph)
        createFasterRCNNGraph(args.model, args.config, args.out_tf_graph)
        args.config = args.out_tf_graph


# Load names of classes
classes = None
if args.classes: