之前沒碰過DeepFakes,突然想發B站視頻玩兒一下。試了試還挺麻煩的,這里記錄一下自己踩的坑。
本文的目標就是將The Singing Trump
的視頻換成我們的川建國同志。
最后效果:
視頻鏈接:https://www.bilibili.com/video/BV12p4y1k7E8/
本文嘗試的環境為linux服務器的環境,因為跑得比較快吧。
Python環境:Anoconda python3.7版本
GPU:K80, 12G顯存
DeepFake版本:2.0
其他工具:ffmpeg
首先需要準備一個或者多個The Singing Trump
的視頻,以及川建國同志的視頻。用作換臉素材。
首先通過ffmpeg將視頻素材切分成多個圖片。
mkdir outputffmpeg -i 你的視頻.mp4 -r 2 output/video-frame-t-%d.png復制代碼
這里視頻不一定要mp4,其他格式也行,然后 -r 2
表示是2幀,也就是每秒鐘采集兩張圖片,各位可以按照自己的視頻嘗試。 最后是輸出到output文件夾里面,前綴隨便定義就好了,名字也不是關鍵。
這里最好多找幾個視頻,因為deepfake會提示要保證人臉個數大于200張才會比較好,我這里分別準備了3個視頻,一共6個視頻。
ffmpeg -i sing_trump1.mp4 -r 2 sing_trump_output/st1-%d.pngffmpeg -i sing_trump2.flv -r 2 sing_trump_output/st2-%d.pngffmpeg -i sing_trump3.mp4 -r 2 sing_trump_output/st3-%d.png復制代碼
ffmpeg -i trump1.webm -r 2 trump_output/t1-%d.pngffmpeg -i trump2.mp4 -r 2 trump_output/t2-%d.pngffmpeg -i trump3.mp4 -r 2 trump_output/t3-%d.png復制代碼
弄完了還挺大,亂七八糟加起來3.7個G。
這里沒啥可說的,從github上下代碼。
git clone https://github.com/deepfakes/faceswap.git復制代碼
然后根據自己的實際情況裝環境,我這里是現在PC上裝cpu這個,然后在服務器上裝nvidia。
接下來將所有的臉部抽出來。
python3 faceswap.py extract -i trump_output -o trump_output_facepython3 faceswap.py extract -i sing_trump_output -o sing_trump_output_face復制代碼
這里抽完了臉就是這樣了。
接下來需要手工把我們不需要的臉都刪掉。
在我們調用extract生成臉部時,會自動生成一個校對文件,用于在原圖上保存臉部的信息。刪除臉部之后,需要將臉部和原圖片進行對齊。
這里可以打開gui工具
python3 faceswap.py gui復制代碼
然后選擇Tools下的Alignments。
接下來選擇Remove-Faces
,然后輸入對齊文件路徑,臉的路徑,以及原圖的路徑。
然后點擊綠色按鈕開始,運行即可。
然后將sing_trump_out
也執行同樣的操作。
接下來就可以開始訓練了,-m
參數為保存模型的位置。
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復制代碼
這里如果用gpu的話,我發現tensorflow2.2開始要用cuda10.1以上,但我這邊兒沒法裝,所以需要用tensorflow1.14或者tensorflow1.15,這就需要deepfake的1.0版本才能用。
github.com/deepfakes/f…
我發現faceswap1.0和master分支的操作是一樣的,沒太大變化。
我這里的速度大概是2分鐘100個step。
首先要準備我們要轉換的視頻,然后把視頻切分,這里就不是按照之前的幀數了。
ffmpeg –i sing_trump2.flv input_frames/video-frame-%d.png 復制代碼
這里我的視頻是1分41秒。
轉換完了大概有3050張圖片,也就是差不多30幀的,然后一共7.1G(mac就256G真的有點兒遭不住)
接下來,需要對我們要轉換的視頻圖片再來一遍人臉對齊,首先抽臉。
python3 faceswap.py extract -i input_frames -o input_frames_face復制代碼
然后再把多余的臉刪掉,像前面的步驟一樣的操作
用gui工具選擇Remove-Faces
,然后進行對齊。
通過convert命令進行轉換
python3 faceswap.py convert -i input_frames/ -o output_frames -m model/復制代碼
我這里的速度大概是每秒1張圖片,不過真正的臉只有600多張,如果臉比較密集的話我估計可能沒有那么快,所有的圖片轉換完大概是5分多鐘(這個gpu當時有別的程序在跑真實可能會更快一點兒)。
在訓練了1200step之后,大概是這個樣子,效果看著還不是很好哈,不過已經有點兒意思了。
最后通過ffmpeg把圖片合成一個視頻。
ffmpeg -i output_frames/video-frame-%d.png -vcodec libx264 -r 30 out.mp4復制代碼
這里合并完了我發現是2分鐘,不過影響也不大,畢竟后面還要進行剪輯,用PR等軟件再編輯一下就好了。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
【資料圖】【大河財立方 見習記者 王寧寧】4月18日,大河財立方記者獲悉,2023全球豫商大會將于4月21日至22日在鄭州與癸卯年黃帝故里拜祖大典同期舉辦。其中,4月21日下午主活動將安排頒獎、項目簽約等議程,22日下午舉辦平頂山專場推介會、粵港澳大灣區投資交流懇談會等活動。本屆大會由省委、省政府主辦,省委統戰部、省政協辦公廳、省商務廳、省工商聯、省僑聯、省豫商聯合會、鄭州市人民政府共同承辦,大會...
2022年4月20日消息,騰訊旗下休閑娛樂游戲《QQ堂》將正式停止中國大陸地區的運營。這款游戲將于今日11點關閉服務器,屆時玩家將不能正常登錄游戲。同時,游戲服務器的官網、論壇、專屬客服也均關閉?!禥Q堂》于2004年12月29日推出,是騰訊的大型游戲處女作,至今已運營逾17年,曾是很多人的童年。2021年12月,《QQ堂》因項目組戰略計劃,宣布停運。消息一出一度沖上熱搜,不少網友紛紛直呼,&ld...
PE投資,全稱為Private Equity,是私募股權投資的意思,簡稱為PE。此類投資主要是投資一-些不公開發行的公司股權,一般是通過私下的非公開渠道進行募集資金,因此而得名。PE投資的特點有哪些?1、期限長:從投資到收益一般需要五到七年;2、金額大:投資項目需要的資金| ]檻較高,大部分是百萬、千萬元起步;3、風險大:私募股權投資實現收益的方式主要是收購、兼并和上市。其中任一方式的風險都很大;...