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

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

如此就能在PyCharm項目的虛擬環(huán)境中,進行相關的安裝操作了。
# 終端打開文件夾
cd PaddleGAN
# 安裝相關依賴
pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
pip install imageio-ffmpeg -i https://mirror.baidu.com/pypi/simple
終端打開文件夾,安裝所需要的依賴。
畢竟是百度的開源項目,所以使用了百度的pip源,速度真的很快。
下面再創(chuàng)建一個輸出文件夾,生成的視頻會保存在這里。
# 打開文件夾
cd applications/
# 新建文件夾
mkdir output
最后還需要安裝百度的paddlepaddle和paddlehub。
paddlepaddle是基礎,而paddlehub則是用來檢測人臉用的。
將「輸入圖片」中的所有人臉檢測出來,然后使用PaddleGAN對每個人臉進行表情遷移,最后生成視頻。
# 安裝庫
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
pip install paddlehub -i https://mirror.baidu.com/pypi/simple
下面就可在終端運行如下命令。
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

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

對于其他的視頻特效,就需要更改驅動視頻,即修改driving_video。
另外生成的視頻是不帶聲音的,所以需要使用FFmpeg將視頻與音頻進行合并。
# 視頻和音頻合并
ffmpeg -i MaYiYaHei.mp4 -i MYYH.mp3 -vcodec copy -acodec copy result.mp4
最終實現(xiàn)項目的視頻效果如下。
如果你想生成GIF,分享給其他人,比如整蠱你的好朋友。
同樣可以使用FFmpeg生成GIF。
# 生成GIF
ffmpeg -ss 0 -t 8 -i result.mp4 -s 600*400 -r 15 result.gif
需要設定視頻截取時間及GIF圖像大小。
好了,到此本期的實踐就結束了。
相關代碼及文件已上傳,公眾號回復「螞蟻呀嘿」即可獲取。
感興趣的小伙伴也可以動手試一試。
這里需要注意,在使用PaddleGAN對人臉進行動作表情遷移,這期間耗費的時間比較多,慢慢等就好了。
萬水千山總是情,點個 ?? 行不行。

利用Python做一個小姐姐詞云跳舞視頻

Python自動化辦公之Word,全網最全看這一篇就夠了
