最近小F在抖音上看到很多「螞蟻呀嘿」的魔性視訊,各方大佬齊齊上陣。
剛好看到百度的開源項目,基于PaddleGAN實作表情遷移,于是也來玩一把!
先來看一下小F的成果,各大程式設計創始人齊唱「螞蟻呀嘿」!
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICMyYTMvw1dvwlMvwlM3VWaWV2Zh1Wa-YWan5yZtNjYwdGMsZmdvwVO5UzM0MjNtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.gif)
沒配音,感覺不是很精彩,後面上視訊。
那麼需要如何實作呢,下面小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項目的虛拟環境中,進行相關的安裝操作了。
# 終端打開檔案夾
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源,速度真的很快。
下面再建立一個輸出檔案夾,生成的視訊會儲存在這裡。
# 打開檔案夾
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,就是程式設計創始人集合照,如下圖。
對于其他的視訊特效,就需要更改驅動視訊,即修改driving_video。
另外生成的視訊是不帶聲音的,是以需要使用FFmpeg将視訊與音頻進行合并。
# 視訊和音頻合并
ffmpeg -i MaYiYaHei.mp4 -i MYYH.mp3 -vcodec copy -acodec copy result.mp4
複制
最終實作項目的視訊效果如下。
如果你想生成GIF,分享給其他人,比如整蠱你的好朋友。
同樣可以使用FFmpeg生成GIF。
# 生成GIF
ffmpeg -ss 0 -t 8 -i result.mp4 -s 600*400 -r 15 result.gif
複制
需要設定視訊截取時間及GIF圖像大小。