您好,登錄后才能下訂單哦!
小編給大家分享一下python中DeepFakes的使用方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
之前沒碰過DeepFakes,突然想發(fā)B站視頻玩兒一下。試了試還挺麻煩的,這里記錄一下自己踩的坑。
本文的目標(biāo)就是將The Singing Trump
的視頻換成我們的川建國(guó)同志。
最后效果:
視頻鏈接:https://www.bilibili.com/video/BV12p4y1k7E8/
本文嘗試的環(huán)境為linux服務(wù)器的環(huán)境,因?yàn)榕艿帽容^快吧。
Python環(huán)境:Anoconda python3.7版本
GPU:K80, 12G顯存
DeepFake版本:2.0
其他工具:ffmpeg
首先需要準(zhǔn)備一個(gè)或者多個(gè)The Singing Trump
的視頻,以及川建國(guó)同志的視頻。用作換臉?biāo)夭摹?/p>
首先通過ffmpeg將視頻素材切分成多個(gè)圖片。
mkdir output ffmpeg -i 你的視頻.mp4 -r 2 output/video-frame-t-%d.png復(fù)制代碼
這里視頻不一定要mp4,其他格式也行,然后 -r 2
表示是2幀,也就是每秒鐘采集兩張圖片,各位可以按照自己的視頻嘗試。 最后是輸出到output文件夾里面,前綴隨便定義就好了,名字也不是關(guān)鍵。
這里最好多找?guī)讉€(gè)視頻,因?yàn)閐eepfake會(huì)提示要保證人臉個(gè)數(shù)大于200張才會(huì)比較好,我這里分別準(zhǔn)備了3個(gè)視頻,一共6個(gè)視頻。
ffmpeg -i sing_trump1.mp4 -r 2 sing_trump_output/st1-%d.png ffmpeg -i sing_trump2.flv -r 2 sing_trump_output/st2-%d.png ffmpeg -i sing_trump3.mp4 -r 2 sing_trump_output/st3-%d.png復(fù)制代碼
ffmpeg -i trump1.webm -r 2 trump_output/t1-%d.png ffmpeg -i trump2.mp4 -r 2 trump_output/t2-%d.png ffmpeg -i trump3.mp4 -r 2 trump_output/t3-%d.png復(fù)制代碼
弄完了還挺大,亂七八糟加起來3.7個(gè)G。
這里沒啥可說的,從github上下代碼。
git clone https://github.com/deepfakes/faceswap.git復(fù)制代碼
然后根據(jù)自己的實(shí)際情況裝環(huán)境,我這里是現(xiàn)在PC上裝cpu這個(gè),然后在服務(wù)器上裝nvidia。
接下來將所有的臉部抽出來。
python3 faceswap.py extract -i trump_output -o trump_output_face python3 faceswap.py extract -i sing_trump_output -o sing_trump_output_face復(fù)制代碼
這里抽完了臉就是這樣了。
接下來需要手工把我們不需要的臉都刪掉。
在我們調(diào)用extract生成臉部時(shí),會(huì)自動(dòng)生成一個(gè)校對(duì)文件,用于在原圖上保存臉部的信息。刪除臉部之后,需要將臉部和原圖片進(jìn)行對(duì)齊。
這里可以打開gui工具
python3 faceswap.py gui復(fù)制代碼
然后選擇Tools下的Alignments。
接下來選擇Remove-Faces
,然后輸入對(duì)齊文件路徑,臉的路徑,以及原圖的路徑。
然后點(diǎn)擊綠色按鈕開始,運(yùn)行即可。
然后將sing_trump_out
也執(zhí)行同樣的操作。
接下來就可以開始訓(xùn)練了,-m
參數(shù)為保存模型的位置。
python3 ./faceswap.py train -A sing_trump_output_face -ala sing_trump_output/alignments.fsa -B trump_output_face -alb trump_output/alignments.fsa -m model復(fù)制代碼
這里如果用gpu的話,我發(fā)現(xiàn)tensorflow2.2開始要用cuda10.1以上,但我這邊兒沒法裝,所以需要用tensorflow1.14或者tensorflow1.15,這就需要deepfake的1.0版本才能用。
github.com/deepfakes/f…
我發(fā)現(xiàn)faceswap1.0和master分支的操作是一樣的,沒太大變化。
我這里的速度大概是2分鐘100個(gè)step。
首先要準(zhǔn)備我們要轉(zhuǎn)換的視頻,然后把視頻切分,這里就不是按照之前的幀數(shù)了。
ffmpeg –i sing_trump2.flv input_frames/video-frame-%d.png 復(fù)制代碼
這里我的視頻是1分41秒。
轉(zhuǎn)換完了大概有3050張圖片,也就是差不多30幀的,然后一共7.1G(mac就256G真的有點(diǎn)兒遭不住)
接下來,需要對(duì)我們要轉(zhuǎn)換的視頻圖片再來一遍人臉對(duì)齊,首先抽臉。
python3 faceswap.py extract -i input_frames -o input_frames_face復(fù)制代碼
然后再把多余的臉刪掉,像前面的步驟一樣的操作
用gui工具選擇Remove-Faces
,然后進(jìn)行對(duì)齊。
通過convert命令進(jìn)行轉(zhuǎn)換
python3 faceswap.py convert -i input_frames/ -o output_frames -m model/復(fù)制代碼
我這里的速度大概是每秒1張圖片,不過真正的臉只有600多張,如果臉比較密集的話我估計(jì)可能沒有那么快,所有的圖片轉(zhuǎn)換完大概是5分多鐘(這個(gè)gpu當(dāng)時(shí)有別的程序在跑真實(shí)可能會(huì)更快一點(diǎn)兒)。
在訓(xùn)練了1200step之后,大概是這個(gè)樣子,效果看著還不是很好哈,不過已經(jīng)有點(diǎn)兒意思了。
最后通過ffmpeg把圖片合成一個(gè)視頻。
ffmpeg -i output_frames/video-frame-%d.png -vcodec libx264 -r 30 out.mp4復(fù)制代碼
這里合并完了我發(fā)現(xiàn)是2分鐘,不過影響也不大,畢竟后面還要進(jìn)行剪輯,用PR等軟件再編輯一下就好了。
以上是python中DeepFakes的使用方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。