化身“阿凡達(dá)”,國(guó)外小哥開(kāi)源 AI 實(shí)時(shí)變臉工具 Avatarify
疫情期間,很多人都在用 Zoom 和 Skype 等軟件進(jìn)行視頻會(huì)議。國(guó)外一位開(kāi)發(fā)小哥覺(jué)得這樣開(kāi)會(huì)太無(wú)聊,于是基于 first-order-model 開(kāi)發(fā)了一個(gè)能夠把別人的照片套在自己臉上的“變臉”軟件 Avatarify,并將其開(kāi)源。
看過(guò)電影阿凡達(dá)(Avatar)的朋友應(yīng)該對(duì)這款軟件的立意并不陌生,簡(jiǎn)單理解就是把別人的臉套在自己的表情上實(shí)時(shí)驅(qū)動(dòng)。Avatarify 的作者 Ali Aliev 最初只是想逗一下在 ZOOM 上開(kāi)會(huì)的同事,在視頻會(huì)議期間將一些名人的臉實(shí)時(shí)疊加到自己的臉上。于是他參考了發(fā)表在 arxiv 上的一篇論文 “First Order Motion Model for Image Animation”,并基于論文中的開(kāi)源項(xiàng)目 first-order-model 構(gòu)建了 Avatarify。如圖所示,作者使用 Avatarify 模仿馬斯克與同事進(jìn)行視頻會(huì)議:
與其他 AI 人臉交換技術(shù)(如 deepfakes)類(lèi)似,Avatarify 的算法是在你想交換的臉上訓(xùn)練的,即訓(xùn)練材料是你想要模仿的人的臉部圖像。該模型通過(guò)在目標(biāo)的相似類(lèi)別(比如人臉)上訓(xùn)練算法,實(shí)現(xiàn)了面部表情的實(shí)時(shí)呈現(xiàn)。但由于該軟件對(duì)視頻進(jìn)行的是實(shí)時(shí)處理,即需要同時(shí)打開(kāi)視頻會(huì)議、Avatarify 等軟件,因此對(duì)于 GPU 的要求比較高(作者用的是 1080 Ti,勉強(qiáng)達(dá)到 33 FPS)。
測(cè)試環(huán)境GPU :越強(qiáng)越好,以下是作者使用的不同顯卡的幀數(shù)參考:
GeForce GTX 1080 Ti:每秒 33 幀
GeForce GTX 1070:每秒 15 幀
GeForce GTX 950:每秒 9 幀
可以看到 1080 Ti 才能勉強(qiáng)不掉幀,想玩的同學(xué)量力而行......
PS:也可以在 Google 的 Colab 上進(jìn)行遠(yuǎn)程測(cè)試,用谷歌的硬件來(lái)跑,在國(guó)外的朋友可以試試。
攝像頭一個(gè)
下載訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)權(quán)值:
Dropbox
Yandex.Disk
Google Drive
不同操作系統(tǒng)的朋友往下看:
Linux
使用v4l2loopback創(chuàng)建虛擬攝像頭
1.下載 Miniconda Python 3.7 ,運(yùn)行安裝命令:
bash Miniconda3-latest-Linux-x86_64.sh
2.克隆 avatarify 鏡像倉(cāng)庫(kù),并安裝相關(guān)依賴(lài)項(xiàng) (需要 sudo 權(quán)限):
git clone https://github.com/alievk/avatarify.gitcd avatarifybash scripts/install.sh
3.把之前下好的網(wǎng)絡(luò)權(quán)值文件vox-adv-cpk.pth.tar 放在 avatarify 的目錄下 (注意不要解壓)。
Windows 10
1. 安裝 Miniconda Python 3.7 。
2. 安裝 Git 。
3. 點(diǎn)擊開(kāi)始菜單,在運(yùn)行中輸入"miniconda". 根據(jù)提示運(yùn)行 Anaconda Prompt 。
4. 輸入以下指令下載并安裝 Avatarify :
git clone https://github.com/alievk/avatarify.gitcd avatarifyscriptsinstall_windows.bat
5. 把之前下好的網(wǎng)絡(luò)權(quán)值文件 vox-adv-cpk.pth.tar 放在 avatarify 的目錄下 (注意不要解壓)。
6. 運(yùn)行 run_windows.bat 如果安裝成功,桌面會(huì)打開(kāi)兩個(gè)攝像頭界面(一個(gè)是默認(rèn)攝像頭,一個(gè)是 avatarify 攝像頭),不要關(guān)閉它們進(jìn)行下一步。
7. 安裝 OBS Studio 以抓取 Avatarify 攝像頭的內(nèi)容(主播直播常用的后臺(tái)軟件)。
8. 安裝 VirtualCam 插件. 選擇 Install and register only 1 virtual camera.
9. 運(yùn)行 OBS Studio。
10. 點(diǎn)擊來(lái)源一欄中的“+” —— 窗口捕獲 —— 選擇添加現(xiàn)有一欄中的 "[python.exe]: avatarify" —— 編輯 —— 轉(zhuǎn)換 —— 自適應(yīng)屏幕。
11. 在 OBS Studio 中, 點(diǎn)擊工具欄 —— VirtualCam,選擇自動(dòng)啟動(dòng),緩沖幀設(shè)置為 0,開(kāi)始。
現(xiàn)在 OBS-Camera可以在 ZOOM 或其他視頻會(huì)議軟件中使用了。(10-11 步只需要設(shè)置一次)
創(chuàng)建 Avatar 庫(kù)除了 Linux 和 Windows 10 以外,作者還提供了 Mac 操作系統(tǒng)和一種連入 Google 平臺(tái)的遠(yuǎn)程測(cè)試方法,詳情請(qǐng)點(diǎn)擊。
作者在 Avatarify 項(xiàng)目中提供了一組名人的標(biāo)準(zhǔn)化身(愛(ài)因斯坦、蒙娜麗莎等),你也可以把其他你想變成的名人的圖片素材放到 avatars 文件夾里,但注意要遵循以下規(guī)則:
1、人物圖片最好為正方形。
2、參考文件夾里的默認(rèn)圖片,人物面部距離不宜太遠(yuǎn)或太近。
3、人物圖片背景不宜太過(guò)復(fù)雜,單一色調(diào)為佳。
運(yùn)行先打開(kāi) Avatarify 再打開(kāi)視頻會(huì)議軟件。
Linux
運(yùn)行腳本指令創(chuàng)建虛擬攝像機(jī) /dev/video9,可在 scripts/settings.sh修改對(duì)應(yīng)配置。
可以運(yùn)行指令 v4l2-ctl--list-devices 顯示系統(tǒng)中的所有設(shè)備。
運(yùn)行:
bash run.sh
彈出 cam 和 avatarify 窗口, cam 窗口用來(lái)控制面部位置, avatarify 窗口可以預(yù)覽 Avatar。
Windows 10
在 Anaconda Prompt 中運(yùn)行:
cd C:pathtoavatarifyrun_windows.bat
打開(kāi) OBS Studio,此時(shí)OBS-Camera上將顯示 Avatarify 處理后的人物面部。
2. 彈出cam 和 avatarify 窗口, cam 窗口用來(lái)控制面部位置,avatarify 窗口可以預(yù)覽 Avatar。
注意:如果視頻延遲過(guò)高,可以在 OBS Studio 中右鍵單擊“預(yù)覽”窗口,然后取消選中“啟用預(yù)覽”。
操作指令按鍵
功能
1-9
快速切換準(zhǔn)備好的 Avatar
Q
打開(kāi) StyleGAN 生成的 Avatar,每按下一次新的 Avatar 會(huì)被采樣
0
開(kāi)啟/關(guān)閉 Avatar
A/D
切換上一個(gè)/下一個(gè) Avatar
W/S
打開(kāi)/關(guān)閉 ZOOM 攝像頭
U/H/J/K
調(diào)整攝像頭位置, H - 左移, K - 右移, U - 上移, J - 下移 (每次移動(dòng) 5 像素,與 Shift 鍵一起按移動(dòng) 1 像素)。
Shift-Z
重置攝像頭位置
Z/C
調(diào)整原像透明度
X
重置參考幀
F
切換參考幀搜索模式
R
Mirror reference window.
T
Mirror output window.
L
重新載入 Avatar
I
顯示 FPS
ESC
退出
Avatarify 支持任何視頻會(huì)議應(yīng)用程序,只要其中的視頻輸入源可以更改即可(ZOOM、Skype、Hangouts、Slack…)。聰明的朋友已經(jīng)準(zhǔn)備好了吳彥祖的 Avatar,開(kāi)始和你的朋友視頻吧。(當(dāng)然,前提是你得有個(gè) 1080 Ti 以上的顯卡)