def main(): print(f"{datetime.datetime.now().isoformat()} start!", flush=True) args = parse_args() if args.category_num <= 0: raise SystemExit('ERROR: bad category_num (%d)!' % args.category_num) if not os.path.isfile('yolo/%s.trt' % args.model): raise SystemExit('ERROR: file (yolo/%s.trt) not found!' % args.model) cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') cls_dict = get_cls_dict(args.category_num) yolo_dim = args.model.split('-')[-1] if 'x' in yolo_dim: dim_split = yolo_dim.split('x') if len(dim_split) != 2: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) w, h = int(dim_split[0]), int(dim_split[1]) else: h = w = int(yolo_dim) if h % 32 != 0 or w % 32 != 0: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) trt_yolo = TrtYOLO(args.model, (h, w), args.category_num) # open_window( # WINDOW_NAME, 'Camera TensorRT YOLO Demo', # cam.img_width, cam.img_height) vis = BBoxVisualization(cls_dict) loop_and_detect(cam, trt_yolo, conf_th=0.3, vis=vis) cam.release()
def main(): args = parse_args() cam = Camera(args) cam.open() if not cam.is_opened: sys.exit('Failed to open camera!') trt_ssd = TrtSSD(args.model) cam.start() # initialize bot logger.info('initialize robot') robot = Robot() logger.info('starting to loop and detect') loop_and_detect(cam=cam, trt_ssd=trt_ssd, conf_th=0.3, robot=robot, model=args.model) logger.info('cleaning up') robot.stop() cam.stop() cam.release()
def main(): args = parse_args() cam = Camera(args) cam.open() # import pdb # pdb.set_trace() if not cam.is_opened: sys.exit('[INFO] Failed to open camera!') cls_dict = get_cls_dict('coco') yolo_dim = int(args.model.split('-')[-1]) # 416 or 608 trt_yolov3 = TrtYOLOv3(args.model, (yolo_dim, yolo_dim)) print('[INFO] Camera: starting') cam.start() open_window(WINDOW_NAME, args.image_width, args.image_height, 'TensorRT YOLOv3 Detector') vis = BBoxVisualization(cls_dict) loop_and_detect(cam, args.runtime, trt_yolov3, conf_th=0.3, vis=vis, window_name=WINDOW_NAME) print('[INFO] Program: stopped') cam.stop() cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() if args.category_num <= 0: raise SystemExit('ERROR: bad category_num (%d)!' % args.category_num) if not os.path.isfile('yolo/%s.trt' % args.model): raise SystemExit('ERROR: file (yolo/%s.trt) not found!' % args.model) cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') cls_dict = get_cls_dict(args.category_num) yolo_dim = args.model.split('-')[-1] if 'x' in yolo_dim: dim_split = yolo_dim.split('x') if len(dim_split) != 2: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) w, h = int(dim_split[0]), int(dim_split[1]) else: h = w = int(yolo_dim) if h % 32 != 0 or w % 32 != 0: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) trt_yolo = TrtYOLO(args.model, (h, w), args.category_num) open_window(WINDOW_NAME, 'Camera TensorRT YOLO Demo', 640, 480) vis = BBoxVisualization(cls_dict) loop_and_detect(cam, trt_yolo, conf_th=0.3, vis=vis) cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() if args.category_num <= 0: raise SystemExit('ERROR: bad category_num (%d)!' % args.category_num) if not os.path.isfile('yolo/%s.trt' % args.model): raise SystemExit('ERROR: file (yolo/%s.trt) not found!' % args.model) cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') cls_dict = get_cls_dict(args.category_num) vis = BBoxVisualization(cls_dict) h, w = get_input_shape(args.model) trt_yolo = TrtYOLO(args.model, (h, w), args.category_num, args.letter_box) mjpeg_server = MjpegServer(port=args.mjpeg_port) print('MJPEG server started...') try: loop_and_detect(cam, trt_yolo, conf_th=0.3, vis=vis, mjpeg_server=mjpeg_server) except Exception as e: print(e) finally: mjpeg_server.shutdown() cam.release()
def main(): args = parse_args() if args.category_num <= 0: raise SystemExit('ERROR: bad category_num (%d)!' % args.category_num) if not os.path.isfile('yolo/%s.trt' % args.model): raise SystemExit('ERROR: file (yolo/%s.trt) not found!' % args.model) cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') cls_dict = get_cls_dict(args.category_num) vis = BBoxVisualization(cls_dict) h, w = get_input_shape(args.model) trt_yolo = TrtYOLO(args.model, (h, w), args.category_num, args.letter_box) open_window(WINDOW_NAME, 'Camera TensorRT YOLO Demo', cam.img_width, cam.img_height) msg_queue = Queue(maxsize=100) # msg_queue.put("0,0,0,-1".encode()) Thread(target=serArd, args=(msg_queue, )).start() loop_and_detect(cam, trt_yolo, msg_queue, conf_th=0.7, vis=vis) while True: pass cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() #YOLO INIT #cls_dict = get_cls_dict('coco') cls_dict = get_cls_dict('deepfamily') print("classes count : ", len(cls_dict)) yolo_dim = int(args.model.split('-')[-1]) # 416 or 608 print("yolo_dim : ", yolo_dim) trt_yolov3 = TrtYOLOv3(args.model, (yolo_dim, yolo_dim)) #CAMERA cam = Camera(args) cam.open() if not cam.is_opened: sys.exit('Failed to open camera!') cam.start() #CAM-WINDOW open_window(WINDOW_NAME, args.image_width, args.image_height, 'DEEPFAMILY PROJECT - TensorRT YOLOv3') vis = BBoxVisualization(cls_dict) #DETECT-LOOP loop_and_detect(cam, trt_yolov3, conf_th=0.95, vis=vis) #loop_and_detect(cam, trt_yolov3, conf_th=0.95) cam.stop() cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() cam = Camera(args) cam.open() if not cam.is_opened: sys.exit('Failed to open camera!') cls_dict = get_cls_dict('coco') yolo_dim = int(args.model.split('-')[-1]) # 416 or 608 trt_yolov3 = TrtYOLOv3(args.model, (yolo_dim, yolo_dim)) cam.start() # open_window(WINDOW_NAME, args.image_width, args.image_height, # 'Camera TensorRT YOLOv3 Demo') vis = BBoxVisualization(cls_dict) # for video # loop_and_detect(cam, trt_yolov3, conf_th=0.3, vis=vis) # for single file detect_demo(cam, trt_yolov3, conf_th=0.3, vis=vis) cam.stop() cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() cam = Camera(args) cam.open() if not cam.is_opened: sys.exit('Failed to open camera!') cls_dict = get_cls_dict(args.model) trt_ssd = TrtSSD(args.model, INPUT_HW) cam.start() if args.use_console: loop_and_detect_console(cam, trt_ssd, conf_th=0.3, loop=args.loop, cls_dict=cls_dict) else: open_window(WINDOW_NAME, args.image_width, args.image_height, 'Camera TensorRT SSD Demo for Jetson Nano') vis = BBoxVisualization(cls_dict) loop_and_detect(cam, trt_ssd, conf_th=0.3, vis=vis) cam.stop() cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() if args.category_num <= 0: raise SystemExit('Bad category_num: %d!' % args.category_num) cam = Camera(args) cam.open() if not cam.is_opened: sys.exit('Failed to open camera!') cls_dict = get_cls_dict(args.category_num) yolo_dim = int(args.model.split('-')[-1]) if yolo_dim not in (288, 416, 608): raise SystemExit('Bad yolo_dim: %d!\nPlease make sure the model file name contains the correct dimension...' % yolo_dim) trt_yolov3 = TrtYOLOv3(args.model, (yolo_dim, yolo_dim), args.category_num) cam.start() open_window(WINDOW_NAME, args.image_width, args.image_height, 'Camera TensorRT YOLOv3 Demo') vis = BBoxVisualization(cls_dict) loop_and_detect(cam, trt_yolov3, conf_th=0.3, vis=vis) cam.stop() cam.release() cv2.destroyAllWindows()
def main(): logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # Ask tensorflow logger not to propagate logs to parent (which causes # duplicated logging) logging.getLogger('tensorflow').propagate = False global args args = parse_args() logger.info('called with args: %s' % args) # build the class (index/name) dictionary from labelmap file logger.info('reading label map') cls_dict = read_label_map(args.labelmap_file) pb_path = './data/{}_trt.pb'.format(args.model) log_path = './logs/{}_trt'.format(args.model) if args.do_build: logger.info('building TRT graph and saving to pb: %s' % pb_path) build_trt_pb(args.model, pb_path) logger.info('opening camera device/file') cam = Camera(args) cam.open() if not cam.is_opened: sys.exit('Failed to open camera!') logger.info('loading TRT graph from pb: %s' % pb_path) trt_graph = load_trt_pb(pb_path) logger.info('starting up TensorFlow session') tf_config = tf.ConfigProto() tf_config.gpu_options.allow_growth = True #tf_sess = tf.Session(config=tf_config, graph=trt_graph) -- Vincent #Solve : "unable to satfisfy explicit device /dev/CPU:0 -- Vincent tf_sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True), graph=trt_graph) if args.do_tensorboard: logger.info('writing graph summary to TensorBoard') write_graph_tensorboard(tf_sess, log_path) logger.info('warming up the TRT graph with a dummy image') od_type = 'faster_rcnn' if 'faster_rcnn' in args.model else 'ssd' dummy_img = np.zeros((720, 1280, 3), dtype=np.uint8) _, _, _ = detect(dummy_img, tf_sess, conf_th=.3, od_type=od_type) cam.start() # ask the camera to start grabbing images # grab image and do object detection (until stopped by user) logger.info('starting to loop and detect') vis = BBoxVisualization(cls_dict) open_display_window(cam.img_height, cam.img_width) result = loop_and_detect(cam, tf_sess, args.conf_th, vis, od_type=od_type) logger.info('cleaning up') cam.stop() # terminate the sub-thread in camera tf_sess.close() cam.release() cv2.destroyAllWindows()
def yolo_detection(): # dev = cuda.Device(0) # ctx = dev.make_context() args = parse_args() print(args) """ config assert """ if args.category_num <= 0: raise SystemExit('ERROR: bad category_num (%d)!' % args.category_num) if not os.path.isfile('yolo/darknet/%s.trt' % args.model): raise SystemExit('ERROR: file (yolo/darknet/%s.trt) not found!' % args.model) cls_dict = get_cls_dict(args.category_num) yolo_dim = args.model.split('-')[-1] if 'x' in yolo_dim: dim_split = yolo_dim.split('x') if len(dim_split) != 2: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) w, h = int(dim_split[0]), int(dim_split[1]) else: h = w = int(yolo_dim) if h % 32 != 0 or w % 32 != 0: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) """ capture the image """ cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') """ deploy the yolo model """ trt_yolo = TrtYOLO(args.model, (h, w), args.category_num) # open_window( # WINDOW_NAME, 'Camera TensorRT YOLO Demo', # cam.img_width, cam.img_height) """ detect the insulator using model """ vis = BBoxVisualization(cls_dict) loop_and_detect(cam, trt_yolo, conf_th=0.3, vis=vis) """ release the image """ cam.release()
def main(): args = parse_args() if args.category_num <= 0: raise SystemExit(f'ERROR: bad category_num ({args.category_num})!') if not os.path.isfile(args.model): raise SystemExit(f'ERROR: file {args.model} not found!') # Process valid coco json file process_valid_json(args.valid_coco) if args.write_images: if not os.path.exists(args.image_output): os.mkdir(args.image_output) # Create camera for video/image input cam = Camera(args) if not cam.get_is_opened(): raise SystemExit('ERROR: failed to open camera!') class_dict = get_cls_dict(args.category_num) yolo_dim = (args.model.replace(".trt", "")).split('-')[-1] if 'x' in yolo_dim: dim_split = yolo_dim.split('x') if len(dim_split) != 2: raise SystemExit(f'ERROR: bad yolo_dim ({yolo_dim})!') w, h = int(dim_split[0]), int(dim_split[1]) else: h = w = int(yolo_dim) if h % 32 != 0 or w % 32 != 0: raise SystemExit(f'ERROR: bad yolo_dim ({yolo_dim})!') # Create yolo trt_yolo = TrtYOLO(args.model, (h, w), args.category_num) if args.activate_display: open_window(WINDOW_NAME, 'Camera TensorRT YOLO Demo', cam.img_width, cam.img_height) visual = BBoxVisualization(class_dict) # Run detection loop_and_detect(cam, trt_yolo, args, confidence_thresh=args.confidence_threshold, visual=visual) # Clean up cam.release() if args.activate_display: cv2.destroyAllWindows()
def main(): args = parse_args() cam = Camera(args) if not cam.get_is_opened(): raise SystemExit('ERROR: failed to open camera!') mtcnn = TrtMtcnn() open_window( WINDOW_NAME, 'Camera TensorRT MTCNN Demo for Jetson Nano', cam.img_width, cam.img_height) loop_and_detect(cam, mtcnn, args.minsize) cam.release() cv2.destroyAllWindows()
def main(): # Parse arguments and get input args = parse_args() cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') # Create NN1 and NN2 models and load into memory cls_dict = get_cls_dict(args.model.split('_')[-1]) trt_ssd = TrtSSD(args.model, INPUT_HW) mtcnn = TrtMtcnn() # Create Preview Window open_window(WINDOW_NAME, 'Camera Preview', cam.img_width, cam.img_height) vis = BBoxVisualization(cls_dict) # Enter Detection Mode while True: # Get Image img = cam.read() out.write(img) nn1_results = [] # Run Neural Networks img, nn1_results, nn2_results, nn3_results = loop_and_detect( img, mtcnn, args.minsize, trt_ssd, conf_th=0.3, vis=vis) # Communicate to Arduino if (nn1_results != []): img = robot_drive(img, nn1_results) else: serial_port.write("N".encode()) print("N") # Display and save output cv2.imshow(WINDOW_NAME, img) outNN.write(img) # User/Keyboard Input key = cv2.waitKey(1) if key == ord('q'): out.release() outNN.release() break # Clean up and exit cam.release() cv2.destroyAllWindows() serial_port.close()
def main(): args = parse_args() cam = Camera(args) if not cam.get_is_opened(): raise SystemExit('ERROR: failed to open camera!') cls_dict = get_cls_dict(args.model.split('_')[-1]) trt_ssd = TrtSSD(args.model, INPUT_HW) open_window(WINDOW_NAME, 'Camera TensorRT SSD Demo', cam.img_width, cam.img_height) vis = BBoxVisualization(cls_dict) loop_and_detect(cam, trt_ssd, conf_th=0.3, vis=vis) cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() labels = np.loadtxt('googlenet/synset_words.txt', str, delimiter='\t') cam = Camera(args) if not cam.get_is_opened(): raise SystemExit('ERROR: failed to open camera!') # initialize the tensorrt googlenet engine net = PyTrtGooglenet(DEPLOY_ENGINE, ENGINE_SHAPE0, ENGINE_SHAPE1) open_window(WINDOW_NAME, 'Camera TensorRT GoogLeNet Demo', cam.img_width, cam.img_height) loop_and_classify(cam, net, labels, args.crop_center) cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() labels = np.loadtxt('googlenet/synset_words.txt', str, delimiter='\t') cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') open_window(WINDOW_NAME, 'Camera TensorRT GoogLeNet Demo', cam.img_width, cam.img_height) condition = threading.Condition() trt_thread = TrtGooglenetThread(condition, cam, labels, args.crop_center) trt_thread.start() # start the child thread loop_and_display(condition) trt_thread.stop() # stop the child thread cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() cam = Camera(args) cam.open() if not cam.is_opened: sys.exit('Failed to open camera!') mtcnn = TrtMtcnn() cam.start() open_window(WINDOW_NAME, width=640, height=480, title='MTCNN Window') detect_faces(cam, mtcnn) cam.stop() cam.release() cv2.destroyAllWindows() del mtcnn
def main(): args = parse_args() cam = Camera(args) cam.open() if not cam.is_opened: sys.exit('Failed to open camera!') mtcnn = TrtMtcnn() cam.start() open_window(WINDOW_NAME, args.image_width, args.image_height, 'Camera TensorRT MTCNN Demo for Jetson TX2') loop_and_detect(cam, mtcnn, args.minsize) cam.stop() cam.release() cv2.destroyAllWindows() del (mtcnn)
def main(): args = parse_args() labels = np.loadtxt('googlenet/synset_words.txt', str, delimiter='\t') cam = Camera(args) cam.open() if not cam.is_opened: sys.exit('Failed to open camera!') cam.start() # let camera start grabbing frames open_window(WINDOW_NAME, args.image_width, args.image_height, 'Camera TensorRT GoogLeNet Demo for Jetson Nano') condition = threading.Condition() trt_thread = TrtGooglenetThread(condition, cam, labels, args.crop_center) trt_thread.start() # start the child thread loop_and_display(condition) trt_thread.stop() # stop the child thread cam.stop() cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() if args.category_num <= 0: raise SystemExit('ERROR: bad category_num (%d)!' % args.category_num) if not os.path.isfile('yolo/%s.trt' % args.model): raise SystemExit('ERROR: file (yolo/%s.trt) not found!' % args.model) client = init_mqtt(args.host, args.port) cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') cls_dict = get_cls_dict(args.category_num) print("cls_dict:", cls_dict) #print(cls_dict[3]) yolo_dim = args.model.split('-')[-1] print("yolo_dim:", yolo_dim) if 'x' in yolo_dim: dim_split = yolo_dim.split('x') if len(dim_split) != 2: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) w, h = int(dim_split[0]), int(dim_split[1]) else: h = w = int(yolo_dim) print('w:{0}, h:{1}'.format(w, h)) if h % 32 != 0 or w % 32 != 0: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) trt_yolo = TrtYOLO(args.model, (h, w), args.category_num, args.letter_box) open_window(WINDOW_NAME, 'Camera TensorRT YOLO Demo', cam.img_width, cam.img_height) vis = BBoxVisualization(cls_dict) loop_and_detect(cam, trt_yolo, conf_th=0.3, vis=vis, \ cls_dict=cls_dict, client=client, topic=args.topic) cam.release() cv2.destroyAllWindows() client.disclose()
def main(): args = parse_args() cam = Camera(args) if not cam.get_is_opened(): raise SystemExit('ERROR: failed to open camera!') cuda.init() # init pycuda driver cls_dict = get_cls_dict(args.model.split('_')[-1]) open_window(WINDOW_NAME, 'Camera TensorRT SSD Demo', cam.img_width, cam.img_height) vis = BBoxVisualization(cls_dict) condition = threading.Condition() trt_thread = TrtThread(condition, cam, args.model, conf_th=0.3) trt_thread.start() # start the child thread loop_and_display(condition, vis) trt_thread.stop() # stop the child thread cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() if args.category_num <= 0: raise SystemExit('ERROR: bad category_num (%d)!' % args.category_num) if not os.path.isfile('yolo/%s.trt' % args.model): raise SystemExit('ERROR: file (yolo/%s.trt) not found!' % args.model) cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') cls_dict = get_cls_dict(args.category_num) vis = BBoxVisualization(cls_dict) trt_yolo = TrtYOLO(args.model, args.category_num, args.letter_box) open_window(WINDOW_NAME, 'Camera TensorRT YOLO Demo', cam.img_width, cam.img_height) loop_and_detect(cam, trt_yolo, conf_th=0.3, vis=vis) cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() cam = Camera(args) is_open = up() #time.sleep(60) if is_open: cam.open() if not cam.is_opened: sys.exit('Failed to open camera!') cls_dict = get_cls_dict(args.model.split('_')[-1]) trt_ssd = TrtSSD(args.model, INPUT_HW) cam.start() open_window(WINDOW_NAME, args.image_width, args.image_height, 'Camera TensorRT SSD Demo for Jetson Nano') vis = BBoxVisualization(cls_dict) loop_and_detect(cam, trt_ssd, conf_th=0.9, vis=vis) cam.stop() cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() if args.category_num <= 0: raise SystemExit('ERROR: bad category_num (%d)!' % args.category_num) if not os.path.isfile('yolo/%s.trt' % args.model): raise SystemExit('ERROR: file (yolo/%s.trt) not found!' % args.model) cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') cls_dict = get_cls_dict(args.category_num) yolo_dim = args.model.split('-')[-1] if 'x' in yolo_dim: dim_split = yolo_dim.split('x') if len(dim_split) != 2: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) w, h = int(dim_split[0]), int(dim_split[1]) else: h = w = int(yolo_dim) if h % 32 != 0 or w % 32 != 0: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) trt_yolo = TrtYOLO(args.model, (h, w), args.category_num) vis = BBoxVisualization(cls_dict) mjpeg_server = MjpegServer(port=args.mjpeg_port) print('MJPEG server started...') try: loop_and_detect(cam, trt_yolo, conf_th=0.3, vis=vis, mjpeg_server=mjpeg_server) except Exception as e: print(e) finally: mjpeg_server.shutdown() cam.release()
def main(): args = parse_args() if not os.path.isfile('retinaface/%s.trt' % args.model): raise SystemExit('ERROR: file (retinaface/%s.trt) not found!' % args.model) cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') cfg = cfg_mnet input_size = args.model.split('-')[-1] input_shape = (int(input_size), int(input_size)) priorbox = PriorBox(cfg, input_shape) priors = priorbox.forward() trt_retinaface = TRT_RetinaFace(args.model, input_shape) open_window( WINDOW_NAME, 'Camera TensorRT Face Detection Demo', cam.img_width, cam.img_height) loop_and_detect(cam, trt_retinaface, priors, cfg) cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() if args.category_num <= 0: raise SystemExit('ERROR: bad category_num (%d)!' % args.category_num) if not os.path.isfile('yolo/%s.trt' % args.model): raise SystemExit('ERROR: file (yolo/%s.trt) not found!' % args.model) cam = Camera(args) if not cam.isOpened(): raise SystemExit('ERROR: failed to open camera!') cls_dict = get_cls_dict(args.category_num) yolo_dim = args.model.split('-')[-1] if 'x' in yolo_dim: dim_split = yolo_dim.split('x') if len(dim_split) != 2: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) w, h = int(dim_split[0]), int(dim_split[1]) else: h = w = int(yolo_dim) if h % 32 != 0 or w % 32 != 0: raise SystemExit('ERROR: bad yolo_dim (%s)!' % yolo_dim) load_weight_start = time.time() trt_yolo = TrtYOLO(args.model, (h, w), args.category_num) load_weights_time = datetime.timedelta(seconds=time.time() - load_weight_start) print('Load weights Time: %s' % (load_weights_time)) open_window(WINDOW_NAME, 'Camera TensorRT YOLO Demo', cam.img_width, cam.img_height) vis = BBoxVisualization(cls_dict) loop_and_detect(cam, trt_yolo, conf_th=0.3, vis=vis) reporter = MemReporter() reporter.report() cam.release() cv2.destroyAllWindows()
def main(): args = parse_args() cam = Camera(args) cam.open() if not cam.is_opened: sys.exit('Failed to open camera!') cls_dict = get_cls_dict(args.model.split('_')[-1]) cuda.init() # init pycuda driver cam.start() # let camera start grabbing frames open_window(WINDOW_NAME, args.image_width, args.image_height, 'Camera TensorRT SSD Demo for Jetson Nano') vis = BBoxVisualization(cls_dict) condition = threading.Condition() trt_thread = TrtThread(condition, cam, args.model, conf_th=0.3) trt_thread.start() # start the child thread loop_and_display(condition, vis) trt_thread.stop() # stop the child thread cam.stop() cam.release() cv2.destroyAllWindows()
def loop_and_detect(cam, tf_sess, conf_th, vis, od_type): """Loop, grab images from camera, and do object detection. # Arguments cam: the camera object (video source). tf_sess: TensorFlow/TensorRT session to run SSD object detection. conf_th: confidence/score threshold for object detection. vis: for visualization. """ show_fps = True full_scrn = False fps = 0.0 tic = time.time() tracks = [] global rects, ct, temp, args frame_buff = 0 none_buff = 0 restart_flag = False backup_label = None while True: #if cv2.getWindowProperty(WINDOW_NAME, 0) < 0: # Check to see if the user has closed the display window. # If yes, terminate the while loop. # break if (restart_flag == True): cam = Camera(args) cam.open() cam.start() #pb_path = './data/{}_trt.pb'.format(args.model) #log_path = './logs/{}_trt'.format(args.model) #trt_graph = load_trt_pb(pb_path) #tf_config = tf.ConfigProto() #tf_config.gpu_options.allow_growth = True #tf_sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True,log_device_placement=True),graph=trt_graph) #od_type = 'faster_rcnn' if 'faster_rcnn' in args.model else 'ssd' dummy_img = np.zeros((720, 1280, 3), dtype=np.uint8) _, _, _ = detect(dummy_img, tf_sess, conf_th=.3, od_type=od_type) restart_flag = False rects = [] img = cam.read() optical_flow_image = img if img is not None: box, conf, cls = detect(img, tf_sess, conf_th, od_type=od_type) img = vis.draw_bboxes(img, box, conf, cls) objects = ct.update(rects) cv2.rectangle(img, (0, 980), (1920, 1075), (0, 0, 0), -1) for (objectID, centroid) in objects.items(): # draw both the ID of the object and the centroid of the # object on the output frame text = "ID {}".format(objectID) cv2.putText(img, text, (centroid[0] - 10, centroid[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 255), 2) cv2.circle(img, (centroid[0], centroid[1]), 4, (255, 0, 255), -1) backup_label = str(objectID) cv2.putText(img, backup_label, (330, 1035), cv2.FONT_HERSHEY_TRIPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA) sys_clock = str( datetime.datetime.now()) + " Frame_buff=" + str(frame_buff) print(sys_clock) cv2.putText(img, sys_clock, (20, 950), cv2.FONT_HERSHEY_TRIPLEX, 1, (0, 0, 255), 2, cv2.LINE_AA) cv2.putText(img, "Traffic Counter: ", (20, 1035), cv2.FONT_HERSHEY_TRIPLEX, 1, (0, 0, 255), 2, cv2.LINE_AA) cv2.putText(img, "Detector Type: Human", (400, 1035), cv2.FONT_HERSHEY_TRIPLEX, 1, (0, 0, 255), 2, cv2.LINE_AA) cv2.putText(img, "Real Time Optical Trace :", (900, 1035), cv2.FONT_HERSHEY_TRIPLEX, 1, (0, 0, 255), 2, cv2.LINE_AA) cv2.putText(img, "OFF", (1380, 1035), cv2.FONT_HERSHEY_TRIPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA) """ if(frame_buff == 2000): print("[SYSTEM] VSTARCAMERA Restart") cam.stop() # terminate the sub-thread in camera #tf_sess.close() #tf.reset_default_graph() #tf.contrib.keras.backend.clear_session() cam.release() restart_flag = True frame_buff = 0 img = None cv2.destroyAllWindows() frame_buff += 1 """ if (restart_flag == False): if show_fps: img = draw_help_and_fps(img, fps) #set_full_screen(full_scrn) cv2.moveWindow(WINDOW_NAME, 0, 0) cv2.imshow(WINDOW_NAME, img) toc = time.time() curr_fps = 1.0 / (toc - tic) # calculate an exponentially decaying average of fps number fps = curr_fps if fps == 0.0 else (fps * 0.9 + curr_fps * 0.1) tic = toc else: print("None Image --> None Buff = {}".format(none_buff)) none_buff += 1 if (none_buff == 500): print("[SYSTEM] VSTARCAMERA Restart") cam.stop() # terminate the sub-thread in camera #tf_sess.close() #tf.reset_default_graph() #tf.contrib.keras.backend.clear_session() cam.release() restart_flag = True none_buff = 0 img = None cv2.destroyAllWindows() if (restart_flag == False): key = cv2.waitKey(1) if key == 27: # ESC key: quit program break elif key == ord('H') or key == ord('h'): # Toggle help/fps show_fps = not show_fps elif key == ord('F') or key == ord('f'): # Toggle fullscreen full_scrn = not full_scrn set_full_screen(full_scrn)