當前位置:
首頁 > 科技 > PFLD:簡單、快速、超高精度人臉特徵點檢測演算法

PFLD:簡單、快速、超高精度人臉特徵點檢測演算法

作者 | 周強(CV君)

什麼樣的演算法才是好演算法?

真正能實用的演算法才是最好的演算法!

這需要實現三個目標:精度高、速度快、模型小!

近期,arXiv新發布的文章《PFLD: A Practical Facial Landmark Detector》,則是實用人臉特徵點檢測演算法的典範。

PFLD演算法,目前主流數據集上達到最高精度、ARM安卓機140fps,模型大小僅2.1M!

這篇新出的論文,必將成為人臉特徵點檢測領域的重要文獻,今天我們就一起來探究一下,PFLD演算法到底有什麼黑科技。

作者信息:

作者分別來自天津大學、武漢大學、騰訊AI實驗室、美國天普大學。

感謝各位大牛!

人臉特徵點檢測的挑戰

作者首先從演算法實用性角度討論了人臉特徵點檢測問題的面臨的挑戰。

Challenge #1 - Local Variation

人臉表情變化很大,真實環境光照複雜,而且現實中大量存在人臉局部被遮擋的情況等。

Challenge #2 - Global Variation

人臉是 3D 的,位姿變化多樣,另外因拍攝設備和環境影響,成像質量也有好有壞。

Challenge #3 - Data Imbalance

現有訓練樣本各個類別存在不平衡的問題。

Challenge #4 - Model Efficiency

在計算受限的設備比如手機終端,必須要考慮計算速度和模型文件大小問題。

演算法思想

作者使用的網路結構如下:

其中,

黃色曲線包圍的是主網路,用於預測特徵點的位置;

綠色曲線包圍的部分為輔網路,在訓練時預測人臉姿態(有文獻表明給網路加這個輔助任務可以提高定位精度,具體參考原論文),這部分在測試時不需要。

作者主要用兩種方法,解決上述問題。

對於上述影響精度的挑戰,修改loss函數在訓練時關注那些稀有樣本,而提高計算速度和減小模型size則是使用輕量級模型。

Loss函數設計

Loss函數用於神經網路在每次訓練時預測的形狀和標註形狀的誤差。

考慮到樣本的不平衡,作者希望能對那些稀有樣本賦予更高的權重,這種加權的Loss函數被表達為:

M為樣本個數,N為特徵點個數,Yn為不同的權重,|| * ||為特徵點的距離度量(L1或L2距離)。(以Y代替公式里的希臘字母)

進一步細化Yn:

其中

即為最終的樣本權重。

K=3,這一項代表著人臉姿態的三個維度,即yaw, pitch, roll 角度,可見角度越高,權重越大。

C為不同的人臉類別數,作者將人臉分成多個類別,比如側臉、正臉、抬頭、低頭、表情、遮擋等,w為與類別對應的給定權重,如果某類別樣本少則給定權重大。

主網路

作者使用輕量級的MobileNet,其參數如下:

輔網路

參數如下:

實驗結果

作者在主流人臉特徵點數據集300W,AFLW上測試了精度,儘管看起來上述模型很簡單,但超過了以往文獻的最高精度!

下圖是在300W上的CED,完美將其他演算法的曲線壓在下面。

下圖為在300W數據集上不同評價標準IPNIOP精度比較結果,依然是最棒的。

其中PFLD 1X是標準網路,PFLD 0.25X是MobileNet blocks width 參數設為0.25的壓縮網路,PFLD 1X 是在WFLW數據集上預訓練的網路。

下圖是該演算法在AFLW數據集上與其他演算法的精度比較:

同樣是達到了新高度!

下面來看一下演算法處理速度和模型大小,圖中C代表i7-6700K CPU,G代表080 Ti GPU,G*代表Titan X GPU,A代表移動平台Qualcomm ARM 845處理器。

PFDL同樣是異乎優秀!與精度差別很小的LAB演算法相比,CPU上的速度提高了2000倍!

下面是一些特徵點檢測示例,儘管很多樣本難度很大,但PFLD依然給出了可以接受的結果。

作者沒有開源代碼,但給出了Android應用 APK 和Android工程(演算法封裝在bin文件里)。

這個演算法實在是太吸引人了,你是不是也想試一下呢?

論文作者給的網址:

https://sites.google.com/view/xjguo/fld

可惜國內不能下載,不過不用擔心,(本文作者)已經把它搬到百度雲了

鏈接:

https://pan.baidu.com/s/16HjDy9TyotCVwDdd55oWVQ

提取碼:glwr

作者也下載了APK試用,表示好像沒看到效果,不知是不是手機兼容性有問題。提醒一下,論文作者聲明,該工程僅可用於研究比較,如需商業使用需要聯繫作者獲得授權。

論文地址:

https://arxiv.org/pdf/1902.10859.pdf

PFLD演算法看起來簡單,但精度卻很高,這無疑來自作者設計的Loss函數很好的處理了樣本類別不平衡的問題,你覺得還有更好的處理方法嗎?歡迎留言。

(本文為AI科技大本營轉載文章,轉載請聯繫作者)

群招募

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI科技大本營 的精彩文章:

訪問量最高超7百萬的Stack Overflow問題竟然是……
滴滴裁員2000多人,去年虧損超百億

TAG:AI科技大本營 |