2018年4月,針對如何解決所有姿勢範圍内的面部替換,中科院自動化所的研究人員發表了一篇論文,提出了3D實時解決方法。
近日,Github一位作者cleardusk(首頁:https://github.com/cleardusk,目前是中科院自動化所的在讀博士生)将“3D實時換臉”PyTorch實作改進版,每張圖的推理時間隻需0.27毫秒!
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLycTY1QWZ5QTZ3EjM1kjY4UTOkZ2YlNzM3ITY4MGMwI2NwQ2M1MzMi9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
這一改進版本幫助Pytorch改進了論文《所有姿态範圍内的面部替換:3D解決方案》中提到的方法。該論文的作者之一是來自中科院自動化所的Xiangyu Zhu,根據其個人首頁上的資訊,他和cleardusk博士期間的導師均是李子青教授,二人可以說是同門師兄弟。
面部對齊使面部模型适合圖像并提取面部像素點的語義,已成為計算機視覺領域中的一個重要主題。此前,大多數算法都是針對中小姿态(偏角小于45度)的面部而設計的,缺乏在高達90度的大幅度姿态中對齊面部的能力,這一論文就是針對所有姿态範圍内的面部替換所提出來的方法。
而此次這位博士生提出的改進版本還增加了一些額外的工作,包括實時教育訓練、教育訓練政策等,而不僅僅是重新實作“3D實時換臉”。更詳細的内容未來将會釋出在相關部落格中,包括一些重要的技術細節。到目前為止,這個改進版本釋出了預訓練第一階段的pytorch模型,其中包括MobileNet-V1結構、訓練資料集和代碼。在GeForce GTX TITAN X上,每張圖像的推理時間約為0.27毫秒(輸入批量為128 的情況下)。
以下是關于ALFW-2000資料集的幾個訓練結果(根據模型phase1_wpdc_vdc.pth.tar進行推斷):
那麼,改進版能實作哪些應用呢?
首先,它能夠實作面部對齊。
如何入門:要求與用法
如果要着手嘗試改進版,那麼你需要:
● PyTorch >= 0.4.1
● Python >= 3.6 (Numpy, Scipy, Matplotlib)
● Dlib (Dlib用于檢測面部和标志。如果你可以提供面部邊框線和标志,則無需使用Dlib。可選擇性地,你可以使用兩步推理政策而無需初始化這些資料。)
● OpenCV(Python版,用于圖像IO操作。)
# 安裝順序:
sudo pip3 安裝torch torchvision。更多選擇點選:https://pytorch.org
sudo pip3 安裝numpy,scipy,matplotlib
sudo pip3 安裝dlib==19.5.0 # 19.15+ 版本,這可能會導緻與pytorch沖突,大概需要幾分鐘
sudo pip3 安裝opencv-python版
此外,強烈建議使用Python3.6 +而不是舊版,這樣可以實作更好的設計。
接下來具體用法如下:
1、複制下面這個改進版(這可能需要一些時間,因為它有點大)
https://github.com/cleardusk/3DDFA.git或者[email protected]:cleardusk/3DDFA.gitcd 3DDFA
2、使用任意圖像作為輸入,運作main.py:python3 main.py -f samples/test1.jpg
如果你可以在終端中看到這些輸出記錄,就可以成功運作它:
Dump tp samples/test1_0.ply
Dump tp samples/test1_0.mat
Save 68 3d landmarks to samples/test1_0.txt
Dump tp samples/test1_1.ply
Dump tp samples/test1_1.mat
Save 68 3d landmarks to samples/test1_1.txt
Save visualization result to samples/test1_3DDFA.jpg
因為test1.jpg有兩張人臉,是以有兩個mat(存儲密集面頂點,可以通過Matlab渲染)和ply檔案(可以由Meshlab或Microsoft 3D Builder渲染)預測。
結果samples/test1_3DDFA.jpg如下所示:
附加示例:
python3 ./main.py -f samples/emma_input.jpg --box_init=two --dlib_bbox=false
當輸入批量為128 的情況下,MobileNet-V1的推理時間約為34.7毫秒,平均每張圖像的推理時間約為0.27毫秒。
評估與訓練資源
首先,你需要下載下傳壓縮的測試集ALFW和ALFW-2000-3D(下載下傳連結:https://pan.baidu.com/s/1DTVGCG5k0jjjhOc8GcSLOw) ,下載下傳後解壓并将其放在根目錄中。接下來,通過提供訓練的模型路徑來運作基準代碼。我已經在models目錄中提供了四個預先訓練的模型。這些模型在第一階段使用不同的損失進行訓練。由于MobileNet-V1結構的高效率,模型大小約為13M。
在第一階段,不同損失的有效性依次為:WPDC> VDC> PDC,使用VDC來微調WPDC的方法取得了最好的結果,預訓練模型的性能如下所示:
訓練腳本位于training目錄中,相關資源如下:
1、train.configs(217M),連結:
https://pan.baidu.com/s/1ozZVs26-xE49sF7nystrKQ#list/path=%2F,該目錄與3DMM參數和訓練資料集的檔案清單相對應;
2、train_aug_120x120.zip(2.15G),連結:
https://pan.baidu.com/s/19QNGst2E1pRKL7Dtx_L1MA,增強訓練資料集的裁剪圖像;
3、test.data.zip(151M),連結:
https://pan.baidu.com/s/1DTVGCG5k0jjjhOc8GcSLOw,AFLW和ALFW-2000-3D測試集的裁剪圖像;
4、model_refine.mat(160M),連結:
https://pan.baidu.com/s/1VhWYLpnxNBrlBg5_OKTojA,BFM模型
準備好訓練資料集和配置檔案後,進入training目錄并運作bash腳本進行訓練。訓練參數都以bash腳本呈現。
原文釋出時間為:2018-11-25
本文來自雲栖社群合作夥伴新智元,了解相關資訊可以關注“AI_era”。
原文連結:
3D實時換臉又有新進展!中科院博士生提出改進版本,每張圖推理隻需0.27毫秒