魔性,用Python實(shí)現(xiàn)火爆全網(wǎng)的「螞蟻呀嘿」視頻特效!
↑↑↑關(guān)注后"星標(biāo)"簡(jiǎn)說Python 人人都可以簡(jiǎn)單入門Python、爬蟲、數(shù)據(jù)分析 簡(jiǎn)說Python推薦 來源|法納斯特 作者|小F
最近在抖音上看到很多「螞蟻呀嘿」的魔性視頻,各方大佬齊齊上陣。
剛好看到百度的開源項(xiàng)目,基于PaddleGAN實(shí)現(xiàn)表情遷移,于是也來玩一把!
先來看一下小F的成果,各大編程創(chuàng)始人齊唱「螞蟻呀嘿」!

沒配音,感覺不是很精彩,后面上視頻。
那么需要如何實(shí)現(xiàn)呢,下面小F來手把手教學(xué)。
項(xiàng)目地址:
https://aistudio.baidu.com/aistudio/projectdetail/1586056
目前該項(xiàng)目適合在Windows和Linux上操作,Mac在調(diào)用ffmpeg這一步會(huì)出錯(cuò)。
不知道是不是和mac不支持gpu安裝paddlepaddle有關(guān)系。
首先將PaddleGAN的源碼從gitee上下載下來。
# 從gitee上克隆PaddleGAN代碼
git clone https://gitee.com/paddlepaddle/
沒有安裝git的小伙伴,在公眾號(hào)回復(fù)「螞蟻呀嘿」就可以獲取到文件。
下載解壓后,小F是將PaddleGAN文件夾放置在PyCharm的項(xiàng)目中。

如此就能在PyCharm項(xiàng)目的虛擬環(huán)境中,進(jìn)行相關(guān)的安裝操作了。
# 終端打開文件夾
cd PaddleGAN
# 安裝相關(guān)依賴
pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
pip install imageio-ffmpeg -i https://mirror.baidu.com/pypi/simple
終端打開文件夾,安裝所需要的依賴。
畢竟是百度的開源項(xiàng)目,所以使用了百度的pip源,速度真的很快。
下面再創(chuàng)建一個(gè)輸出文件夾,生成的視頻會(huì)保存在這里。
# 打開文件夾
cd applications/
# 新建文件夾
mkdir output
最后還需要安裝百度的paddlepaddle和paddlehub。
paddlepaddle是基礎(chǔ),而paddlehub則是用來檢測(cè)人臉用的。
將「輸入圖片」中的所有人臉檢測(cè)出來,然后使用PaddleGAN對(duì)每個(gè)人臉進(jìn)行表情遷移,最后生成視頻。
# 安裝庫
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
pip install paddlehub -i https://mirror.baidu.com/pypi/simple
下面就可在終端運(yùn)行如下命令。
export PYTHONPATH=$PYTHONPATH:../PycharmProjects/mayiyahei/PaddleGAN && python -u tools/first-order-demo.py --driving_video ../PycharmProjects/mayiyahei/MaYiYaHei.MP4 --source_image ../PycharmProjects/mayiyahei/input.jpeg --relative --adapt_scale

其中,“../”處應(yīng)該修改成為你自己的路徑。
命令行參數(shù)說明如下。
driving_video: 驅(qū)動(dòng)視頻,視頻中人物的表情動(dòng)作作為待遷移的對(duì)象。
source_image: 原始圖片,視頻中人物的表情動(dòng)作將遷移到該原始圖片中的人物上 。
relative: 指示程序中使用視頻和圖片中人物關(guān)鍵點(diǎn)的相對(duì)坐標(biāo)還是絕對(duì)坐標(biāo),建議使用相對(duì)坐標(biāo),若使用絕對(duì)坐標(biāo),會(huì)導(dǎo)致遷移后人物扭曲變形。
adapt_scale: 根據(jù)關(guān)鍵點(diǎn)凸包自適應(yīng)運(yùn)動(dòng)尺度。
此處,大家可以使用自己設(shè)計(jì)的圖片,生成你想要的視頻。
比如我的原始圖片input.jpeg,就是編程創(chuàng)始人集合照,如下圖。

對(duì)于其他的視頻特效,就需要更改驅(qū)動(dòng)視頻,即修改driving_video。
另外生成的視頻是不帶聲音的,所以需要使用FFmpeg將視頻與音頻進(jìn)行合并。
# 視頻和音頻合并
ffmpeg -i MaYiYaHei.mp4 -i MYYH.mp3 -vcodec copy -acodec copy result.mp4
最終實(shí)現(xiàn)項(xiàng)目的視頻效果如下。
如果你想生成GIF,分享給其他人,比如整蠱你的好朋友。
同樣可以使用FFmpeg生成GIF。
# 生成GIF
ffmpeg -ss 0 -t 8 -i result.mp4 -s 600*400 -r 15 result.gif
需要設(shè)定視頻截取時(shí)間及GIF圖像大小。
好了,到此本期的實(shí)踐就結(jié)束了。
相關(guān)代碼及文件已上傳,公眾號(hào)回復(fù)「螞蟻呀嘿」即可獲取。
感興趣的小伙伴也可以動(dòng)手試一試。
這里需要注意,在使用PaddleGAN對(duì)人臉進(jìn)行動(dòng)作表情遷移,這期間耗費(fèi)的時(shí)間比較多,慢慢等就好了。
萬水千山總是情,點(diǎn)個(gè) ?? 行不行。
掃碼回復(fù):2021 獲取最新學(xué)習(xí)資源
加群 加入Python學(xué)習(xí)交流群
▲點(diǎn)擊上方卡片,一起學(xué)Python
學(xué)習(xí)更多: 整理了我開始分享學(xué)習(xí)筆記到現(xiàn)在超過250篇優(yōu)質(zhì)文章,涵蓋數(shù)據(jù)分析、爬蟲、機(jī)器學(xué)習(xí)等方面,別再說不知道該從哪開始,實(shí)戰(zhàn)哪里找了
“點(diǎn)贊”傳統(tǒng)美德不能丟 
