開始實驗前,請確保你的機器硬件達到要求。內存推薦8GB以上,如果低于4GB.....建議你升級一下配置再來做這個實驗。因為模型訓練的過程中需要依賴GPU,所以你的顯卡顯存至少得達到4GB,不然可能跑不動這個程序。
環境搭建
1.首先需要安裝的便是這個能讓你傻瓜式換臉的應用FakeApp了,點擊鏈接進入官網。安裝過程中并沒有什么值得特殊強調的地方,咱們一筆跳過。
2.接下來就是和GPU相關的CUDA8了,選擇相應的系統版本便可以下載安裝。在安裝方式這一步建議大家使用本地安裝exe[local]
的方式,exe[network]
的安裝方式....可能有點慢。默認情況下CUDA會自動幫你添加到環境變量,如果沒有,請手動添加,這一步非常重要。
至此,所有和環境相關的部署咱們已經大功告成了。
應用簡介
先簡單介紹一下FakeApp的三個模塊
GET DATASET
:獲取數據集,在這一步中,你的素材視頻將被逐幀切割成圖片,程序會自動識別并提取出圖片中人物的面部數據。
TRAIN
:訓練模型,根據第一步中生成的數據集,機器會自動地幫你訓練模型,從而進行面部的替換。
CREATE
:生成視頻,這一步便是整個實驗中最為神奇的地方,他能根據你訓練出的模型,將給定視頻素材中人物的面部進行替換,最后生成替換后的視頻。
開始實驗
1.第一步,生成數據集
先創建一個文件夾fake
,將素材視頻存放進去
咱們姑且用A和B來區分這兩個小姐姐好了,按照FakeApp的提示,將素材路徑填入,點擊EXTRACT,接下來無需任何操作,等程序跑完就行了。你會看到
fake
文件夾中多出了一個dataset-A
的目錄,這便是我們待會兒訓練模型時需要的數據集了。A的訓練集生成后,重復這一步驟,生成B的訓練集。至此,咱們第一步結束了。2.第二步,訓練模型
在這一步開始前,你需要在fake
文件中創建一個model
目錄,這里會存放模型文件。和之前一樣,依次填入文件夾路徑,下面的參數無需修改,使用默認配置即可。點擊TRAIN,等待程序初始化后,會彈出一個預覽框,這時,你幾乎可以高枕無憂了。剛開始你會發現預覽框最右側的一列會非常模糊,不要緊,模型才剛開始訓練。Loss A和Loss B代表模型的差異值,咱們無需關注數值產生的原理,你只需要知道,兩者之差越小,說明模型訓練的越好。
訓練模型是一個很耗時間的活兒,以我為例,每個數據集各350張左右的面部圖像,訓練了大概13個小時,差異值穩定在了0.1%左右。如果你想要更好的效果,建議每個數據集不低于500張,至于如何確定數據集的大小,可以看上面的示例圖A,圖中的360代表
dataset-A
的數據量。值得一提的是,訓練進度會被實時保存下來,也就是說你可以隨時暫停訓練,在預覽窗口中,輸入英文小寫字母q即可保存退出,下次想要繼續訓練的話,打開FakeApp再點擊TRAIN即可。
——-———————————分割線——-———————————
13個小時過去了,最右一列已經十分清晰了,效果也令人滿意,要不咱們先合成一個視頻試試?——-———————————分割線——-———————————
3.在model
中填入我們先前訓練好的模型路徑,Video
則填入你想要替換的視頻路徑,依舊是傻瓜式,點擊CREATE,稍安勿躁,讓GPU飛一會兒~程序跑完后,你應該就能在fake
文件中看到生成的swap.mp4
文件了,讓我們通過視頻截圖,看看效果如何。
總的來說效果還是令人滿意的,雖然看起來有點違和,但絕對可以以假亂真。好了,至此咱們的簡易教程就告一段落了,如果你有什么問題歡迎留言討論.