DeepFake

      在〈DeepFake〉中尚無留言

DeepFake 演算法可以把任何影片中的人臉轉換成其它人臉。目前最受歡迎的軟体為 FaceSwap,此軟体屬開源程式碼,由 Python 調用 tkinter 視窗套件寫成,然後包裝成 .exe檔。

網路上說其逼真程度沒有任何人可以用肉眼辨別其真假。其實這只是唬爛的而以,要分辨其實還蠻容易的。比如辨識耳朵旁的眼鏡框,一會有、一會沒有,尤其是臉旁的頭髮,都是 faceswap 無法解決的問題。不過如果 A/B 兩影片選的好,還真的不易辨識真偽。

請注意以下名詞

A影片 : 待換影片 : Original
B影片 : 人臉素材 : Swap

A 影片裏的人臉等待著被更換成新人臉。那麼新的人臉在那兒呢? 全部由 B影片提供,所以我們稱 B 影片為 “素材影片”。

要製作讓人不太容易辨識的技巧:
1. 選擇不要有頭髮蓋住臉部或瀏海的影片。
2. 不要選擇有載眼鏡的人臉。

完成品展示

底下是本人訓練完成的成品展示。

原始影片-蔡尚樺 fake影片-南韓主播
原始影片-潘照文 fake影片-南韓主播

示範資料下載

底下是本專案所使用的原始資料,沒有顯卡的人可下載進行測試

==============================================================
第一組測試資料
影片A : video_1_1.mp4
影片B : video_1_2.mp4
抽取圖片1 : images_1_1.zip
抽取圖片2 : images_1_2.zip
完成模型 : models_1.zip
==============================================================
第二組測試資料
影片A : video_2_1.mp4
影片B : video_2_2.mp4
抽取圖片1 : images_2_1.zip
抽取圖片2 : images_2_2.zip
完成模型 : models_2.zip

影片下載

要置換影片中的人臉,當然是需要先下載二段影片,一段是原始影片(A),另一段是要置換的人臉影片(B),也就是說,把B影片中的人臉換到 A影片中。

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影片,分別放在 Video1及Video2目錄中。

線上下載

亦可到 https://y2mate.tools/en57b5/youtube-mp4 將youtube的影片網址貼上,即可進行下載。

影片切割

影片切割,可以使用 格式工廠 處理,或者使用 https://www.pkstep.com/archives/27067

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 選取抽出人臉後要存放的位置,
比如 Video1\images 及 Video2\images,然後按下Extract按鈕。

請注意,B 影片是人臉更換的素材,所以 B 影片的長度最好比 A 影片長,這樣就可以抽到更多的人臉素材。當要置換到 A 影片時就可以有更多的選擇,會讓置換後的影片更加完美。

訓練

切換到 Train分頁,Input A/Input B分別選取 video1\images及 video2\images目錄。
Model Dir 是將來訓練完成後模型要儲存的地方,在專案下新增一個空白的目錄 models 即可。

然後往下拉,會看到 Timelapse Input A/B,也是一樣選取 video1\images及 video2\images,Timelapse Output則在專案下建立一個空白目錄 output即可。

最後按下 Train 開始進行訓練,這個過程會花費相當久的時間。

以nVidia RTX3080Ti 顯卡,二分鐘1080p 的影片,訓練時間大概要花了115小時,所以請耐心等候。

匯出影片

接下來就要匯出影片了,匯出影片只需原來的 A 影片(1.mp4),1_alignments.fsa檔案,及 models 目錄。不需要 B 影片,也不需要任何抽取出的人臉圖片,因為這些資料都在 models 裏面。

請選擇 Convert 分頁,Input Dir 選擇 A 影片, Output Dir 選擇要匯出的目錄,Model Dir 選取模型目錄 models。Plugins 選擇 Match-Hist,Writer選擇 Ffmpeg,然後按下Convert按鈕。此動作蠻快的,幾秒鐘就完成。

開啟 video/output後,就可以看到匯出的影片了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *