我們是好萊塢藝術家!Deepfake原版軟件實測乾貨教程拿走

講Deepfake的公衆號文章那麼多,但無一不是拿着楊冪換朱茵、徐錦江換海王的老圖蹭熱度、炒作。作爲一個負責任的關注科技前沿的公衆號,我們怎麼能忍受這麼不清不楚的報道,小編找到了Deepfake的源頭:開源軟件Faceswap的項目網址和官方教程,帶着大家通過換臉來娛樂、通過娛樂來學習計算機視覺的相關知識!

從2018-2019年,DeepFake整整火了兩年。作爲合成小電影最受歡迎的素材,斯嘉麗.約翰遜也只能無奈的表示:有人要把我的臉,貼在其他人身上,也沒辦法阻止。繼BT種子之後,成人影片又大力扶持了一個高科技產業。是啊,地球上滿是血氣方剛的人類,很多時候,技術往往是需要需求推動的!

陌陌更是趁着這股東風推出了燒錢軟件ZAO,一時圈粉無數,只可惜槍打出頭鳥,隨後的隱私泄露事件直接將這款冉冉升起的新星打的一蹶不振。Facebook,Reddit各大社交論壇公司不僅集體轉變風向,還着手研發技術、舉辦比賽來約束Deepfake黑色產業。

 

Deepfake的前世今生

如我們開頭所說的,大衆熟知的Deepfake源於一項技術Faceswapping,據開發者表示,在2年前該技術剛剛問世的時候由於代碼零碎複雜,需要花費很多精力才能實現,因此在學術界以外被完全忽視了!直到某個大神將它集成單一的軟件平臺,使其成爲任何人都可以下載、運行和學習的AI代碼,這就是Deepfake。可以說它的問世改變了一切,讓更多的人蔘與了AI開發。對於開發人員而言,此代碼的發佈使其能夠借鑑其他人提出的想法,與各種熟練的編碼人員合作,從而不斷克服來自新技術的挑戰。
儘管開發人員一直遵循嚴格的道德標準。他們中的許多人甚至不使用它來創建視頻,只是修改代碼以查看其功能。
”可悲的是,媒體只專注於該軟件的不道德使用。不幸的是,這就是它首次向公衆公開的性質,但不能代表其創建的原因。我們現在的使用方式或未來的前景。像任何技術一樣,它可以永久使用或被濫用。我們的目的是開發FaceSwap,以便最大程度地減少其濫用的可能性,同時最大程度地提高其作爲學習,實驗的合法換臉工具的潛力。我們不是要詆譭名人或貶低任何人。我們是程序員,我們是工程師,我們是好萊塢VFX藝術家,我們是激進主義者,我們是業餘愛好者,我們是人類。爲此,我們認爲是時候就該軟件的含義和對我們開發人員而言不甚明確的問題發表標準了”。by FaceSwap開發者。

FaceSwap使用規則
FaceSwap不能用於創建不適當的內容。
FaceSwap不適用於未經同意或隱藏其使用目的而更改面孔。
FaceSwap並非出於任何非法,不道德或可疑目的。
FaceSwap的存在是爲了實驗和發現AI技術,用於社會或政治評論,電影以及各種符合道德的實驗。
FaceSwap使用指南:https://faceswap.dev/#content

安裝篇

FaceSwap是一個Python程序,它將在多種操作系統(包括Windows,Linux和MacOS)上運行。你需要具有CUDA支持的現代GPU,以實現最佳性能。部分支持AMD GPU(儘管FaceSwap具有基於CPU的配置環境,但總是會因爲內存不足而意外中斷)。

在windows安裝FaceSwap易如反掌,因爲開發者已經提供了GUI界面版本。安裝指南:

https://forum.faceswap.dev/viewtopic.php?f=4&t=20。

 

安裝完成後,您的桌面將會出現一個快捷方式,可以直接進入FacceSwap進行操作。在接下來的教程中,我們將以windows版本的FaceSwap爲例進行說明。至於Linux版本的安裝請參考以下鏈接:https://forum.faceswap.dev/viewtopic.php?f=4&t=68

 

提取篇

提取指南鏈接:https://forum.faceswap.dev/viewtopic.php?f=5&t=27
提取包括三個階段:檢測,對齊和遮罩生成。檢測是在框架中查找面部的過程,對齊是在面部中查找“地標”並一致地定向面部的過程。最終,遮罩生成將創建一個“遮罩”,該遮罩將識別最終面部圖像的哪些部分是面部,哪些是背景/障礙物。
提取有兩個主要目的:生成一組面部文件,以及可選的路線文件和蒙版,以訓練模型;

生成路線文件和遮罩以轉換最終幀。

雖然轉換時不需要提取的面部文件(僅需要路線文件),但是它們很有用,我們可以爲轉換過程過濾數據集。

點擊桌面圖標,看到下圖的界面,輸入準備提取人物面部的視頻地址和輸出文件地址,按指南選擇參數,點擊Extract即可直接進行提取!是不是很簡單!

 

訓練篇

訓練指南鏈接:https://forum.faceswap.dev/viewtopic.php?f=6&t=146
訓練是在教我們的神經網絡(neural network,NN)如何重建面孔。大多數模型主要由兩部分組成:
編碼器:這項工作是將人臉作爲輸入並將其“編碼”爲“矢量”的表示形式。要注意的是,它並不是在學習您輸入的每張臉的確切表示,而是在嘗試創建一種算法,該算法可用於以後儘可能地與輸入圖像最接近的臉;
解碼器:這項工作是獲取由編碼器創建的矢量,並嘗試將這種表示形式轉換回人臉,使其與輸入圖像儘可能地匹配。

 

 

某些模型的構造略有不同,但基本前提保持不變。
神經網絡需要知道它在編碼和解碼人臉方面做得如何。它使用2個主要工具來執行此操作:
損失:對於輸入模型的每批面孔,NN將查看嘗試通過當前的編碼和解碼算法重新創建的面孔,並將其與輸入的實際面孔進行比較。完成後,它將給自己一個分數(損失值)並相應地更新其權重;
權重:模型評估重現臉部的效果後,便會更新其權重。這些權重被輸入到編碼器/解碼器算法中。如果它在一個方向上調整了權重,但感覺到重建臉部的工作比以前做得差,那麼它就知道權重在錯誤的方向上移動,因此它將以另一種方式進行調整。如果感覺到它已經改善,那麼它將知道繼續沿前進方向調整權重。

 

然後,該模型多次重複執行此操作,並根據其損失值不斷更新其權重,理論上會隨着時間的推移而不斷改進,直到達到您認爲已學到足以有效地重建面部的程度,或者損失值停止下降爲止。

現在我們有了神經網絡的基本知識,以及它如何學習創建面孔,這對面孔交換有何作用?在上面的環節中,您可能已經注意到,該NN學習如何對一個人的面孔進行加載,然後重建這些面孔。這不是我們想要的……我們要承擔很多的面孔並重建別人的面孔。爲了實現這一目標,我們的NN做了兩件事:

共享編碼器:訓練模型時,我們將爲其提供2組面孔。A集(我們要替換的原始面孔)和B集(我們要放置在場景中的交換面孔)。實現此目的的第一步是共享A和B集的編碼器。這樣,我們的編碼器就可以爲2個不同的人學習單個算法。這一點非常重要,因爲我們最終將告訴我們的神經網絡採用一張臉的編碼並將其解碼爲另一張臉。因此,編碼器需要查看和學習我們交換所需的兩套面孔;

開關式解碼器:訓練模型時,我們訓練2個解碼器。解碼器A正在獲取編碼矢量並嘗試重新創建A的面孔。解碼器B正在獲取編碼矢量並嘗試重新創建B的面孔。當涉及到最終交換人臉時,我們切換了解碼器,因此我們將模型A的面孔反饋給了我們,但是將其傳遞給解碼器B。由於已經在兩組面孔上訓練了編碼器,因此模型將對輸入的A面孔進行編碼,然後嘗試從解碼器B重構它,從而從模型中輸出交換的面孔。

關於訓練過程的具體操作,請大家參考訓練指南依次操作即可。
整個訓練的過程和結果都是可以可視化的,下圖反映了可視化模型的當前狀態,這表明模型重新創建和交換面孔的能力。每次保存模型時都會更新。

知道模型是否訓練完成的最好辦法就是看預覽效果,一旦你對換臉效果滿意率,就可以停止訓練了!如下圖所示:第一列是輸入到模型中的臉,第二列是試圖重現該面孔的模型,第三列是試圖交換面孔的模型。

 

轉換篇

轉換指南還沒有出爐,大家可以關注該環節的論壇:

https://forum.faceswap.dev/viewforum.php?f=7

發佈了53 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章