手頭剛好有個3080径缅,就選用DFL3.0 1120 RTX30版本。DFL由版本+日期+適配顯卡組成烙肺。
1 安裝
Windows下基本是解壓開箱即用纳猪。
主要是安裝驅(qū)動,下載驅(qū)動:
https://www.nvidia.cn/Download/index.aspx?lang=cn
查看CUDA版本:NVIDIA控制面板 - 菜單 - 幫助 - 系統(tǒng)信息 - 組件 - NVCUDA64.DLL桃笙。如果需要安裝cuda和cudnn氏堤,參考:
https://developer.nvidia.com/zh-cn/cuda-downloads
https://developer.nvidia.com/rdp/cudnn-archive # 復(fù)制到文件夾
2 使用
2.0 準(zhǔn)備視頻
源視頻的素材可得好好選取準(zhǔn)備,越清晰越好搏明!因為清晰的可以變模糊鼠锈,但模糊的想要清晰可就難了。近景遠(yuǎn)景正臉側(cè)臉?biāo)劳鼋嵌劝滋旌谝瓜才犯鞣N有代表性的星著,可以用格式工廠之類的進行截取购笆、拼接、轉(zhuǎn)化虚循,最終存為data_src.mp4
同欠。
目標(biāo)視頻處理比較簡單些,看作者的成品想法横缔,最終存為data_dst.mp4
铺遂。為了換臉絲滑,src和dst盡可能選擇表情茎刚、角度襟锐、光源接近的,src的數(shù)據(jù)量可以多一些膛锭。
2.1 src切圖
- 點擊運行
2) 源視頻轉(zhuǎn)圖片 extract images from video data_src.bat
粮坞。 - 輸入自定義幀率蚊荣,推薦值10,以減少重復(fù)圖片捞蚂。
- 選擇格式妇押,有兩種,PNG無損清晰姓迅,JPG文件小敲霍,要求不高的就用JPG吧。
回車開始切圖丁存,40分鐘的視頻肩杈,不到1分鐘就切完了,存在workspace\data_src
根目錄解寝。這些圖片只是為了后面切臉扩然,所以切完臉可以刪掉。甚至有的第三方切臉軟件可以直接從視頻開始聋伦,那就省略這一步了夫偶。
2.2 dst切圖
- 點擊運行
3) 目標(biāo)視頻轉(zhuǎn)圖片 extract images from video data_dst FULL FPS.bat
。 - 選擇格式觉增,比如JPG兵拢。
回車開始切圖,這個根目錄下的圖片千萬別刪除逾礁,沒人臉也別刪说铃,因為每一張圖最后都是用來合成視頻的,所以不需要輸入幀率嘹履。
2.3 src切臉
點擊運行4) 提取源頭像 data_src faceset extract.bat
腻扇。會有參數(shù)需要設(shè)置,如圖:
- 選擇臉型:有全臉(f)砾嫉、整臉(wf)幼苛、頭(head)。wf比f替換面積更大焰枢,覆蓋額頭和胡子蚓峦,f只替換到眉毛上方一點點。一般選擇默認(rèn)的wf济锄。
- 設(shè)置最多識別幾個人暑椰,如果視頻大部分時間就1個人,那就選1荐绝;如果不少時候都是兩人同框一汽,且可能都需要,那就選2。
- 設(shè)置圖片大姓偌小:一般256夠了岩喷,當(dāng)然分辨率當(dāng)然越高越好,但也耗資源监憎。不過如果源視頻質(zhì)量不怎樣纱意,就算512也沒啥用。
- 圖片質(zhì)量就默認(rèn)90鲸阔。
- 調(diào)試圖片也沒啥好看的偷霉,錯切的到時候刪掉就是。
設(shè)置完畢褐筛,回車運行腳本类少,3080切臉?biāo)俣却蟾?張/秒。會生成到workspace\data_src\aligned
目錄渔扎。
如果希望加快切臉?biāo)俣攘蚰梢跃W(wǎng)上找一些專業(yè)提臉軟件,速度能提升10倍左右晃痴。
接下來是重要的整理工作:
推薦使用第三方軟件MVE(Machine Video Editor)
進行切圖糾錯残吩、蒙板管理,很強大倘核,有興趣的自行研究世剖。
- 可用VisiPics軟件去除掉無意義的重復(fù)的圖。
- 點擊運行
4.2) 源頭像排序 data_src sort.bat
將圖片排序笤虫,一般選擇5-顏色直方圖排序。篩選下祖凫,刪除掉模糊的琼蚯、旋轉(zhuǎn)的(基本是因為識別失敗)惠况、殘缺的遭庶、有遮擋的、有黑邊裁切的稠屠、劉海太大的峦睡、不相干人物的、以及光照差異大的权埠。如果是普通的遮擋物且素材奇缺榨了,可以保留著用作遮罩訓(xùn)練。 - 識別不準(zhǔn)的如果很珍貴攘蔽,可以進行手刪補切龙屉。就是刪除掉debug目錄里對應(yīng)的錯圖,然后運行手動提取腳本
data_src faceset extract MANUAL.bat
再來一次满俗,素材多就直接刪了吧转捕。 - 還可以運行排序腳本按1-模糊程度排個序作岖,然后刪除,不過也有觀點認(rèn)為適當(dāng)模糊的其實也可以留著訓(xùn)練五芝,自行探索吧痘儡。
如果aligned里有多個人(初始會帶著不同的文件名后綴,如_0枢步、_1沉删,一般按照同一張圖里頭像大小排序的),直接訓(xùn)練會產(chǎn)生混血兒价捧。建議使用顏色直方圖做排序丑念,然后把不同的人歸類到不同的文件夾備用,或者刪除掉不需要換臉的人结蟋。這一步可配合人臉篩選工具進行脯倚,類似于iphone照片的人物識別歸類,會方便許多嵌屎。
https://github.com/MachineEditor/MachineVideoEditor
2.4 dst切臉
點擊運行5) 目標(biāo)頭像提取 data_dst faceset extract.bat
推正。參數(shù)如下:
切完后進行整理。
- 建議用顏色直方圖做排序宝惰,歸類不同人到不同的文件夾備用欺殿,或刪除掉不想換臉的,特別模糊看不清的售睹。
- 極限仰臉/側(cè)臉之類的都看不清誰是誰的绍些,可以干脆刪掉不換了。還有一個做法是淤堵,復(fù)制一份到src的aligned目錄用于自己訓(xùn)練自己寝衫。或者想辦法去src里補充下極限角度素材拐邪。
- 有遮擋的別刪慰毅,因為也需要換臉。
- 對于臉部輪廓識別錯誤的扎阶、圖片旋轉(zhuǎn)但臉部清晰的汹胃,別直接刪!需要人工修改下东臀。先在Debug目錄刪除掉對應(yīng)的圖片着饥,然后運行
data_dst extract faces MANUAL RE-EXTRACT DELETED RESULTS DEBUG.bat
,會提示發(fā)現(xiàn)一張圖片惰赋,等加載完畢后贱勃,移動和滾動鼠標(biāo)來調(diào)整區(qū)域,單擊鼠標(biāo)進行解鎖或鎖定,最后回車確認(rèn)贵扰,就會開始提取仇穗,debug目錄和aligned都會生成更新圖片。
記住一點戚绕,這個aligned目錄下的所有人臉纹坐,最終都是要被src的人臉替換的。比如如果留著多個人舞丛,會產(chǎn)生多胞胎耘子。
2.5 處理遮罩(可選)
2.5.1 繪制
有時候dst圖片臉上有遮擋物,如果不處理球切,到時候就直接把src整個糊上去谷誓。那會產(chǎn)生奇怪的效果,比如臉上沒眼鏡卻有兩個眼鏡腿吨凑。
- 運行
data_dst mask for XSeg trainer - edit.bat
捍歪,會跳出界面繪制dst遮罩,就是框框摳摳鸵钝,這是個細(xì)活兒糙臼,挺累的。 - 運行
train.bat
訓(xùn)練遮罩恩商,設(shè)置臉型和batch_size变逃,訓(xùn)練個幾十上百萬,回車結(jié)束怠堪。 - XSeg遮罩訓(xùn)練素材是不區(qū)分是src和dst揽乱。
2.5.2 使用Xseg模型(推薦)
網(wǎng)上有一些現(xiàn)成的遮罩模型,注意這跟換臉模型不一樣粟矿,雖然也是放到model目錄锤窑。有兩種使用方式:
- 訓(xùn)練前先推理遮罩。運行
data_src/dst trained mask - apply.bat
嚷炉,將遮罩寫入圖片并學(xué)習(xí)非遮罩區(qū)域。 - (推薦)合成merge時探橱,在交互窗口申屹,按X,實時選擇遮罩并預(yù)覽隧膏,新手就用這個吧哗讥,別訓(xùn)練了,效果略差胞枕,但也差不到哪里去杆煞。
在別的基礎(chǔ)上訓(xùn)練,比直接拿來用好一些。是否重新訓(xùn)練
Xseg模型可復(fù)用决乎,手工畫完的遮罩圖可運行data_dst mask for XSeg trainer - fetch.bat
搜集起來队询,增量訓(xùn)練。不過新手用不到构诚。
2.6 訓(xùn)練
入門或者配置低可使用輕量級的train Quick96.bat
蚌斩,不需要設(shè)置參數(shù)。這里重點說下重量級的SAEHD
范嘱。
首先送膳,新手務(wù)必找個預(yù)訓(xùn)練模型(仙丹)來繼續(xù)訓(xùn)練,會大大減少時間丑蛤、提升效果5!受裹!
使用仙丹后再訓(xùn)個幾萬次迭代吧碌补,后期打開LRD和GAN。使用仙丹名斟,分辨率沒法改脑慧。
- batch_size默認(rèn)可能是4,如果是沿用已有模型砰盐,啟動訓(xùn)練后2秒內(nèi)回車闷袒,可以修改batch_size等,比如16岩梳,單次迭代時間應(yīng)該會變長囊骤。
- 模型架構(gòu):DF五官結(jié)構(gòu)保留的更像,LIAE光影處理的更好冀值,-u增加人臉相似度也物,-d分辨率不錯,推薦LIAE列疗。
- 幾個層的寬度滑蚯,根據(jù)配置選擇,比如中間瓶頸層為256抵栈、編碼解碼層為64告材,而遮罩層一般是三分之一解碼層寬度。
- 如果有閉眼古劲、張嘴的素材斥赋,可以開啟Eyes and mouth priority。
- 訓(xùn)練沒進步了可以開啟學(xué)習(xí)率丟棄(Use learning rate dropout)产艾。
- Enable random warp of samples可以前期開啟疤剑,提高訓(xùn)練難度滑绒,后期關(guān)閉。
- 配置高可以開一點GAN power 隘膘,比如0.1疑故。GAN dimensions大概16。
- 變色處理:color transfer選RCT和LCT棘幸,可彌補光影變化不足焰扳,當(dāng)然最好是收集更多全角度不同光影下的SRC素材。
- Enable gradient clipping梯度裁剪必須開啟误续!
- src/dst loss都刷進0.2就差不多了吨悍,預(yù)覽圖藍(lán)色和黃色分別代表src和dst。
- 或者蹋嵌,預(yù)覽界面第5列足夠清晰育瓜,且表情接近第4列,就可以回車結(jié)束了栽烂。
- masked_training: True躏仇。意思是只學(xué)習(xí)蒙板內(nèi)的?待確認(rèn)腺办。
喜歡src的臉型焰手,就打開true_face_power
,否則打開face_style_power
怀喉。不要同時開书妻,一般是0.001。
最后躬拢,來自dfldata網(wǎng)站的一組從0開始訓(xùn)練的推薦參數(shù):
# 先開這組參數(shù)訓(xùn)練10-60W
face type : WF
random_flip : off # 防止左右臉不一樣的翻來翻去
random warp:y
adabelief : on
Eyes and mouth priority : on
color transfer mode: lct
# 再開這個訓(xùn)練10-30W躲履,開了就別關(guān)了!
learning rate drop:y
# 再關(guān)閉隨機扭曲訓(xùn)練10-30W
random warp:n
# 最后開GAN訓(xùn)練10-30W
GAN power: 0.1 # 此時loss比較低了聊闯,比如0.1工猜,打開前可以備份下,容易崩
訓(xùn)練效果差一般就是因為src素材缺乏菱蔬,沒好料篷帅。
2.7 應(yīng)用模型
本步驟將圖片換臉,以前老版本叫convert吧拴泌。
- 入門可使用
merge Quick96.bat
魏身,另有SAEHD(高質(zhì)量)、AMP(實時換臉弛针,用于DeepFaceLive)。 - 選擇交互模式李皇,輸入法切換成英文削茁;
- 線程數(shù)根據(jù)CPU確定宙枷;
- 顯示快捷鍵后,按Tab切換合成預(yù)覽界面/幫助茧跋;
- 快捷鍵修改調(diào)整慰丛,然后可以按
shift+?
,將這組參數(shù)配置應(yīng)用到剩余所有幀瘾杭,再按shift+>
诅病,自動合成剩余所有幀,會出現(xiàn)沙漏粥烁。過程中可以暫停進行調(diào)整贤笆,然后繼續(xù)應(yīng)用、合成讨阻。 - 按住shift調(diào)整芥永,參數(shù)每次±5。
各種參數(shù)自行試一試钝吮,多按一按埋涧,就找到感覺了!F媸荨棘催!
2.7.1 覆蓋模式
1-overlay,2-hist-match耳标,3-hist-match-bw醇坝,4-seamless,5-seamless-hist-match麻捻,6-raw-rgb纲仍,7-raw-rgb-mask,8-raw-mask-only 贸毕,9-raw-predicted-only郑叠。
其中,4-seamless(泊松克隆)比較適配遮擋的情況明棍,缺點:閃爍乡革、抖動、偏暗摊腋。一般推薦2-hist-match的色彩比較接近沸版,配合erode和blur使用。
2.7.2 直方圖匹配閾值
Hist match threshold. [0..255] (default – 255): 快捷鍵QA
設(shè)定需要的亮度兴蒸,適當(dāng)降低該值视粮,可以解決亮斑,比如238橙凳。
2.7.3 侵蝕
快捷鍵WS
調(diào)整被替換區(qū)域蕾殴,值變大增大遮罩向內(nèi)收縮程度笑撞,有時會出現(xiàn)亮色邊。
2.7.4 模糊
Choose blur mask modifier [-200..200]: 快捷鍵ED
設(shè)定平滑度钓觉,羽化邊緣茴肥,看起來模糊自然。如果不處理遮擋荡灾,hist-match (erode: 100, blur: 100)瓤狐;如果遮擋比較大,seamless (erode: 30, blur:0)批幌。
2.7.5 運動模糊
快捷鍵RF
調(diào)節(jié)運動模糊程度础锐,前后幀臉部變化越大,模糊程度越大逼裆。使用前確保aligned_dst的每一幀只有一個人臉郁稍。
2.7.6 超分辨率
快捷鍵TG
調(diào)節(jié)超分辨率效果,可以讓人臉更清晰胜宇,可以設(shè)定為100耀怜。
2.7.7 銳化
快捷鍵YH
調(diào)節(jié)銳化程度,按N更改銳化模式桐愉,選擇gaussian模式财破,按Y增加參數(shù)到5。
2.7.8 放大縮小
快捷鍵UJ
調(diào)節(jié)人臉大小从诲。
2.7.9 背景劣化
有時候人臉不清晰左痢,干脆降低背景畫質(zhì),大家一起擺爛系洛。其中俊性,快捷鍵IK
調(diào)節(jié)圖片降噪效果(和磨皮差不多),快捷鍵OL
調(diào)節(jié)雙三次插值劣化效果描扯,快捷鍵P;
調(diào)節(jié)顏色劣化效果定页。
2.7.10 遮罩與顏色控制區(qū)
- Z 直方圖匹配對遮罩區(qū)域起效
- X 遮罩模式,記得是prd-dst效果比較好绽诚,多試試
老版本的還有:
Mask mode: (1) learned, (2) dst, (3) FAN-prd, (4) FAN-dst (5) FAN-prd * dst (6) learned * FAN-prd * FAN-dst help (?) . Default – 1:
一般選2典徊,速度快。其他效果好恩够,但慢卒落,且在使用了Fanseg模型遮罩之后,必須使用FAN模型蜂桶。
如果要處理遮擋儡毕,轉(zhuǎn)換啟動后啟用動態(tài)交互,然后按Tab鍵盤進入預(yù)覽窗口扑媚,按兩次X腰湾,切換成Fan-dst贾费。
- C 顏色轉(zhuǎn)化模式
- V 查看遮罩范圍
2.8 合成視頻
設(shè)置下碼率即可,比如3檐盟。
3 經(jīng)驗
3.1 復(fù)用模型
也就是使用預(yù)訓(xùn)練模型(靈丹)。先將其復(fù)制到model文件夾押桃,然后src和dst放自己想要換臉的素材葵萎,開啟訓(xùn)練后2秒鐘內(nèi)按回車,最后把“是否啟用預(yù)訓(xùn)練模式 use pretrain mode”改為N唱凯。注意羡忘,這選項千萬不需要Y,否則會調(diào)用內(nèi)置的外國人數(shù)據(jù)進行訓(xùn)練磕昼。然后訓(xùn)練卷雕,基本一開始就能看到人影。如果看不到票从,就按回車結(jié)束訓(xùn)練漫雕,把預(yù)訓(xùn)練模型的.npy文件復(fù)制替換到模型文件夾中,重來一次峰鄙。
預(yù)訓(xùn)練模型跟正式訓(xùn)練模型本質(zhì)上都是模型浸间,只不過預(yù)訓(xùn)模型使用了大量素材進行煉丹,學(xué)會了很多繪畫技法吟榴。在其基礎(chǔ)上再去專門學(xué)習(xí)畫某個人魁蒜,速度就快了。也有做法將正訓(xùn)素材也加到預(yù)訓(xùn)素材里一起煉丹吩翻,普通玩家就別隨便煉丹了兜看。
3.2 素材不夠
- DF架構(gòu),src和dst素材互換進行訓(xùn)練狭瞎,學(xué)習(xí)到dst的極限角度细移。
3.3 多人切臉
- 為了避免多人影響切臉,可以用PR蒙板圈出dst臉脚作,并且路徑跟蹤臉部葫哗,然后導(dǎo)出data_dst.mp4,再切圖切臉球涛,速度快很多劣针。然后把data_dst根目錄的切圖給刪掉,將沒有蒙板的原始視頻拷貝成data_dst.mp4亿扁,切圖即可捺典,不要再切臉了!
- 合成換臉時从祝,src dst的aligned目錄只能有一個人襟己!否則會出現(xiàn)雙胞胎引谜、混血兒。先把閑雜人先移走擎浴,換好一對臉员咽,把幀圖保存下來繼續(xù)換下一個,最后合成視頻贮预。
- 最好一人一丹贝室,更好是一對一丹,費點事仿吞。
4 問題
4.1 報錯
大部分是因為驅(qū)動太舊滑频、顯存太少。如CUDA driver version is insufficient for CUDA runtime version
唤冈,Could not create cudnn handle
峡迷,可以升級驅(qū)動解決。
4.2 視頻抖動
- 可能是dst切臉輪廓不統(tǒng)一你虹,參考之前的手刪補切解決绘搞。
- 侵蝕過大,調(diào)到比如50試試傅物。
- 打開顏色轉(zhuǎn)移CT看杭,比如lct。
- 試試增加訓(xùn)練時間挟伙,或者增加LRD的時間楼雹,以穩(wěn)定像素映射。
4.3 視頻閃爍
- 有可能是dst漏切臉了尖阔,導(dǎo)致視頻在src和dst兩張臉間閃爍贮缅,可以去aligned目錄檢查一下并補充。
- 視dst切臉的準(zhǔn)確程度介却,也可能造成局部閃爍谴供,手刪補切吧。
- 還可能是dst光影豐富齿坷,而src光影不足桂肌,可以換成LIAE架構(gòu),或者想辦法補充src素材吧永淌。
4.4 膚色不統(tǒng)一
- 訓(xùn)練時間不夠
- 缺少src素材
- 建議開啟顏色轉(zhuǎn)移CT崎场,不停按C看看效果
- 軟件后期
4.5 皮膚太光滑
- 訓(xùn)練充分后,關(guān)閉隨機扭曲random warp遂蛀,開啟GAN0.01-0.1谭跨,提高清晰度
- 合成時再加超精細(xì)和銳化(box),按T加大超分辨率