ShapeNet:超實時人臉特徵點檢測與形狀擬合開源庫
我愛計算機視覺 標星,更快獲取CVML新技術
近日,來自德國亞琛工業大學的研究人員開源了形狀擬合庫ShapeNet,其可以實現超實時的人臉特徵點檢測,也可以用在其他任何需要形狀擬合的應用場景。
開源地址:
https://github.com/justusschock/shapenet
ShapeNet庫使用Python實現,不僅開源了預訓練模型,而且對開發者來說可以很方便地使用其進行任何其他形狀擬合任務的訓練,只需要簡單配置引數即可,這是該庫最值得參考的地方。
在對應論文《Super-realtime facial landmark detection and shape fitting by deep regression of shape model parameters》中,作者描述了其演算法原理,今天就跟大家一起來學習下作者的設計思想。
作者資訊:
什麼是形狀擬合?
看下面這張圖:
上圖展示了對人臉、紅外人臉、貓臉、醫學影象器官形狀擬合的例子。
相信大家對於人臉特徵點檢測並不陌生,其有時候也被稱為人臉對齊(或者人臉配準),即定位人臉中特定位置的點,所有這些點組合在一起就描述了人臉的形狀。
推廣之,任何特定目標形狀的描述,都可以通過形狀擬合算法完成。
這很顯然是一個非常有用的研究方向,比如基於人臉特徵點檢測的視訊特效已成為各大直播平臺的標配,在醫學影象領域,通過形狀擬合確定器官的位置,可以在放化療手術中對人體器官進行低劑量照射保護,在機器視覺中零部件形狀擬合也可以幫助進行缺陷檢測等。
在計算機視覺的歷史上,這是一個經典問題,大名鼎鼎的ASM、AAM、CLM都是為了解決這一問題。
目前在該領域,基於“特徵提取”+“迴歸座標”的方法是主流。
該文提出的ShapeNet演算法也是深度學習迴歸的方法,其最大的優勢是速度快,在上圖中文字說明跑在GTX 2080 Ti上可以達到410fps,即2.4ms一幀。注意這是Python的實現,這樣的速度,系統IO估計也比較佔時間。
ShapeNet演算法原理
演算法原理比較簡單,作者把形狀擬合的座標迴歸問題,轉化為座標PCA壓縮後係數與形狀整體仿射變換系數的迴歸問題,請看下圖:
上圖中顯示的是預測的過程,CNN提取的特徵進行迴歸得到PCA壓縮係數和整體仿射變換系數,然後PCA壓縮係數乘以PCA特徵向量得到人臉形狀,並進行包含平移、旋轉、縮放的仿射變換即得到了最終的特徵點位置座標。
在訓練的時候對形狀進行PCA壓縮和仿射變換歸一化,記錄下PCA的特徵向量、每個形狀的PCA係數和這些仿射變換的係數,後兩者用於作為深度學習系統的迴歸的標籤。
該演算法使用了形狀中特徵點的位置座標資訊其實是高度冗餘的特性,通過PCA壓縮大大降低了需要預測的資料量。
作者使用的特徵提取網路各層的說明,共9層:
實驗結果
既然用到了PCA壓縮,就不可避免涉及到壓縮比例的問題,這直接決定了迴歸引數個數。
作者在人臉特徵點檢測資料集上研究了迴歸引數的數量對最終精度的影響,如下圖:
隨著引數個數的增加,精度有增加的趨勢,但比較50個引數和75個引數的結果曲線,發現75個引數時精度卻下降了,這可能和標註資料本身有噪聲有關係。PCA壓縮丟棄這些資訊反而使結果更好。
下圖是作者在幾個形狀擬合數據庫上的實驗結果Cumulative Error Distribution,包括人臉資料集(300W indoor 、300W outdoor)、紅外人臉資料集Thermal、貓臉資料集Cats、醫學影象資料集JSRT lungs、PROMISE2。
作者並沒有跟其他演算法比精度,很多提升精度的tricks沒加,作者更加強調該庫的簡單、通用、高效,GTX 2080Ti 上 410fps。
但CV君以為如果有用C實現的CPU程式開源的話,更具說服力。
該庫支援新資料庫的訓練,相信對很多工業界的朋友應該有很用。
支援CV君的分享, 歡迎點下文末的“好看”~
程式碼地址:
https://github.com/justusschock/shapenet
官方文件:
https://shapenet.readthedocs.io/en/latest/
論文地址:
https://arxiv.org/abs/1902.03459
加群交流
關注計算機視覺與機器學習技術,歡迎加入52CV群,掃碼新增52CV君拉你入群,
( 請務必註明:52CV )
喜歡在QQ交流的童鞋,可以加52CV官方 QQ群 :928997753。
(不會時時線上,如果沒能及時通過驗證還請見諒)
更多CV技術乾貨請瀏覽:
長按關注 我愛計算機視覺