Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Colab enhance #47

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 51 additions & 19 deletions SimSwap colab.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,7 @@
"outputId": "9691a7a4-192e-4ec2-c3c1-1f2c933d7b6a"
},
"source": [
"!pip install insightface==0.2.1 onnxruntime moviepy\n",
"!pip install googledrivedownloader\n",
"!pip install imageio==2.4.1"
"!pip install insightface==0.2.1 onnxruntime imageio==2.4.1"
],
"execution_count": 3,
"outputs": [
Expand Down Expand Up @@ -224,13 +222,9 @@
"outputId": "e93c3f98-01df-458e-b791-c32f7343e705"
},
"source": [
"from google_drive_downloader import GoogleDriveDownloader\n",
"\n",
"### it seems that google drive link may not be permenant, you can find this ID from our open url.\n",
"# GoogleDriveDownloader.download_file_from_google_drive(file_id='1TLNdIufzwesDbyr_nVTR7Zrx9oRHLM_N',\n",
"# dest_path='./arcface_model/arcface_checkpoint.tar')\n",
"# GoogleDriveDownloader.download_file_from_google_drive(file_id='1PXkRiBUYbu1xWpQyDEJvGKeqqUFthJcI',\n",
"# dest_path='./checkpoints.zip')\n",
"# !mkdir arcface_model && gdown --id 1TLNdIufzwesDbyr_nVTR7Zrx9oRHLM_N -O ./arcface_model/arcface_checkpoint.tar\n",
"# !gdown --id 1PXkRiBUYbu1xWpQyDEJvGKeqqUFthJcI -O checkpoints.zip\n",
"\n",
"!wget -P ./arcface_model https://github.com/neuralchen/SimSwap/releases/download/1.0/arcface_checkpoint.tar\n",
"!wget https://github.com/neuralchen/SimSwap/releases/download/1.0/checkpoints.zip\n",
Expand Down Expand Up @@ -278,7 +272,7 @@
"### open url(can be found at [our repo]/doc/guidance/preparation.md) and copy the assigned download link here.\n",
"### many thanks to woctezuma for this very useful help\n",
"!wget --no-check-certificate \"https://sh23tw.dm.files.1drv.com/y4mmGiIkNVigkSwOKDcV3nwMJulRGhbtHdkheehR5TArc52UjudUYNXAEvKCii2O5LAmzGCGK6IfleocxuDeoKxDZkNzDRSt4ZUlEt8GlSOpCXAFEkBwaZimtWGDRbpIGpb_pz9Nq5jATBQpezBS6G_UtspWTkgrXHHxhviV2nWy8APPx134zOZrUIbkSF6xnsqzs3uZ_SEX_m9Rey0ykpx9w\" -O antelope.zip\n",
"!unzip ./antelope.zip -d ./insightface_func/models/\n"
"!unzip ./antelope.zip -d ./insightface_func/models/"
],
"execution_count": 6,
"outputs": [
Expand Down Expand Up @@ -326,16 +320,14 @@
"source": [
"import cv2\n",
"import torch\n",
"import fractions\n",
"import numpy as np\n",
"from PIL import Image\n",
"import torch.nn.functional as F\n",
"from torchvision import transforms\n",
"from models.models import create_model\n",
"from options.test_options import TestOptions\n",
"from insightface_func.face_detect_crop_multi import Face_detect_crop\n",
"from util.videoswap import video_swap\n",
"from util.add_watermark import watermark_image"
"from util.videoswap import video_swap"
],
"execution_count": 7,
"outputs": [
Expand All @@ -352,6 +344,26 @@
}
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import HTML\n",
"from base64 import b64encode\n",
"\n",
"\n",
"def show_mp4(filename, width=720):\n",
" mp4 = open(filename, 'rb').read()\n",
" data_url = \"data:video/mp4;base64,\" + b64encode(mp4).decode()\n",
" display(HTML(\"\"\"\n",
" <video width=\"%d\" controls autoplay loop>\n",
" <source src=\"%s\" type=\"video/mp4\">\n",
" </video>\n",
" \"\"\" % (width, data_url)))"
]
},
{
"cell_type": "code",
"metadata": {
Expand All @@ -360,7 +372,7 @@
"source": [
"transformer = transforms.Compose([\n",
" transforms.ToTensor(),\n",
" #transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])\n",
" # transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])\n",
" ])\n",
"\n",
"transformer_Arcface = transforms.Compose([\n",
Expand Down Expand Up @@ -388,10 +400,10 @@
"source": [
"opt = TestOptions()\n",
"opt.initialize()\n",
"opt.parser.add_argument('-f') ## dummy arg to avoid bug\n",
"opt.parser.add_argument('-f') # dummy arg to avoid bug\n",
"opt = opt.parse()\n",
"opt.pic_a_path = './demo_file/Iron_man.jpg' ## or replace it with image from your own google drive\n",
"opt.video_path = './demo_file/multi_people_1080p.mp4' ## or replace it with video from your own google drive\n",
"opt.pic_a_path = './demo_file/Iron_man.jpg' # or replace it with image from your own google drive\n",
"opt.video_path = './demo_file/multi_people_1080p.mp4' # or replace it with video from your own google drive\n",
"opt.output_path = './output/demo.mp4'\n",
"opt.temp_path = './tmp'\n",
"opt.Arc_path = './arcface_model/arcface_checkpoint.tar'\n",
Expand All @@ -405,7 +417,7 @@
"model.eval()\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",
"app.prepare(ctx_id=0, det_thresh=0.6, det_size=(640, 640))\n",
"\n",
"with torch.no_grad():\n",
" pic_a = opt.pic_a_path\n",
Expand Down Expand Up @@ -566,12 +578,32 @@
}
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"show_mp4(opt.video_path) # original video"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"img_a_align_crop_pil # swappable face"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Rty2GsyZZrI6"
},
"source": [],
"source": [
"show_mp4(opt.output_path) # processed video"
],
"execution_count": null,
"outputs": []
}
Expand Down