def recognize_from_image(): # prepare input data src_img = cv2.imread(args.input) img256, _, scale, pad = but.resize_pad(src_img[:, :, ::-1]) input_data = img256.astype('float32') / 255. input_data = np.expand_dims(np.moveaxis(input_data, -1, 0), 0) # net initialize env_id = ailia.get_gpu_environment_id() print(f'env_id: {env_id}') net = ailia.Net(MODEL_PATH, WEIGHT_PATH, env_id=env_id) # inference print('Start inference...') if args.benchmark: print('BENCHMARK mode') for _ in range(5): start = int(round(time.time() * 1000)) preds = net.predict([input_data]) normalized_detections = but.postprocess(preds)[0] detections = but.denormalize_detections(normalized_detections, scale, pad) end = int(round(time.time() * 1000)) print(f'\tailia processing time {end - start} ms') else: preds = net.predict([input_data]) normalized_detections = but.postprocess(preds)[0] detections = but.denormalize_detections(normalized_detections, scale, pad) # postprocessing display_result(src_img, detections) cv2.imwrite(args.savepath, src_img) print('Script finished successfully.')
def recognize_from_image(): # net initialize if args.onnx: import onnxruntime net = onnxruntime.InferenceSession(WEIGHT_PATH) else: net = ailia.Net(MODEL_PATH, WEIGHT_PATH, env_id=args.env_id) # input image loop for image_path in args.input: # prepare input data logger.info(image_path) src_img = cv2.imread(image_path) img256, _, scale, pad = but.resize_pad(src_img[:, :, ::-1],IMAGE_WIDTH) input_data = img256.astype('float32') / 255. input_data = np.expand_dims(np.moveaxis(input_data, -1, 0), 0) if not CHANNEL_FIRST: input_data = input_data.transpose((0,2,3,1)) # inference logger.info('Start inference...') if args.benchmark: logger.info('BENCHMARK mode') for _ in range(5): start = int(round(time.time() * 1000)) preds = net.predict([input_data]) normalized_detections = but.postprocess(preds,anchor_path=ANCHOR_PATH,resolution=IMAGE_WIDTH)[0] detections = but.denormalize_detections( normalized_detections, scale, pad, resolution=IMAGE_WIDTH ) end = int(round(time.time() * 1000)) logger.info(f'\tailia processing time {end - start} ms') else: if args.onnx: input_name = net.get_inputs()[0].name preds = net.run(None, {input_name: input_data.astype(np.float32)}) else: preds = net.predict([input_data]) normalized_detections = but.postprocess(preds, anchor_path=ANCHOR_PATH,resolution=IMAGE_WIDTH)[0] detections = but.denormalize_detections( normalized_detections, scale, pad, resolution=IMAGE_WIDTH ) # postprocessing display_result(src_img, detections) savepath = get_savepath(args.savepath, image_path) logger.info(f'saved at : {savepath}') cv2.imwrite(savepath, src_img) logger.info('Script finished successfully.')
def recognize_from_video(): # net initialize net = ailia.Net(MODEL_PATH, WEIGHT_PATH, env_id=args.env_id) capture = webcamera_utils.get_capture(args.video) # create video writer if savepath is specified as video format if args.savepath != SAVE_IMAGE_PATH: f_h = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)) f_w = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)) writer = get_writer(args.savepath, f_h, f_w) else: writer = None while(True): ret, frame = capture.read() if (cv2.waitKey(1) & 0xFF == ord('q')) or not ret: break img256, _, scale, pad = but.resize_pad(frame[:, :, ::-1], resolution=IMAGE_WIDTH) input_data = img256.astype('float32') / 255. input_data = np.expand_dims(np.moveaxis(input_data, -1, 0), 0) if not CHANNEL_FIRST: input_data = input_data.transpose((0,2,3,1)) # inference preds = net.predict([input_data]) normalized_detections = but.postprocess(preds, anchor_path=ANCHOR_PATH, resolution=IMAGE_WIDTH)[0] detections = but.denormalize_detections( normalized_detections, scale, pad, resolution=IMAGE_WIDTH ) # postprocessing display_result(frame, detections) visual_img = frame if args.video == '0': # Flip horizontally if camera visual_img = np.ascontiguousarray(frame[:,::-1,:]) cv2.imshow('frame', visual_img) # save results if writer is not None: writer.write(frame) capture.release() if writer is not None: writer.release() cv2.destroyAllWindows() if writer is not None: writer.release() logger.info('Script finished successfully.')
def recognize_from_image(): # net initialize net = ailia.Net(MODEL_PATH, WEIGHT_PATH, env_id=args.env_id) # input image loop for image_path in args.input: # prepare input data logger.info(image_path) src_img = cv2.imread(image_path) img256, _, scale, pad = but.resize_pad(src_img[:, :, ::-1]) input_data = img256.astype('float32') / 255. input_data = np.expand_dims(np.moveaxis(input_data, -1, 0), 0) # inference logger.info('Start inference...') if args.benchmark: logger.info('BENCHMARK mode') for _ in range(5): start = int(round(time.time() * 1000)) preds = net.predict([input_data]) normalized_detections = but.postprocess(preds)[0] detections = but.denormalize_detections( normalized_detections, scale, pad) end = int(round(time.time() * 1000)) logger.info(f'\tailia processing time {end - start} ms') else: preds = net.predict([input_data]) normalized_detections = but.postprocess(preds)[0] detections = but.denormalize_detections(normalized_detections, scale, pad) # postprocessing display_result(src_img, detections) savepath = get_savepath(args.savepath, image_path) logger.info(f'saved at : {savepath}') cv2.imwrite(savepath, src_img) logger.info('Script finished successfully.')
def recognize_from_video(): # net initialize env_id = ailia.get_gpu_environment_id() print(f'env_id: {env_id}') net = ailia.Net(MODEL_PATH, WEIGHT_PATH, env_id=env_id) capture = get_capture(args.video) # create video writer if savepath is specified as video format if args.savepath != SAVE_IMAGE_PATH: f_h = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)) f_w = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)) save_h, save_w = webcamera_utils.calc_adjust_fsize( f_h, f_w, IMAGE_HEIGHT, IMAGE_WIDTH) writer = webcamera_utils.get_writer(args.savepath, save_h, save_w) else: writer = None while (True): ret, frame = capture.read() if (cv2.waitKey(1) & 0xFF == ord('q')) or not ret: break img256, _, scale, pad = but.resize_pad(frame[:, :, ::-1]) input_data = img256.astype('float32') / 255. input_data = np.expand_dims(np.moveaxis(input_data, -1, 0), 0) # inference preds = net.predict([input_data]) normalized_detections = but.postprocess(preds)[0] detections = but.denormalize_detections(normalized_detections, scale, pad) # postprocessing display_result(frame, detections) cv2.imshow('frame', frame) # save results if writer is not None: writer.write(frame) capture.release() cv2.destroyAllWindows() print('Script finished successfully.') pass