太魔性了,用 Python 實(shí)現(xiàn)火爆全網(wǎng)的「螞蟻呀嘿」視頻特效!
大家好,我是安果!
最近在抖音上看到很多「螞蟻呀嘿」的魔性視頻,各方大佬齊齊上陣
剛好看到百度的開(kāi)源項(xiàng)目,基于 PaddleGAN 實(shí)現(xiàn)表情遷移,于是也來(lái)玩一把!
先來(lái)看一下生成的效果圖,各大編程創(chuàng)始人齊唱「螞蟻呀嘿」!

沒(méi)配音,感覺(jué)不是很精彩,后面上視頻。
那么需要如何實(shí)現(xiàn)呢,下面小F來(lái)手把手教學(xué)。
參考地址:
https://aistudio.baidu.com/aistudio/projectdetail/1586056
PS:目前該項(xiàng)目適合在 Windows 和 Linux 上操作,Mac 在調(diào)用 ffmpeg 這一步會(huì)出錯(cuò)
不知道是不是和 Mac 不支持 gpu 安裝 paddlepaddle 有關(guān)系
首先,從碼云上將 PaddleGAN 的源碼下載下來(lái)
# 從gitee上克隆PaddleGAN代碼
git clone https://gitee.com/paddlepaddle/
下載解壓后,使用 PyCharm 打開(kāi)項(xiàng)目文件

如此,就能在 PyCharm 項(xiàng)目的虛擬環(huán)境中,進(jìn)行相關(guān)的安裝操作了
# 終端打開(kāi)文件夾
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
終端打開(kāi)文件夾,安裝所需要的依賴庫(kù)
畢竟是百度的開(kāi)源項(xiàng)目,所以使用了百度的 pip 源,速度真的很快
下面再創(chuàng)建一個(gè)輸出文件夾,生成的視頻會(huì)保存在這里
# 打開(kāi)文件夾
cd applications/
# 新建文件夾
mkdir output
最后,還需要安裝百度的 paddlepaddle 和 paddlehub
其中,
paddlepaddle 是基礎(chǔ)
paddlehub 則是用來(lái)檢測(cè)人臉用的
將「輸入圖片」中的所有人臉檢測(cè)出來(lái),然后使用 PaddleGAN 對(duì)每個(gè)人臉進(jìn)行表情遷移,最后生成視頻
# 安裝庫(kù)
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ù)說(shuō)明如下
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ì)的圖片,生成你想要的視頻
比如,我選擇了一張編程創(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)代碼及資源文件已上傳,后臺(tái)回復(fù)「 螞蟻 」關(guān)鍵字即可獲取
感興趣的小伙伴也可以動(dòng)手試一試。
這里需要注意,在使用 PaddleGAN 對(duì)人臉進(jìn)行動(dòng)作表情遷移,這期間耗費(fèi)的時(shí)間比較多,慢慢等就好了!

