溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python中DeepFakes的使用方法

發(fā)布時(shí)間:2020-11-16 10:04:59 來源:億速云 閱讀:772 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下python中DeepFakes的使用方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

目標(biāo)

之前沒碰過DeepFakes,突然想發(fā)B站視頻玩兒一下。試了試還挺麻煩的,這里記錄一下自己踩的坑。

本文的目標(biāo)就是將The Singing Trump的視頻換成我們的川建國(guó)同志。

python中DeepFakes的使用方法

最后效果:python中DeepFakes的使用方法

視頻鏈接:https://www.bilibili.com/video/BV12p4y1k7E8/

環(huán)境說明

本文嘗試的環(huán)境為linux服務(wù)器的環(huán)境,因?yàn)榕艿帽容^快吧。

Python環(huán)境:Anoconda python3.7版本

GPU:K80, 12G顯存

DeepFake版本:2.0

其他工具:ffmpeg

素材準(zhǔn)備

首先需要準(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)鍵。python中DeepFakes的使用方法

這里最好多找?guī)讉€(gè)視頻,因?yàn)閐eepfake會(huì)提示要保證人臉個(gè)數(shù)大于200張才會(huì)比較好,我這里分別準(zhǔn)備了3個(gè)視頻,一共6個(gè)視頻。

python中DeepFakes的使用方法

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。python中DeepFakes的使用方法

clone代碼+裝依賴

這里沒啥可說的,從github上下代碼。

git clone https://github.com/deepfakes/faceswap.git復(fù)制代碼

然后根據(jù)自己的實(shí)際情況裝環(huán)境,我這里是現(xiàn)在PC上裝cpu這個(gè),然后在服務(wù)器上裝nvidia。

python中DeepFakes的使用方法

抽取臉部

接下來將所有的臉部抽出來。

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ù)制代碼

這里抽完了臉就是這樣了。python中DeepFakes的使用方法

篩選臉部

接下來需要手工把我們不需要的臉都刪掉。

python中DeepFakes的使用方法

python中DeepFakes的使用方法

修改alignment

在我們調(diào)用extract生成臉部時(shí),會(huì)自動(dòng)生成一個(gè)校對(duì)文件,用于在原圖上保存臉部的信息。python中DeepFakes的使用方法刪除臉部之后,需要將臉部和原圖片進(jìn)行對(duì)齊。

這里可以打開gui工具

python3 faceswap.py gui復(fù)制代碼

然后選擇Tools下的Alignments。python中DeepFakes的使用方法

接下來選擇Remove-Faces,然后輸入對(duì)齊文件路徑,臉的路徑,以及原圖的路徑。python中DeepFakes的使用方法

然后點(diǎn)擊綠色按鈕開始,運(yùn)行即可。python中DeepFakes的使用方法

然后將sing_trump_out也執(zhí)行同樣的操作。

開始訓(xùn)練

接下來就可以開始訓(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…

訓(xùn)練截圖

我發(fā)現(xiàn)faceswap1.0和master分支的操作是一樣的,沒太大變化。

python中DeepFakes的使用方法我這里的速度大概是2分鐘100個(gè)step。

轉(zhuǎn)換視頻

準(zhǔn)備視頻幀

首先要準(zhǔn)備我們要轉(zhuǎn)換的視頻,然后把視頻切分,這里就不是按照之前的幀數(shù)了。

ffmpeg –i sing_trump2.flv input_frames/video-frame-%d.png 
復(fù)制代碼

這里我的視頻是1分41秒。python中DeepFakes的使用方法

轉(zhuǎn)換完了大概有3050張圖片,也就是差不多30幀的,然后一共7.1G(mac就256G真的有點(diǎn)兒遭不住)python中DeepFakes的使用方法

再次對(duì)齊一遍

接下來,需要對(duì)我們要轉(zhuǎn)換的視頻圖片再來一遍人臉對(duì)齊,首先抽臉。

python3 faceswap.py extract -i input_frames -o input_frames_face復(fù)制代碼

然后再把多余的臉刪掉,像前面的步驟一樣的操作用gui工具選擇Remove-Faces,然后進(jìn)行對(duì)齊。

對(duì)每一幀進(jìn)行AI換臉

通過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)兒)。python中DeepFakes的使用方法

效果

訓(xùn)練20分鐘后

在訓(xùn)練了1200step之后,大概是這個(gè)樣子,效果看著還不是很好哈,不過已經(jīng)有點(diǎn)兒意思了。python中DeepFakes的使用方法

訓(xùn)練一個(gè)小時(shí)后

python中DeepFakes的使用方法

訓(xùn)練一天以后

python中DeepFakes的使用方法

把圖片合成視頻

最后通過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è)資訊頻道!

向AI問一下細(xì)節(jié)

免責(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)容。

AI