diff --git a/SimSwap colab.ipynb b/SimSwap colab.ipynb index 5b07fa28..6df70c1e 100644 --- a/SimSwap colab.ipynb +++ b/SimSwap colab.ipynb @@ -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": [ @@ -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", @@ -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": [ @@ -326,7 +320,6 @@ "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", @@ -334,8 +327,7 @@ "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": [ @@ -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", + " \n", + " \"\"\" % (width, data_url)))" + ] + }, { "cell_type": "code", "metadata": { @@ -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", @@ -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", @@ -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", @@ -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": [] }