PFLD:簡單、快速、超高精度人臉特徵點檢測演算法
作者 | 周強(CV君)
來源 | 我愛計算機視覺(公眾號id:aicvml)
60s測試:你是否適合轉型人工智慧?
https://edu.csdn.net/topic/ai30?utm_source=cxrs_bw
什麼樣的演算法才是好演算法?
真正能實用的演算法才是最好的演算法!
這需要實現三個目標:精度高、速度快、模型小!
近期,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資料集上不同評價標準IPN\IOP精度比較結果,依然是最棒的。
其中PFLD 1X是標準網路,PFLD 0.25X是MobileNet blocks width 引數設為0.25的壓縮網路,PFLD 1X+是在WFLW資料集上預訓練的網路。
值得一提的是表格中LAB演算法,是CVPR2018上出現的優秀演算法,之前一直是state-of-the-art。感興趣的朋友可以參考52CV當時的報導:重磅!清華&商湯開源CVPR2018超高精度人臉對齊演算法LAB 。
下圖是該演算法在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科技大本營轉載文章,轉載請聯絡作者)
人工智慧的現狀及今後發展趨勢如何?
https://edu.csdn.net/topic/ai30?utm_source=csdn_bw
群招募
掃碼新增小助手微信,回覆:公司+研究方向(學校+研究方向),邀你加入技術交流群。技術群稽核較嚴,敬請諒解。
推薦閱讀:
❤點選“閱讀原文”,檢視歷史精彩文章。
相關文章
- PFLD:簡單高效的實用人臉關鍵點檢測演算法演算法
- MTCNN人臉檢測與校準(5特徵點)CNN特徵
- Android 超簡單整合活體檢測技術 快速識別“假臉”Android
- 基於opencv實現簡單人臉檢測OpenCV
- 刷臉支付人臉識別特徵點越多是別越精確特徵
- openCV - 角點檢測快速演算法 FASTOpenCV演算法AST
- OpenCV計算機視覺學習(13)——影像特徵點檢測(Harris角點檢測,sift演算法)OpenCV計算機視覺特徵演算法
- 特徵檢測特徵
- iOS 人臉關鍵點檢測iOS
- 簡單介紹Pygame 精準檢測影像碰撞的問題GAM
- Relief 特徵選擇演算法簡單介紹特徵演算法
- 人臉檢測識別,人臉檢測,人臉識別,離線檢測,C#原始碼C#原始碼
- 超簡單整合HMS ML Kit 人臉檢測實現可愛貼紙
- 優圖開源的人臉檢測演算法 DSFD演算法
- AR人臉106240點位檢測解決方案
- [計算機視覺]人臉應用:人臉檢測、人臉對比、五官檢測、眨眼檢測、活體檢測、疲勞檢測計算機視覺
- 人臉檢測 二
- 黑人人臉檢測
- 簡單票據檢測方法
- Fast角點檢測演算法AST演算法
- 人臉檢測榜單WIDER FACE最新排名:創新奇智AInnoFace演算法奪冠IDEAI演算法
- 人臉106和240點位檢測解決方案
- 前端人臉檢測指南前端
- 人臉活體檢測
- 簡單VC記憶體檢測記憶體
- SaccadeNet:使用角點特徵進行two-stage預測框精調特徵
- 目前最強效能的人臉檢測演算法(Wider Face Dataset)演算法IDE
- WebShell流量特徵檢測_哥斯拉篇Webshell特徵
- 百度人臉對比
- 重磅!目前最強效能的人臉檢測演算法(Wider Face Dataset)演算法IDE
- 人臉融合簡單demo
- 異常點檢測演算法小結演算法
- 目標檢測演算法盤點(最全)演算法
- opencv視訊人臉檢測OpenCV
- 重新整理WIDER Face多項記錄!創新奇智提出高效能精確人臉檢測演算法IDE演算法
- 人臉識別之特徵臉方法(Eigenface)特徵
- SaccadeNet:使用角點特徵進行two-stage預測框精調 | CVPR 2020特徵
- 人臉識別之人臉檢測的重要性