手把手實(shí)現(xiàn)火爆全網(wǎng)的視頻特效 “螞蟻呀嘿”,太魔性了
點(diǎn)擊上方“AI算法與圖像處理”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
導(dǎo)讀
Hi,大家好,今天是周末,今天給各位讀者分享最近很火的視頻特效。
將會(huì)依據(jù)現(xiàn)有的demo,一步步去分析原理,并最終實(shí)現(xiàn)。
思路簡介
首先看一下目標(biāo)效果(下面放的是 gif,我們需要的是視頻,需要添加背景音樂)

明確目標(biāo)之后,接下來就是進(jìn)一步去分解具體的技術(shù)實(shí)現(xiàn)。
參考網(wǎng)上的實(shí)現(xiàn)方法:
采用 APP
Avatarify
Avatarify
操作步驟:
打開這款軟件Avatarify,選擇一張照片即可進(jìn)入選擇特效頁面
即:需要一張圖片 + 一個(gè)想要的特效視頻
具體的原理:
讓一張照片動(dòng)起來,人臉跟著音樂一起擠眉弄眼,需要一個(gè)叫做一階運(yùn)動(dòng)模型 (First Order Motion Model)來搞定。
技術(shù)原理借鑒了去年意大利特倫托大學(xué)的一項(xiàng)研究,入選了NIPS 2019。

當(dāng)時(shí)的例子是這樣的。

當(dāng)然上面的操作僅僅只能用于畫面的特效,沒有聲音,因此,我們需要添加聲音,同時(shí)如果想要分享到朋友圈的話,還需要一定的處理將視頻的編碼格式變成H264。
下面我將一步步操作
詳細(xì)教程
https://github.com/anandpawara/Real_Time_Image_Animation
本文所有操作均在ubuntu 20.04 下操作,如需windows或mac下操作,請自行搜索相應(yīng)的解決方案
1)從 github 克隆項(xiàng)目
git clone git@github.com:anandpawara/Real_Time_Image_Animation.git
pip install -r requirements.txt
ERROR: Could not find a version that satisfies the requirement pywin32==227 ERROR: No matching distribution found for pywin32==227
暫時(shí)不處理 !!!
python image_animation.py -i path_to_input_file -c path_to_checkpoint -v path_to_video_file
path_to_input_file 是輸入的圖片(例如你相對蒙娜麗莎進(jìn)行變換,這里輸入即她的照片)
path_to_checkpoint 是權(quán)重文件路徑(需要從項(xiàng)目中的下載)
path_to_video_file 是輸入的視頻文件(含動(dòng)作的視頻文件)
python image_animation.py -i Inputs/Monalisa.png -c checkpoints/vox-cpk.pth.tar -v 1.mp4
如果運(yùn)行成功,最后生成的視頻存放在 output 文件夾下。
當(dāng)然由于上述環(huán)境安裝問題,導(dǎo)致會(huì)報(bào)錯(cuò) :
No module named 'tqdm'
No module named 'imageio'
No module named 'skimage'
No module named 'sklearn'
No module named 'pandas'
No module named 'yaml'
No module named 'cv2'
這是常見問題,缺失必要的包,但在國內(nèi)安裝的時(shí)候,如果直接 pip install 進(jìn)行安裝可能會(huì)存在網(wǎng)速太慢的問題,導(dǎo)致失敗或者浪費(fèi)了大量的時(shí)間,可以考慮換源或指定源的方式來快速下載
這里給出指定源的方法
參考:https://www.cnblogs.com/flintlovesam/p/12833652.html
例如想要安裝 imageio,在后面添加 -i + 源 即可
pip install imageio -i https://mirrors.aliyun.com/pypi/simple/
同樣的問題,這里用到了 pytorch,國內(nèi)安裝也會(huì)遇到上述的問題,這里也采用指定源的方式解決 (安裝 GPU 版本 pytorch, 版本 1.5.0)
pip install torch===1.5.0+cu101 torchvision===0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.douban.com/simple/ some-package
注意:這里我的是cuda版本是10.1,大家根據(jù)自己的情況進(jìn)行調(diào)整 如果安裝速度慢,可以考慮換源 或以制定源的方法安裝
參考:https://blog.csdn.net/qq_36414085/article/details/106369314
上訴操作成功后,再次運(yùn)行,此時(shí) output文件夾下即有結(jié)果出來
python image_animation.py -i Inputs/Monalisa.png -c checkpoints/vox-cpk.pth.tar -v 1.mp4
上述的操作,就這個(gè)項(xiàng)目能實(shí)現(xiàn)的基本功能,實(shí)現(xiàn)動(dòng)作遷移,下面我們將對進(jìn)行一些修改來達(dá)到我們的最終目標(biāo)!
大致內(nèi)容:
1)畫面修改
2)添加背景音樂
3)視頻格式轉(zhuǎn)換
優(yōu)化
1)畫面修改
存在的問題:
1、幀數(shù)問題:
素材幀數(shù)-15 FPS
生成的視頻結(jié)果的設(shè)置幀數(shù) 為 12 FPS 會(huì)導(dǎo)致音畫不同步
2、畫面尺寸問題:
由于這個(gè)項(xiàng)目的作者將最終的顯示結(jié)果設(shè)置為
原圖--生成視頻--原始視頻 的結(jié)果形式,
而我們最終只想要 生成的視頻,所以還需要進(jìn)行一定的修改(從256*3,256)變成(256,256)

具體修改
# 文件 image_animation.py# 第50行# out1 = cv2.VideoWriter('output/test.avi', fourcc, 12, (256*3 , 256), True)# 修改輸出視頻格式 幀數(shù)和視頻輸出的尺寸out1 = cv2.VideoWriter('output/test.avi', fourcc, 15, (256 , 256), True)
同時(shí)修改保存的結(jié)果:
# 文件 image_animation.py# 重點(diǎn)關(guān)注joinedFrame = np.concatenate((cv2_source,im,frame1),axis=1)cv2.imshow('Test',joinedFrame)out1.write(img_as_ubyte(joinedFrame))# 修改成out1.write(img_as_ubyte(im))
備注:
獲取視頻幀數(shù)的方法
import cv2cap = cv2.VideoCapture("test.avi")print(cap.get(cv2.CV_CAP_PROP_FPS )
參考https://zhuanlan.zhihu.com/p/56571623
2)添加背景音樂
這里需要安裝moviepy 包
pip install moviepy
如果遇到問題可以考慮下面的處理方法
sudo pip install ez_setuppip install --user moviepy -ignore-installed -i https://mirrors.aliyun.com/pypi/simple/
參考:https://blog.csdn.net/weixin_38636815/article/details/106539049
https://blog.csdn.net/qq_43058685/article/details/104221009
添加背景音樂
from moviepy.editor import *video_path = 'test.avi'audio_path = 'test.wav'video = VideoFileClip(video_path)audio_clip = AudioFileClip(audio_path)video = video.set_audio(audio_clip)video.write_videofile('result-myyh.mp4')
3)視頻格式轉(zhuǎn)換
安裝ffmpeg
微信:不能分享這種格式(MP4)的視頻的問題原因以及解決方案 上傳H.264編碼格式的MP4視頻,否則借助第三方轉(zhuǎn)換軟件轉(zhuǎn)換成H.264編碼格式的MP4視頻即可。ffmpeg
https://jingyan.baidu.com/article/27fa732646092846f9271f71.html (安裝教程)https://zhuanlan.zhihu.com/p/200783234
ffmpeg -i result-myyh.mp4 -vcodec libx264 -f mp4 result.mp4
上述代碼在終端中運(yùn)行,將 result-myyh.mp4 生成我們需要的編碼格式視頻文件result.mp4 (外放的話注意音量哦)
總結(jié)
本文詳細(xì)分析,并一步步拆解現(xiàn)有的方案,最終實(shí)現(xiàn)的效果如上所示,所有相關(guān)的代碼已放在公眾號(hào)后臺(tái),回復(fù)“視頻特效” 即可獲取
感謝看到這里的小伙伴,希望能給個(gè)三連支持一下,周末還在加班的打工人!下期見
參考文獻(xiàn):
https://github.com/anandpawara/Real_Time_Image_Animation
https://www.cnblogs.com/flintlovesam/p/12833652.html
https://blog.csdn.net/qq_36414085/article/details/10636931
https://blog.csdn.net/weixin_38636815/article/details/106539049
https://blog.csdn.net/qq_43058685/article/details/104221009
-
https://jingyan.baidu.com/article/27fa732646092846f9271f71.html -
https://github.com/opencv/opencv-python/issues/100 -
http://www.blogdaren.com/post-2592.html -
https://zhuanlan.zhihu.com/p/200783234
個(gè)人微信(如果沒有備注不拉群!) 請注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱
下載1:何愷明頂會(huì)分享
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析
下載2:終身受益的編程指南:Google編程風(fēng)格指南
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):c++,即可下載。歷經(jīng)十年考驗(yàn),最權(quán)威的編程規(guī)范!
下載3 CVPR2020
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):CVPR2020,即可下載1467篇CVPR 2020論文
覺得不錯(cuò)就點(diǎn)亮在看吧
![]()
