DeepFaceLab: A simple, flexible and extensible face swapping framework 一个简单、灵活和可扩展的人脸交换框架
DeepFaceLab: A simple, flexible and extensible face swapping framework
一個(gè)簡單、靈活和可擴(kuò)展的人臉交換框架
文章目錄
- DeepFaceLab: A simple, flexible and extensible face swapping framework
- 一個(gè)簡單、靈活和可擴(kuò)展的人臉交換框架
- 前言
- 核心
- 提取(Extraction)
- 人臉定位:人臉檢測提取的第一步是在給定的文件夾中找到目標(biāo)人臉:src和dst。DFL使用S3FD [34]作為其默認(rèn)人臉檢測器。顯然,你可以為你指定的目標(biāo)選擇任何其他的人臉檢測算法來代替S3FD,即視網(wǎng)膜人臉[5],MTCNN [33]。
- 人臉對齊:DFL提供了兩種典型的面部標(biāo)志提取算法來解決“能夠隨著時(shí)間的推移保持穩(wěn)定”的人臉標(biāo)志算法問題:(A)基于熱圖的面部標(biāo)志算法2DFAN [2](對于具有正常姿勢的面部)和(b)具有3D面部先驗(yàn)信息的PRNet [6](對于具有大歐拉角(偏航、俯仰、滾動(dòng))的面部,例如具有大偏航角的面部,意味著面部的一側(cè)看不見)。
- 人臉分割:人臉分割階段采用了人臉分割網(wǎng)絡(luò)TernausNet,來分割出頭發(fā)、眼鏡、手部這些可能會(huì)對人臉的變換有影響的點(diǎn)。最后生成一個(gè)人臉區(qū)域的mask,用于決定最后的生成部分。
- 訓(xùn)練(Training)
- 轉(zhuǎn)換(Conversion)
- 項(xiàng)目實(shí)踐
- Step 1:
- 1.安裝方法:
- 2.目錄簡介:
- Step 2:
- 項(xiàng)目開始
- 1.提取圖像(EXTRACT IMAGES)
- step1:doc(2):extract images from video data_src
- 從視頻數(shù)據(jù)src中提取圖像 每幀按照png圖像處理
- step2: doc(3):extract images from video data_dst FULL FPS
- 從視頻數(shù)據(jù)dst 中提取圖像 每幀按照png圖像處理
- 2.提取面部設(shè)置(EXTRACT FACESETS)
- 3.提取后查看人臉集
- 4.訓(xùn)練(TRAINING)
- 5.合并(MERGING)
- Step 3:項(xiàng)目總結(jié)
- 項(xiàng)目進(jìn)行過程中遇到的問題
- 問題解決
- 資料索引
- 個(gè)人感悟
前言
本次工作室項(xiàng)目考核,本小組選題為DeepFaceLab: A simple, flexible and extensible face swapping framework
經(jīng)過對論文的簡單的進(jìn)行結(jié)構(gòu)性分析并且查閱相關(guān)資料對該項(xiàng)目進(jìn)行復(fù)現(xiàn)。通過更加深入的了解,DeepFaceLab(本文此后均簡寫為DFL)
是GitHub上一個(gè)很火熱的換臉開源項(xiàng)目,首先我們將進(jìn)行對論文中描述的工作原理進(jìn)行介紹。
【注:本次項(xiàng)目所有代碼、軟件等資源均來自 https://github.com/iperov/ DeepFaceLab/】。
核心
換臉,即訓(xùn)練模型要從src中的人臉換到dst目標(biāo)人臉上
提取(Extraction)
提取是人臉識(shí)別的第一步,它包含很多算法和處理部分,即人臉檢測、人臉對齊和人臉分割。在提取過程之后,用戶將從您的輸入數(shù)據(jù)文件夾中獲得具有精確遮罩和面部標(biāo)志的對齊的面部,src在此用于說明。另外,由于DFL提供了多種人臉類型(即半臉、全臉、全臉),代表了提取的人臉覆蓋區(qū)域。除非另有說明,否則默認(rèn)取全臉。
人臉定位:人臉檢測提取的第一步是在給定的文件夾中找到目標(biāo)人臉:src和dst。DFL使用S3FD [34]作為其默認(rèn)人臉檢測器。顯然,你可以為你指定的目標(biāo)選擇任何其他的人臉檢測算法來代替S3FD,即視網(wǎng)膜人臉[5],MTCNN [33]。
人臉對齊:DFL提供了兩種典型的面部標(biāo)志提取算法來解決“能夠隨著時(shí)間的推移保持穩(wěn)定”的人臉標(biāo)志算法問題:(A)基于熱圖的面部標(biāo)志算法2DFAN 2和(b)具有3D面部先驗(yàn)信息的PRNet 6。
人臉分割:人臉分割階段采用了人臉分割網(wǎng)絡(luò)TernausNet,來分割出頭發(fā)、眼鏡、手部這些可能會(huì)對人臉的變換有影響的點(diǎn)。最后生成一個(gè)人臉區(qū)域的mask,用于決定最后的生成部分。
訓(xùn)練(Training)
訓(xùn)練模型在換臉技術(shù)中起到了至關(guān)重要的作用,論文中提到實(shí)現(xiàn)DFL在不要求對齊的src和對齊的dst的面部表情嚴(yán)格匹配的情況下,旨在設(shè)計(jì)簡單有效的算法解決這一不成對的問題,同時(shí)保持生成的人臉的高保真度和感知質(zhì)量。
兩個(gè)共享權(quán)重的Encoder和Inter,兩個(gè)不同的decoder達(dá)到最終的換臉的目的。
個(gè)人理解:src和dst如何能夠做到匹配?首先對兩個(gè)人臉通過編碼器(encoder)編碼,通過中間的轉(zhuǎn)換送入到解碼器(decoder)中對二者進(jìn)行匹配,最終進(jìn)入到Real or Fake的問題。
轉(zhuǎn)換(Conversion)
以src2dst和DF結(jié)構(gòu)為例,說明DFL的轉(zhuǎn)換階段
生成面部重演圖像:將src通過encoder和inter得到特征,而后通過dst的decoder得到重演后的人臉,此時(shí)得到的生成并且對齊的正臉。
對齊:將上一步生成的人臉以及對應(yīng)的mask調(diào)成之前的狀態(tài)。
融合:先將上一步得到的臉部區(qū)域的顏色轉(zhuǎn)換至與目標(biāo)圖像的面部顏色相一致,下一步將采用播送融合得到融合后的圖像。
銳化:使用預(yù)訓(xùn)練好的人臉超分網(wǎng)絡(luò)對圖像進(jìn)行銳化。
項(xiàng)目實(shí)踐
Step 1:
軟件獲取與安裝
軟件獲取:
https://github.com/iperov/DeepFaceLab(依個(gè)人使用安裝)
1.安裝方法:
雙擊最新版本的7z文件
選擇安裝路徑后進(jìn)行安裝解壓
2.目錄簡介:
軟件解壓后出現(xiàn)DeepFaceLab_NVIDIA文件夾,點(diǎn)擊workspace文件夾
-
data_dst.mp4為目標(biāo)文件
-
data_src.mp4為源文件
軟件在運(yùn)行的過程中會(huì)在文件夾中產(chǎn)生aligend的文件用來防止提取的人臉圖片
Step 2:
項(xiàng)目開始
1.提取圖像(EXTRACT IMAGES)
step1:doc(2):extract images from video data_src
從視頻數(shù)據(jù)src中提取圖像 每幀按照png圖像處理
step2: doc(3):extract images from video data_dst FULL FPS
從視頻數(shù)據(jù)dst 中提取圖像 每幀按照png圖像處理
2.提取面部設(shè)置(EXTRACT FACESETS)
doc(4):data_src faceset extract 提取src面部設(shè)置
doc(5):data_dst faceset extract提取dst面部設(shè)置
3.提取后查看人臉集
doc(4.1):data_src view aligned result提取后查看人臉集
doc(5.1):data_dst view aligned result提取后查看目標(biāo)集 可以在這其中刪除不需要的面孔
4.訓(xùn)練(TRAINING)
doc(6):train Quick96 開始訓(xùn)練深度假模型
使用默認(rèn)設(shè)置,嘗試運(yùn)行訓(xùn)練的第一個(gè)迭代
訓(xùn)練預(yù)覽窗口打開
圖表顯示了模型訓(xùn)練的準(zhǔn)確度 這些線代表的損耗值在整個(gè)過程中接近零,線越低,結(jié)果越好
其中,最后一列可以看到換臉的進(jìn)展/擬合度
下邊展示迭代兩萬次左右的效果
5.合并(MERGING)
doc(7):merge Quick96 合并啟動(dòng)深層偽造視頻
? 顯示鍵盤命令映射 使用ws鍵將腐蝕遮罩值erode mask更改為20,使用ed鍵將模糊蒙版值 blur mask提高到100;shift + / 處理剩下的幀;. + / 合并達(dá)到100%關(guān)閉
doc(8):merged to mp4 具有目標(biāo)音頻的視頻文件
合成完畢后查看文件夾workspace(合成后的視頻保存在該目錄下)
效果演示:
若要查看完整視頻,鏈接https://www.bilibili.com/video/BV1Ur4y1A7Tm/
Step 3:項(xiàng)目總結(jié)
DeepFaceLab作為一個(gè)簡單、靈活、可擴(kuò)展的換臉框架,通過我對本次項(xiàng)目體驗(yàn)總結(jié)了DFL以下幾個(gè)特點(diǎn):
- 更輕便:對比之前版本的DF,DFL在訓(xùn)練過程中的時(shí)間性能指標(biāo)減少
- 更好用:不再只面向?qū)I(yè)人員,體現(xiàn)用戶優(yōu)先
項(xiàng)目進(jìn)行過程中遇到的問題
問題解決
資料索引
(1)https://blog.csdn.net/DeepFaceLabs/article/details/102933486/?ops_request_misc=&request_id=&biz_id=102&utm_term=DeepFaceLab:%20A%20simple,%20flexibl&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-6-102933486.pc_search_result_no_baidu_js&spm=1018.2226.3001.4187
(2)https://blog.csdn.net/weixin_41605888/article/details/111039355?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=b31c9a8a-b59d-4f2e-a46e-135e01c7dbd4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
(3)https://blog.csdn.net/u011145574/article/details/89066965?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control
(4)https://mrdeepfakes.com/forums/thread-guide-deepfacelab-2-0-guide
(5)https://github.com/deepfakes/faceswap
(6)https://www.youtube.com/watch?v=lSM-9RBk3HQ
(7)原論文:DeepFaceLab: A simple, flexible and extensible face swapping framework
個(gè)人感悟
剛開始接觸這個(gè)項(xiàng)目會(huì)因?yàn)闆]有機(jī)器學(xué)習(xí)知識(shí)的基礎(chǔ)著急,但是在YouTube上我找到了更清晰的思路、獲得了更深層的見解。
可能最大的困難就是看論文,這一次的實(shí)踐也在提醒我更努力去學(xué)習(xí)英語知識(shí),夯實(shí)基礎(chǔ)。最讓我開心的是項(xiàng)目開始著手,因?yàn)檫@片領(lǐng)域的未知性,我樂意去嘗試和探索,當(dāng)然中間也有一些慘不忍睹的事情發(fā)生,但是看到最后合成的視頻我明白一個(gè)事情,之前的事情都不是最難的,難的是開始動(dòng)手,我開始項(xiàng)目也比較拖拉,因?yàn)榭床欢撐?#xff0c;但是最后還是逼著自己去做了。當(dāng)然,過程很麻煩,結(jié)果就是“真香”!
總結(jié)
以上是生活随笔為你收集整理的DeepFaceLab: A simple, flexible and extensible face swapping framework 一个简单、灵活和可扩展的人脸交换框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Studio One Pro5软件安装包
- 下一篇: 深度学习-nlp系列(4):Word2V