From ad5e0643340ae18a1d98a55f72c620ac534908da Mon Sep 17 00:00:00 2001 From: fakerdaker <52134018+Fakerdaker@users.noreply.github.com> Date: Mon, 22 Jul 2019 21:53:01 -0400 Subject: [PATCH] GPU check and pull from my branch --- DFL_Colab_Demo.ipynb | 641 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 641 insertions(+) create mode 100644 DFL_Colab_Demo.ipynb diff --git a/DFL_Colab_Demo.ipynb b/DFL_Colab_Demo.ipynb new file mode 100644 index 0000000..6fcd631 --- /dev/null +++ b/DFL_Colab_Demo.ipynb @@ -0,0 +1,641 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "DFL_Colab_Demo.ipynb", + "version": "0.3.2", + "provenance": [], + "collapsed_sections": [ + "tUNVcbujhm00", + "avAcSL_uvtq_" + ], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "accelerator": "GPU" + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0cKdTCuv4tXh", + "colab_type": "text" + }, + "source": [ + "# Welcome to DFL-Colab!\n", + "\n", + "This is an adapted version of the DFL for Google Colab.\n", + "\n", + "Version 2.5\n", + "\n", + "# Overview\n", + "* Extractor works in full functionality.\n", + "* Training can work without preview.\n", + "* Converter works in full functionality.\n", + "* You can import/export workspace with your Google Drive.\n", + "* Import/export and another manipulations with workspace you can do in \"Manage workspace\" block\n", + "* Google Colab machine active for 12 hours. DFL-Colab makes a backup of your workspace in training mode, after 11 hours from the start of the session.\n", + "* Google does not like long-term heavy calculations. Therefore, for training more than two sessions in a row, use two Google accounts. It is recommended to split your training over 2 accounts, but you can use one Google Drive account to store your workspace.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sCGDgPOghpED", + "colab_type": "text" + }, + "source": [ + "#Check GPU Model\n", + "Check if you got a T4 or K80 before cloning." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "fBIkIgtZo0EW", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Check GPU\n", + "!nvidia-smi" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JuVn21kt40Gw", + "colab_type": "text" + }, + "source": [ + "# Clone Github repository and install requirements\n", + "\n", + "* Clone Github repository or pull updates\n", + "* Requirements install is automatically" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "JG-f2WqT4fLK", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Clone or pull DeepFaceLab from Github\n", + "\n", + "Mode = \"clone\" #@param [\"clone\", \"pull\"]\n", + "\n", + "from pathlib import Path\n", + "if (Mode == \"clone\"):\n", + " #!git clone https://github.com/iperov/DeepFaceLab.git\n", + " !git clone --single-branch --branch test https://github.com/Fakerdaker/DeepFaceLab.git\n", + "else:\n", + " %cd /content/DeepFaceLab\n", + " !git pull\n", + "\n", + "!pip install -r /content/DeepFaceLab/requirements-colab.txt\n", + "!pip install --upgrade scikit-image\n", + "\n", + "if not Path(\"/content/workspace\").exists():\n", + " !wget -q --no-check-certificate -r 'https://docs.google.com/uc?export=download&id=1hTH2h6l_4kKrczA8EkN6GyuXx4lzmCnK' -O pretrain_CelebA.zip\n", + " !mkdir /content/pretrain\n", + " !unzip -q /content/pretrain_CelebA.zip -d /content/pretrain/\n", + " !rm /content/pretrain_CelebA.zip\n", + "\n", + "print(\"Done!\")" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hqwOlJG4MdLC", + "colab_type": "text" + }, + "source": [ + "#Manage workspace\n", + "\n", + "\n", + "\n", + "* You can import/export workspace or individual data, like model files with Google Drive\n", + "* Also, you can use HFS (HTTP Fileserver) for directly import/export you workspace from your computer\n", + "* You can clear all workspace or delete part of it\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "z4w_sUzgOQmL", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Import from Drive\n", + "\n", + "Mode = \"workspace\" #@param [\"workspace\", \"data_src\", \"data_dst\", \"data_src aligned\", \"data_dst aligned\", \"models\"]\n", + "Archive_name = \"workspace.zip\" #@param {type:\"string\"}\n", + "Subfolder = \"\" #@param {type:\"string\"}\n", + "\n", + "#Mount Google Drive as folder\n", + "from google.colab import drive\n", + "drive.mount('/content/drive', force_remount=True)\n", + "\n", + "if Subfolder != \"\":\n", + " Subfolder += \"/\"\n", + "def zip_and_copy(path, mode):\n", + " \n", + " unzip_cmd=\" -q \"+Archive_name\n", + " %cd $path\n", + " copy_cmd = \"/content/drive/My\\ Drive/\"+Subfolder+Archive_name+\" \"+path\n", + " !cp $copy_cmd\n", + " !unzip $unzip_cmd \n", + " !rm $Archive_name\n", + "\n", + "if Mode == \"workspace\":\n", + " zip_and_copy(\"/content\", \"workspace\")\n", + "elif Mode == \"data_src\":\n", + " zip_and_copy(\"/content/workspace\", \"data_src\")\n", + "elif Mode == \"data_dst\":\n", + " zip_and_copy(\"/content/workspace\", \"data_dst\")\n", + "elif Mode == \"data_src aligned\":\n", + " zip_and_copy(\"/content/workspace/data_src\", \"aligned\")\n", + "elif Mode == \"data_dst aligned\":\n", + " zip_and_copy(\"/content/workspace/data_dst\", \"aligned\")\n", + "elif Mode == \"models\":\n", + " zip_and_copy(\"/content/workspace\", \"model\")\n", + " \n", + "print(\"Done!\")\n", + "\n" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "0Y3WfuwoNXqC", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Export to Drive { form-width: \"30%\" }\n", + "Mode = \"workspace\" #@param [\"workspace\", \"data_src\", \"data_dst\", \"data_src aligned\", \"data_dst aligned\", \"merged\", \"models\",\"history\"]\n", + "Archive_name = \"workspace.zip\" #@param {type:\"string\"}\n", + "Exclude_Previews = True #@param {type:\"boolean\"}\n", + "\n", + "#Mount Google Drive as folder\n", + "from google.colab import drive\n", + "drive.mount('/content/drive', force_remount=True)\n", + "\n", + "def zip_and_copy(path, mode, exclude = False):\n", + " zip_cmd=\"-r -q \"+Archive_name+\" \"\n", + "\n", + " %cd $path\n", + " zip_cmd+=mode\n", + " !zip $zip_cmd\n", + " copy_cmd = \" \"+Archive_name+\" /content/drive/My\\ Drive/\"\n", + " !cp $copy_cmd\n", + " !rm $Archive_name\n", + "\n", + "if Mode == \"workspace\":\n", + " zip_and_copy(\"/content\", \"workspace\")\n", + "elif Mode == \"data_src\":\n", + " zip_and_copy(\"/content/workspace\", \"data_src\")\n", + "elif Mode == \"data_dst\":\n", + " zip_and_copy(\"/content/workspace\", \"data_dst\")\n", + "elif Mode == \"data_src aligned\":\n", + " zip_and_copy(\"/content/workspace/data_src\", \"aligned\")\n", + "elif Mode == \"data_dst aligned\":\n", + " zip_and_copy(\"/content/workspace/data_dst\", \"aligned\")\n", + "elif Mode == \"merged\":\n", + " zip_and_copy(\"/content/workspace/data_dst\", \"merged\")\n", + "elif Mode == \"models\":\n", + " if Exclude_Previews == False:\n", + " zip_and_copy(\"/content/workspace\", \"model\")\n", + " else:\n", + " zip_and_copy(\"/content/workspace\", \"model -x \\\"model/SAE_history/*\\\"\")\n", + "elif Mode == \"history\":\n", + " zip_and_copy(\"/content/workspace/model\",\"SAE_history\")\n", + " \n", + "print(\"Done!\")\n", + "\n" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "0hIvJtxwTGcb", + "colab_type": "code", + "colab": {} + }, + "source": [ + "#@title Import from URL{ form-width: \"30%\", display-mode: \"form\" }\n", + "URL = \"http://\" #@param {type:\"string\"}\n", + "Mode = \"unzip to content\" #@param [\"unzip to content\", \"unzip to content/workspace\", \"unzip to content/workspace/data_src\", \"unzip to content/workspace/data_src/aligned\", \"unzip to content/workspace/data_dst\", \"unzip to content/workspace/data_dst/aligned\", \"unzip to content/workspace/model\", \"download to content/workspace\"]\n", + "\n", + "import urllib\n", + "from pathlib import Path\n", + "\n", + "def unzip(zip_path, dest_path):\n", + "\n", + " \n", + " unzip_cmd = \" unzip -q \" + zip_path + \" -d \"+dest_path\n", + " !$unzip_cmd \n", + " rm_cmd = \"rm \"+dest_path + url_path.name\n", + " !$rm_cmd\n", + " print(\"Unziped!\")\n", + " \n", + "\n", + "if Mode == \"unzip to content\":\n", + " dest_path = \"/content/\"\n", + "elif Mode == \"unzip to content/workspace\":\n", + " dest_path = \"/content/workspace/\"\n", + "elif Mode == \"unzip to content/workspace/data_src\":\n", + " dest_path = \"/content/workspace/data_src/\"\n", + "elif Mode == \"unzip to content/workspace/data_src/aligned\":\n", + " dest_path = \"/content/workspace/data_src/aligned/\"\n", + "elif Mode == \"unzip to content/workspace/data_dst\":\n", + " dest_path = \"/content/workspace/data_dst/\"\n", + "elif Mode == \"unzip to content/workspace/data_dst/aligned\":\n", + " dest_path = \"/content/workspace/data_dst/aligned/\"\n", + "elif Mode == \"unzip to content/workspace/model\":\n", + " dest_path = \"/content/workspace/model/\"\n", + "elif Mode == \"download to content/workspace\":\n", + " dest_path = \"/content/workspace/\"\n", + "\n", + "if not Path(\"/content/workspace\").exists():\n", + " cmd = \"mkdir /content/workspace; mkdir /content/workspace/data_src; mkdir /content/workspace/data_src/aligned; mkdir /content/workspace/data_dst; mkdir /content/workspace/data_dst/aligned; mkdir /content/workspace/model\"\n", + " !$cmd\n", + "\n", + "url_path = Path(URL)\n", + "urllib.request.urlretrieve ( URL, dest_path + url_path.name )\n", + "\n", + "if (url_path.suffix == \".zip\") and (Mode!=\"download to content/workspace\"):\n", + " unzip(dest_path + url_path.name, dest_path)\n", + "\n", + " \n", + "print(\"Done!\")" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "7V1sc7rxNKLO", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Export to URL\n", + "URL = \"http://\" #@param {type:\"string\"}\n", + "Mode = \"upload workspace\" #@param [\"upload workspace\", \"upload data_src\", \"upload data_dst\", \"upload data_src aligned\", \"upload data_dst aligned\", \"upload merged\", \"upload model\"]\n", + "\n", + "cmd_zip = \"zip -r -q \"\n", + "\n", + "def run_cmd(zip_path, curl_url):\n", + " cmd_zip = \"zip -r -q \"+zip_path\n", + " cmd_curl = \"curl --silent -F \"+curl_url+\" -D out.txt > /dev/null\"\n", + " !$cmd_zip\n", + " !$cmd_curl\n", + "\n", + "\n", + "if Mode == \"upload workspace\":\n", + " %cd \"/content\"\n", + " run_cmd(\"workspace.zip workspace/\",\"'data=@/content/workspace.zip' \"+URL)\n", + "elif Mode == \"upload data_src\":\n", + " %cd \"/content/workspace\"\n", + " run_cmd(\"data_src.zip data_src/\", \"'data=@/content/workspace/data_src.zip' \"+URL)\n", + "elif Mode == \"upload data_dst\":\n", + " %cd \"/content/workspace\"\n", + " run_cmd(\"data_dst.zip data_dst/\", \"'data=@/content/workspace/data_dst.zip' \"+URL)\n", + "elif Mode == \"upload data_src aligned\":\n", + " %cd \"/content/workspace\"\n", + " run_cmd(\"data_src_aligned.zip data_src/aligned\", \"'data=@/content/workspace/data_src_aligned.zip' \"+URL )\n", + "elif Mode == \"upload data_dst aligned\":\n", + " %cd \"/content/workspace\"\n", + " run_cmd(\"data_dst_aligned.zip data_dst/aligned/\", \"'data=@/content/workspace/data_dst_aligned.zip' \"+URL)\n", + "elif Mode == \"upload merged\":\n", + " %cd \"/content/workspace/data_dst\"\n", + " run_cmd(\"merged.zip merged/\",\"'data=@/content/workspace/data_dst/merged.zip' \"+URL )\n", + "elif Mode == \"upload model\":\n", + " %cd \"/content/workspace\"\n", + " run_cmd(\"model.zip model/\", \"'data=@/content/workspace/model.zip' \"+URL)\n", + " \n", + " \n", + "!rm *.zip\n", + "\n", + "%cd \"/content\"\n", + "print(\"Done!\")" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Ta6ue_UGMkki", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Delete and recreate\n", + "Mode = \"Delete model history\" #@param [\"Delete and recreate workspace\", \"Delete models\", \"Delete data_src\", \"Delete data_src aligned\", \"Delete data_src video\", \"Delete data_dst\", \"Delete data_dst aligned\", \"Delete merged frames\", \"Delete model history\"]\n", + "\n", + "%cd \"/content\" \n", + "\n", + "if Mode == \"Delete and recreate workspace\":\n", + " cmd = \"rm -r /content/workspace ; mkdir /content/workspace; mkdir /content/workspace/data_src; mkdir /content/workspace/data_src/aligned; mkdir /content/workspace/data_dst; mkdir /content/workspace/data_dst/aligned; mkdir /content/workspace/model\" \n", + "elif Mode == \"Delete models\":\n", + " cmd = \"rm -r /content/workspace/model/*\"\n", + "elif Mode == \"Delete data_src\":\n", + " cmd = \"rm /content/workspace/data_src/*.png || rm -r /content/workspace/data_src/*.jpg\"\n", + "elif Mode == \"Delete data_src aligned\":\n", + " cmd = \"rm -r /content/workspace/data_src/aligned/*\"\n", + "elif Mode == \"Delete data_src video\":\n", + " cmd = \"rm -r /content/workspace/data_src.*\"\n", + "elif Mode == \"Delete data_dst\":\n", + " cmd = \"rm /content/workspace/data_dst/*.png || rm /content/workspace/data_dst/*.jpg\"\n", + "elif Mode == \"Delete data_dst aligned\":\n", + " cmd = \"rm -r /content/workspace/data_dst/aligned/*\"\n", + "elif Mode == \"Delete merged frames\":\n", + " cmd = \"rm -r /content/workspace/data_dst/merged\"\n", + "elif Mode == \"Delete model history\":\n", + " cmd = \"rm -r /content/workspace/model/SAE_history/*\"\n", + " \n", + "!$cmd\n", + "print(\"Done!\")" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tUNVcbujhm00", + "colab_type": "text" + }, + "source": [ + "# Extract and sorting\n", + "* Extract frames for SRC or DST video.\n", + "* Denoise SRC or DST video. \"Factor\" param set intesity of denoising\n", + "* Detect and align faces with one of detectors. (S3FD - recommended). If you need, you can get frames with debug landmarks.\n", + "* Export workspace to Google Drive after extract and sort it manually (Last block of Notebook)\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "qwJEbz5Nhot0", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Extract frames\n", + "Video = \"data_src\" #@param [\"data_src\", \"data_dst\"]\n", + "\n", + "%cd \"/content\"\n", + "\n", + "cmd = \"DeepFaceLab/main.py videoed extract-video\"\n", + "\n", + "if Video == \"data_dst\":\n", + " cmd+= \" --input-file workspace/data_dst.* --output-dir workspace/data_dst/\"\n", + "else:\n", + " cmd+= \" --input-file workspace/data_src.* --output-dir workspace/data_src/\"\n", + " \n", + "!python $cmd" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "bFmPo0s2lTil", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Denoise frames\n", + "Data = \"data_src\" #@param [\"data_src\", \"data_dst\"]\n", + "Factor = 1 #@param {type:\"slider\", min:1, max:20, step:1}\n", + "\n", + "cmd = \"DeepFaceLab/main.py videoed denoise-image-sequence --input-dir workspace/\"+Data+\" --factor \"+str(Factor)\n", + "\n", + "%cd \"/content\"\n", + "!python $cmd" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "nmq0Sj2bmq7d", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Detect faces\n", + "Data = \"data_src\" #@param [\"data_src\", \"data_dst\"]\n", + "Detector = \"S3FD\" #@param [\"S3FD\", \"MT\"]\n", + "Debug = False #@param {type:\"boolean\"}\n", + "\n", + "detect_type = \"s3fd\"\n", + "if Detector == \"S3FD\":\n", + " detect_type = \"s3fd\"\n", + "elif Detector == \"MT\":\n", + " detect_type = \"mt\"\n", + "\n", + "folder = \"workspace/\"+Data\n", + "folder_align = folder+\"/aligned\"\n", + "debug_folder = folder_align+\"/debug\"\n", + "\n", + "cmd = \"DeepFaceLab/main.py extract --input-dir \"+folder+\" --output-dir \"+folder_align\n", + "\n", + "if Debug:\n", + " cmd+= \" --debug-dir \"+debug_folder\n", + "\n", + "cmd+=\" --detector \"+detect_type\n", + " \n", + "%cd \"/content\"\n", + "!python $cmd" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "TRNxUFE6p6Eu", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Sort aligned\n", + "Data = \"data_src\" #@param [\"data_src\", \"data_dst\"]\n", + "sort_type = \"hist\" #@param [\"hist\", \"hist-dissim\", \"face-yaw\", \"face-pitch\", \"blur\", \"final\"]\n", + "\n", + "cmd = \"DeepFaceLab/main.py sort --input-dir workspace/\"+Data+\"/aligned --by \"+sort_type\n", + "\n", + "%cd \"/content\"\n", + "!python $cmd" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WTuyUxgdLA13", + "colab_type": "text" + }, + "source": [ + "# Train model\n", + "\n", + "* Choose your model type, but SAE is recommend for everyone\n", + "* Set model options on output field\n", + "* You can see preview manually, if go to model folder in filemanager and double click on preview.jpg file\n", + "* Your workspace will be archived and upload to mounted Drive after 11 hours from start session\n", + "* If you select \"Backup_every_hour\" option, your workspace will be backed up every hour.\n", + "* Also, you can export your workspace manually in \"Manage workspace\" block" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Z0Kya-PJLDhv", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Training\n", + "Model = \"SAE\" #@param [\"SAE\", \"H128\", \"LIAEF128\", \"DF\", \"DEV_FANSEG\", \"RecycleGAN\"]\n", + "Backup_every_hour = False #@param {type:\"boolean\"}\n", + "\n", + "%cd \"/content\"\n", + "\n", + "#Mount Google Drive as folder\n", + "from google.colab import drive\n", + "drive.mount('/content/drive')\n", + "\n", + "import psutil, os, time\n", + "\n", + "p = psutil.Process(os.getpid())\n", + "uptime = time.time() - p.create_time()\n", + "\n", + "if (Backup_every_hour):\n", + " if not os.path.exists('workspace.zip'):\n", + " print(\"Creating workspace archive ...\")\n", + " !zip -r -q workspace.zip workspace\n", + " print(\"Archive created!\")\n", + " else:\n", + " print(\"Archive exist!\")\n", + "\n", + "if (Backup_every_hour):\n", + " print(\"Time to end session: \"+str(round((43200-uptime)/3600))+\" hours\")\n", + " backup_time = str(3600)\n", + " backup_cmd = \" --execute-program -\"+backup_time+\" \\\"import os; os.system('zip -r -q workspace.zip workspace/model'); os.system('cp /content/workspace.zip /content/drive/My\\ Drive/'); print(' Backuped!') \\\"\" \n", + "elif (round(39600-uptime) > 0):\n", + " print(\"Time to backup: \"+str(round((39600-uptime)/3600))+\" hours\")\n", + " backup_time = str(round(39600-uptime))\n", + " backup_cmd = \" --execute-program \"+backup_time+\" \\\"import os; os.system('zip -r -q workspace.zip workspace'); os.system('cp /content/workspace.zip /content/drive/My\\ Drive/'); print(' Backuped!') \\\"\" \n", + "else:\n", + " print(\"Session expires in less than an hour.\")\n", + " backup_cmd = \"\"\n", + " \n", + "cmd = \"DeepFaceLab/main.py train --training-data-src-dir workspace/data_src/aligned --training-data-dst-dir workspace/data_dst/aligned --pretraining-data-dir pretrain/aligned --model-dir workspace/model --model \"+Model\n", + " \n", + "if (backup_cmd != \"\"):\n", + " train_cmd = (cmd+backup_cmd)\n", + "else:\n", + " train_cmd = (cmd)\n", + "\n", + "!python $train_cmd" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "avAcSL_uvtq_", + "colab_type": "text" + }, + "source": [ + "# Convert frames" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "A3Y8K22Sv9Gn", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Convert\n", + "Model = \"SAE\" #@param [\"SAE\", \"H128\", \"LIAEF128\", \"DF\", \"RecycleGAN\"]\n", + "\n", + "cmd = \"DeepFaceLab/main.py convert --input-dir workspace/data_dst --output-dir workspace/data_dst/merged --aligned-dir workspace/data_dst/aligned --model-dir workspace/model --model \"+Model\n", + "\n", + "%cd \"/content\"\n", + "!python $cmd" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "JNeGfiZpxlnz", + "colab_type": "code", + "cellView": "form", + "colab": {} + }, + "source": [ + "#@title Get result video and copy to Drive \n", + "\n", + "!python DeepFaceLab/main.py videoed video-from-sequence --input-dir workspace/data_dst/merged --output-file workspace/result.mp4 --reference-file workspace/data_dst.mp4\n", + "!cp /content/workspace/result.mp4 /content/drive/My\\ Drive/" + ], + "execution_count": 0, + "outputs": [] + } + ] +} \ No newline at end of file