DeepFake 演算法可以把任何影片中的人臉轉換成其它人臉。目前最受歡迎的軟体為 FaceSwap,此軟体屬開源程式碼,由 Python 調用 tkinter 視窗套件寫成,然後包裝成 .exe檔。
網路上說其逼真程度沒有任何人可以用肉眼辨別其真假。其實這只是唬爛的而以,要分辨其實還蠻容易的。比如辨識耳朵旁的眼鏡框,一會有、一會沒有,尤其是臉旁的頭髮,都是 faceswap 無法解決的問題。不過如果 A/B 兩影片選的好,還真的不易辨識真偽。
要置換影片中的人臉,當然是需要先下載二段影片,一段是原始影片(A),另一段是要置換的人臉影片(B),也就是說,把B影片中的人臉換到 A影片中。
A影片 : 待換影片 : Original
B影片 : 人臉素材 : Swap
A 影片裏的人臉等待著被更換成新人臉。那麼新的人臉在那兒呢? 全部由 B影片提供,所以我們稱 B 影片為 “素材影片”。
要製作讓人不太容易辨識的技巧:
1. 選擇不要有頭髮蓋住臉部或瀏海的影片。
2. 不要選擇有載眼鏡的人臉。
完成品展示
底下是本人訓練完成的成品展示。
原始影片-蔡尚樺 | fake影片-南韓主播 |
原始影片-潘照文 | fake影片-南韓主播 |
示範資料下載
底下是本專案所使用的原始資料,沒有顯卡的人可下載進行測試
第一組測試資料 : deepfake1.zip
第二組測試資料 : deepfake2.zip
Faceswap 步驟
Faceswap負責將影片中的人臉抽出,訓練,置換。這支程式是由 Python 去調用 tkinter 所寫成的,所以畫面蠻醜的,不過能用就好。
下載安裝
先到 https://github.com/deepfakes/faceswap/releases 下載 faceswap_setup_x64.exe
安裝時,請勾選 Setup for NVIDIA GPU。安裝後主程式的路徑在 C:\Users\登入者\faceswap目錄中。安裝時,會自動下載 miniconda及其他套件,所以需要花費一段蠻久的時間
抽取人臉
將 A, B二段影片的人臉抽取出來(Extract)
首先選取 Extract功能,Input Dir 選取影片,Output Dir 選取抽出人臉後要存放的位置,
比如 VideoA\images 及 VideoB\images,然後按下Extract按鈕。
請注意,B 影片是人臉更換的素材,所以 B 影片的長度最好比 A 影片長,這樣就可以抽到更多的人臉素材。當要置換到 A 影片時就可以有更多的選擇,會讓置換後的影片更加完美。
訓練
切換到 Train分頁,Input A/Input B分別選取 videoA\images及 videoB\images目錄。
Model Dir 是將來訓練完成後模型要儲存的地方,在專案下新增一個空白的目錄 models 即可。
然後往下拉,會看到 Timelapse Input A/B,也是一樣選取 videoA\images及 videoB\images,Timelapse Output則在專案下建立一個空白目錄 output即可。
最後按下 Train 開始進行訓練,這個過程會花費相當久的時間。
以nVidia RTX3080Ti 顯卡,二分鐘1080p 的影片,訓練時間大概要花了115小時,所以請耐心等候。
匯出影片
接下來就要匯出影片了,匯出影片只需原來的 A 影片(video_A.mp4),videoA_alignments.fsa檔案,及 models 目錄。不需要 B 影片,也不需要任何抽取出的人臉圖片,因為這些資料都在 models 裏面。
請選擇 Convert 分頁
Input Dir 選擇 A 影片,
Output Dir 選擇要匯出的目錄 : fakeout
Alignments 選取 VideoA 裏的 .fsa 檔
Model Dir 選取模型目錄 models。
Plugins 選擇 Match-Hist,
Writer選擇 Ffmpeg,
然後按下Convert按鈕。此動作蠻快的,幾秒鐘就完成。
開啟 fakeout 目錄,就可以看到匯出的影片了。
影片下載
YouTube 是尋找影片的最佳網址,但要如何下載 Youtube 影片呢 ? 請先到官網 ytdlp (YouTube DownLoad P-brench)下載 ytdlp-interface.zip,解開後執行 ytdlp-interface.exe 即可進行下載。官網文件說明,就算不是 Youtube 的影片也可下載。經本人確認, FaceBook 影片也沒問題。
ypdlp官網原文說明如下:
This is a Windows graphical interface for yt-dlp, that is designed as a simple YouTube
downloader. Since v1.2, the interface also accepts non-YouTube URLs, so theoretically it
can be used to download from any site that yt-dlp supports (see the list).
請將下載好的 A, B影片,分別放在 VideoA及VideoB目錄中。
線上下載
亦可到 https://y2mate.tools/en57b5/youtube-mp4 將youtube的影片網址貼上,即可進行下載。
影片切割
影片切割,可以使用 格式工廠 處理,或者使用 https://www.pkstep.com/archives/27067