Python+AI讓靜態(tài)圖片動(dòng)起來
?哈嘍,大家好。
大家在刷短視頻的時(shí)候有沒有刷到這樣的視頻,視頻里一張靜態(tài)的人物圖片能動(dòng)起來,如:歪歪頭、眨眨眼。
類似于下面這種效果
最左側(cè)的人物是原始的動(dòng)作,上面是靜態(tài)圖片。通過AI技術(shù)便可以讓最左側(cè)人物的動(dòng)作運(yùn)用到上面的靜態(tài)圖片上,從而讓張圖都可以做出相同的動(dòng)作。
這種技術(shù)一般是基于的GAN(生成對(duì)抗網(wǎng)絡(luò))來實(shí)現(xiàn),今天我給大家分享一個(gè)開源項(xiàng)目,能夠復(fù)現(xiàn)上面的效果,可以做些有趣的項(xiàng)目,也可以懷念故人。
1. 運(yùn)行項(xiàng)目
項(xiàng)目地址:https://github.com/AliaksandrSiarohin/first-order-model
首先,git clone將項(xiàng)目下載到本地,進(jìn)入項(xiàng)目安裝依賴。
git clone https://github.com/AliaksandrSiarohin/first-order-model.git
cd first-order-model
pip install -r requirements.txt
然后,在項(xiàng)目首頁P(yáng)re-trained checkpoint?標(biāo)題下,找到模型下載鏈接,下載模型文件,模型有很多,我用的是vox-adv-cpk.pth.tar。
準(zhǔn)備好模型文件后,在項(xiàng)目根目錄下執(zhí)行下面命令即可。
python demo.py \
--config config/vox-adv-256.yaml \
--driving_video src_video.mp4 \
--source_image src_img.jpg \
--checkpoint weights/vox-adv-cpk.pth.tar
解釋下參數(shù):
- --config:模型配置文件,在源文件中有
- --driving_video:提供動(dòng)作的視頻
- --source_image:需要加動(dòng)效的靜態(tài)圖片
- --checkpoint:剛剛下載的模型文件
運(yùn)行完成后,會(huì)看到如下輸入。
該項(xiàng)目使用PyTorch?搭建神經(jīng)網(wǎng)絡(luò),支持GPU和CPU?運(yùn)行,所以如果你的電腦只有CPU,運(yùn)行會(huì)比較慢。
我是在CPU?下運(yùn)行的,從上圖可以看到,driving_video?只有 31 幀。如果你也是CPU?運(yùn)行,最好控制driving_video視頻的時(shí)長,不然運(yùn)行時(shí)長會(huì)比較長。
有了該項(xiàng)目,可以自己做些比較有意思的嘗試。
2. Python API
上面教大家按照官網(wǎng)在命令行運(yùn)行該項(xiàng)目。
有些朋友可能想在Python?項(xiàng)目中調(diào)用,所以我在demo.py?中抽取了核心代碼,封裝了一個(gè)Pyhton API。
有需要的朋友可以下載這個(gè)文件,放到與first-order-model同一級(jí)的目錄下,按照下面代碼調(diào)用即可。
fom = FOM()
# 查看驅(qū)動(dòng)視頻,驅(qū)動(dòng)視頻最好裁剪為480 x 640 大小的視頻
driving_video = ''
# 被驅(qū)動(dòng)的畫面
source_image = ''
# 輸出視頻
result_video = ''
# 驅(qū)動(dòng)畫面
fom.img_to_video(driving_video, source_image, result_video)