疫情期間,很多人都在用 Zoom 和 Skype 等軟體進行影片會議。國外一位開發小哥覺得這樣開會太無聊,於是基於 first-order-model 開發了一個能夠把別人的照片套在自己臉上的“變臉”軟體 Avatarify,並將其開源。
看過電影阿凡達(Avatar)的朋友應該對這款軟體的立意並不陌生,簡單理解就是把別人的臉套在自己的表情上實時驅動。Avatarify 的作者 Ali Aliev 最初只是想逗一下在 ZOOM 上開會的同事,在影片會議期間將一些名人的臉實時疊加到自己的臉上。於是他參考了發表在 arxiv 上的一篇論文 “First Order Motion Model for Image Animation”,並基於論文中的開源專案 first-order-model 構建了 Avatarify。如圖所示,作者使用 Avatarify 模仿馬斯克與同事進行影片會議:
與其他 AI 人臉交換技術(如 deepfakes)類似,Avatarify 的演算法是在你想交換的臉上訓練的,即訓練材料是你想要模仿的人的臉部影象。該模型透過在目標的相似類別(比如人臉)上訓練演算法,實現了面部表情的實時呈現。但由於該軟體對影片進行的是實時處理,即需要同時開啟影片會議、Avatarify 等軟體,因此對於 GPU 的要求比較高(作者用的是 1080 Ti,勉強達到 33 FPS)。
GeForce GTX 1080 Ti:每秒 33 幀
GeForce GTX 1070:每秒 15 幀
GeForce GTX 950:每秒 9 幀
可以看到 1080 Ti 才能勉強不掉幀,想玩的同學量力而行......
PS:也可以在 Google 的 Colab 上進行遠端測試,用谷歌的硬體來跑,在國外的朋友可以試試。
不同作業系統的朋友往下看:
Linux
使用v4l2loopback
建立虛擬攝像頭
1.下載 Miniconda Python 3.7 ,執行安裝命令:
bash Miniconda3-latest-Linux-x86_64.sh
2.克隆 avatarify 映象倉庫,並安裝相關依賴項 (需要 sudo 許可權):
git clone https://github.com/alievk/avatarify.git cd avatarify bash scripts/install.sh
3.把之前下好的網路權值檔案vox-adv-cpk.pth.tar
放在 avatarify 的目錄下 (注意不要解壓)。
Windows 10
1. 安裝 Miniconda Python 3.7 。
2. 安裝 Git 。
3. 點選開始選單,在執行中輸入"miniconda". 根據提示執行 Anaconda Prompt 。
4. 輸入以下指令下載並安裝 Avatarify :
git clone https://github.com/alievk/avatarify.git cd avatarify scriptsinstall_windows.bat
5. 把之前下好的網路權值檔案 vox-adv-cpk.pth.tar
放在 avatarify 的目錄下 (注意不要解壓)。
6. 執行 run_windows.bat
如果安裝成功,桌面會開啟兩個攝像頭介面(一個是預設攝像頭,一個是 avatarify 攝像頭),不要關閉它們進行下一步。
7. 安裝 OBS Studio 以抓取 Avatarify 攝像頭的內容(主播直播常用的後臺軟體)。
8. 安裝 VirtualCam 外掛. 選擇 Install and register only 1 virtual camera
.
9. 執行 OBS Studio。
10. 點選來源一欄中的“+” —— 視窗捕獲 —— 選擇新增現有一欄中的 "[python.exe]: avatarify" —— 編輯 —— 轉換 —— 自適應螢幕。
11. 在 OBS Studio 中, 點選工具欄 —— VirtualCam,選擇自動啟動,緩衝幀設定為 0,開始。
現在 OBS-Camera
可以在 ZOOM 或其他影片會議軟體中使用了。(10-11 步只需要設定一次)
除了 Linux 和 Windows 10 以外,作者還提供了 Mac 作業系統和一種連入 Google 平臺的遠端測試方法,詳情請點選。
作者在 Avatarify 專案中提供了一組名人的標準化身(愛因斯坦、蒙娜麗莎等),你也可以把其他你想變成的名人的圖片素材放到 avatars 資料夾裡,但注意要遵循以下規則:
1、人物圖片最好為正方形。
2、參考資料夾裡的預設圖片,人物面部距離不宜太遠或太近。
3、人物圖片背景不宜太過複雜,單一色調為佳。
先開啟 Avatarify 再開啟影片會議軟體。
Linux
執行指令碼指令建立虛擬攝像機 /dev/video9
,可在 scripts/settings.sh
修改對應配置。
可以執行指令 v4l2-ctl--list-devices
顯示系統中的所有裝置。
執行:
bash run.sh
彈出 cam
和 avatarify
視窗, cam
視窗用來控制面部位置, avatarify
視窗可以預覽 Avatar。
Windows 10
cd C:pathtoavatarify run_windows.bat
OBS-Camera
上將顯示 Avatarify 處理後的人物面部。cam
和 avatarify
視窗, cam
視窗用來控制面部位置,avatarify
視窗可以預覽 Avatar。注意:如果影片延遲過高,可以在 OBS Studio 中右鍵單擊“預覽”視窗,然後取消選中“啟用預覽”。
按鍵 |
功能 |
1-9 |
快速切換準備好的 Avatar |
Q |
開啟 StyleGAN 生成的 Avatar,每按下一次新的 Avatar 會被取樣 |
0 |
開啟/關閉 Avatar |
A/D |
切換上一個/下一個 Avatar |
W/S |
開啟/關閉 ZOOM 攝像頭 |
U/H/J/K |
調整攝像頭位置, H - 左移, K - 右移, U - 上移, J - 下移 (每次移動 5 畫素,與 Shift 鍵一起按移動 1 畫素)。 |
Shift-Z |
重置攝像頭位置 |
Z/C |
調整原像透明度 |
X |
重置參考幀 |
F |
切換參考幀搜尋模式 |
R |
Mirror reference window. |
T |
Mirror output window. |
L |
重新載入 Avatar |
I |
顯示 FPS |
ESC |
退出 |
Avatarify 支援任何影片會議應用程式,只要其中的影片輸入源可以更改即可(ZOOM、Skype、Hangouts、Slack…)。聰明的朋友已經準備好了吳彥祖的 Avatar,開始和你的朋友影片吧。(當然,前提是你得有個 1080 Ti 以上的顯示卡)
[admin
]