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