def register(): try: if app.unused_port: port = app.unused_port.pop() else: return register_response( status=afy_flask_register_status.QUOTA_EXCEEDED, error="Quota Exceeded") in_addr = app.base_address + ":" + str(port) out_addr = app.base_address + ":" + str(port + 1) sps = shlex.split( f'./run.sh --is-worker --in-port {port} --out-port {port+1} --no-vcam' ) ps = Popen(sps) time.sleep(2) try: predictor_args = { 'config_path': app.opt.config, 'checkpoint_path': app.opt.checkpoint, 'relative': app.opt.relative, 'adapt_movement_scale': app.opt.adapt_scale, 'enc_downscale': app.opt.enc_downscale } predictor = predictor_remote.PredictorRemote(in_addr=in_addr, out_addr=out_addr, **predictor_args) except ConnectionError as err: if app.verbose: traceback.print_exc() return register_response( status=afy_flask_register_status.CONNECTION_ERROR, error=str(err)) while True: token = generate_token() if token not in app.processes: break app.processes[token] = {} app.processes[token]['port'] = port app.processes[token]['ps'] = ps app.processes[token]['predictor'] = predictor return register_response(status=afy_flask_register_status.SUCCESS, token=token) except Exception as e: if app.verbose: traceback.print_exc() return register_response(error=str(e))
predictor_args = { 'config_path': opt.config, 'checkpoint_path': opt.checkpoint, 'relative': opt.relative, 'adapt_movement_scale': opt.adapt_scale, 'enc_downscale': opt.enc_downscale } if opt.is_worker: from afy import predictor_worker predictor_worker.run_worker(opt.in_port, opt.out_port) sys.exit(0) elif opt.is_client: from afy import predictor_remote try: predictor = predictor_remote.PredictorRemote(in_addr=opt.in_addr, out_addr=opt.out_addr, **predictor_args) except ConnectionError as err: log(err) sys.exit(1) predictor.start() else: from afy import predictor_local predictor = predictor_local.PredictorLocal(**predictor_args) cam_id = select_camera(config) if cam_id is None: exit(1) cap = VideoCaptureAsync(cam_id)
log('Loading Predictor') predictor_args = { 'config_path': opt.config, 'checkpoint_path': opt.checkpoint, 'relative': opt.relative, 'adapt_movement_scale': opt.adapt_scale, 'enc_downscale': opt.enc_downscale } if opt.is_worker: from afy import predictor_worker predictor_worker.run_worker(opt.worker_port) sys.exit(0) elif opt.worker_host: from afy import predictor_remote predictor = predictor_remote.PredictorRemote( worker_host=opt.worker_host, worker_port=opt.worker_port, **predictor_args) else: from afy import predictor_local predictor = predictor_local.PredictorLocal(**predictor_args) avatars = [] images_list = sorted(glob.glob(f'{opt.avatars}/*')) for i, f in enumerate(images_list): if f.endswith('.jpg') or f.endswith('.jpeg') or f.endswith('.png'): key = len(avatars) + 1 log(f'Key {key}: {f}') img = cv2.imread(f) if img.ndim == 2: img = np.tile(img[..., None], [1, 1, 3]) img = img[..., :3][..., ::-1]