def main(): """Prepares data for the antispoofing recognition demo""" parser = argparse.ArgumentParser(description='antispoofing recognition live demo script') parser.add_argument('--video', type=str, default=None, help='Input video') parser.add_argument('--cam_id', type=int, default=-1, help='Input cam') parser.add_argument('--config', type=str, default=None, required=False, help='Configuration file') parser.add_argument('--fd_model', type=str, required=True) parser.add_argument('--fd_thresh', type=float, default=0.6, help='Threshold for FD') parser.add_argument('--spoof_thresh', type=float, default=0.4, help='Threshold for predicting spoof/real. The lower the more model oriented on spoofs') parser.add_argument('--spf_model', type=str, default=None, help='path to .pth checkpoint of model or .xml IR OpenVINO model', required=True) parser.add_argument('--device', type=str, default='CPU') parser.add_argument('--GPU', type=int, default=0, help='specify which GPU to use') parser.add_argument('-l', '--cpu_extension', help='MKLDNN (CPU)-targeted custom layers.Absolute path to a shared library with the kernels ' 'impl.', type=str, default=None) parser.add_argument('--write_video', type=bool, default=False, help='if you set this arg to True, the video of the demo will be recoreded') args = parser.parse_args() device = args.device + f':{args.GPU}' if args.device == 'cuda' else 'cpu' write_video = args.write_video if args.cam_id >= 0: log.info('Reading from cam {}'.format(args.cam_id)) cap = cv.VideoCapture(args.cam_id) cap.set(cv.CAP_PROP_FRAME_WIDTH, 1280) cap.set(cv.CAP_PROP_FRAME_HEIGHT, 720) cap.set(cv.CAP_PROP_FOURCC, cv.VideoWriter_fourcc(*'MJPG')) else: assert args.video log.info('Reading from {}'.format(args.video)) cap = cv.VideoCapture(args.video) cap.set(cv.CAP_PROP_FOURCC, cv.VideoWriter_fourcc(*'MJPG')) assert cap.isOpened() face_detector = FaceDetector(args.fd_model, args.fd_thresh, args.device, args.cpu_extension) if args.spf_model.endswith('pth.tar'): if not args.config: raise ValueError('You should pass config file to work with a Pytorch model') config = utils.read_py_config(args.config) spoof_model = utils.build_model(config, args, strict=True, mode='eval') spoof_model = TorchCNN(spoof_model, args.spf_model, config, device=device) else: assert args.spf_model.endswith('.xml') spoof_model = VectorCNN(args.spf_model) # running demo run(args, cap, face_detector, spoof_model, write_video)
def main(): """Prepares data for the accuracy convertation checker""" parser = argparse.ArgumentParser(description='antispoofing recognition live demo script') parser.add_argument('--config', type=str, default=None, required=True, help='Configuration file') parser.add_argument('--spf_model_openvino', type=str, default=None, help='path to .xml IR OpenVINO model', required=True) parser.add_argument('--spf_model_torch', type=str, default=None, help='path to .pth.tar checkpoint', required=True) parser.add_argument('--device', type=str, default='CPU') args = parser.parse_args() config = utils.read_py_config(args.config) assert args.spf_model_openvino.endswith('.xml') and args.spf_model_torch.endswith('.pth.tar') spoof_model_torch = utils.build_model(config, args.device.lower(), strict=True, mode='eval') spoof_model_torch = TorchCNN(spoof_model_torch, args.spf_model_torch, config, device=args.device.lower()) spoof_model_openvino = VectorCNN(args.spf_model_openvino) # running checker avg_diff = run(spoof_model_torch, spoof_model_openvino) print((f'mean difference on the first predicted class : {avg_diff[0]}\n' + f'mean difference on the second predicted class : {avg_diff[1]}'))