|
@@ -395,6 +395,7 @@
|
|
|
"opt.temp_path = './tmp'\n",
|
|
|
"opt.Arc_path = './arcface_model/arcface_checkpoint.tar'\n",
|
|
|
"opt.isTrain = False\n",
|
|
|
+ "opt.use_mask = True ## new feature up-to-date\n",
|
|
|
"\n",
|
|
|
"crop_size = 224\n",
|
|
|
"\n",
|
|
@@ -402,29 +403,29 @@
|
|
|
"model = create_model(opt)\n",
|
|
|
"model.eval()\n",
|
|
|
"\n",
|
|
|
- "\n",
|
|
|
"app = Face_detect_crop(name='antelope', root='./insightface_func/models')\n",
|
|
|
"app.prepare(ctx_id= 0, det_thresh=0.6, det_size=(640,640))\n",
|
|
|
"\n",
|
|
|
- "pic_a = opt.pic_a_path\n",
|
|
|
- "# img_a = Image.open(pic_a).convert('RGB')\n",
|
|
|
- "img_a_whole = cv2.imread(pic_a)\n",
|
|
|
- "img_a_align_crop, _ = app.get(img_a_whole,crop_size)\n",
|
|
|
- "img_a_align_crop_pil = Image.fromarray(cv2.cvtColor(img_a_align_crop[0],cv2.COLOR_BGR2RGB)) \n",
|
|
|
- "img_a = transformer_Arcface(img_a_align_crop_pil)\n",
|
|
|
- "img_id = img_a.view(-1, img_a.shape[0], img_a.shape[1], img_a.shape[2])\n",
|
|
|
+ "with torch.no_grad():\n",
|
|
|
+ " pic_a = opt.pic_a_path\n",
|
|
|
+ " # img_a = Image.open(pic_a).convert('RGB')\n",
|
|
|
+ " img_a_whole = cv2.imread(pic_a)\n",
|
|
|
+ " img_a_align_crop, _ = app.get(img_a_whole,crop_size)\n",
|
|
|
+ " img_a_align_crop_pil = Image.fromarray(cv2.cvtColor(img_a_align_crop[0],cv2.COLOR_BGR2RGB)) \n",
|
|
|
+ " img_a = transformer_Arcface(img_a_align_crop_pil)\n",
|
|
|
+ " img_id = img_a.view(-1, img_a.shape[0], img_a.shape[1], img_a.shape[2])\n",
|
|
|
"\n",
|
|
|
- "# convert numpy to tensor\n",
|
|
|
- "img_id = img_id.cuda()\n",
|
|
|
+ " # convert numpy to tensor\n",
|
|
|
+ " img_id = img_id.cuda()\n",
|
|
|
"\n",
|
|
|
- "#create latent id\n",
|
|
|
- "img_id_downsample = F.interpolate(img_id, scale_factor=0.5)\n",
|
|
|
- "latend_id = model.netArc(img_id_downsample)\n",
|
|
|
- "latend_id = latend_id.detach().to('cpu')\n",
|
|
|
- "latend_id = latend_id/np.linalg.norm(latend_id,axis=1,keepdims=True)\n",
|
|
|
- "latend_id = latend_id.to('cuda')\n",
|
|
|
+ " #create latent id\n",
|
|
|
+ " img_id_downsample = F.interpolate(img_id, scale_factor=0.5)\n",
|
|
|
+ " latend_id = model.netArc(img_id_downsample)\n",
|
|
|
+ " latend_id = latend_id.detach().to('cpu')\n",
|
|
|
+ " latend_id = latend_id/np.linalg.norm(latend_id,axis=1,keepdims=True)\n",
|
|
|
+ " latend_id = latend_id.to('cuda')\n",
|
|
|
"\n",
|
|
|
- "video_swap(opt.video_path, latend_id, model, app, opt.output_path,temp_results_dir=opt.temp_path)"
|
|
|
+ " video_swap(opt.video_path, latend_id, model, app, opt.output_path, temp_results_dir=opt.temp_path, use_mask=opt.use_mask)"
|
|
|
],
|
|
|
"execution_count": 9,
|
|
|
"outputs": [
|