人脸识别,人脸关键点检测算法
from?http://blog.csdn.net/sloanqin/article/details/48193119
1 Face++:http://www.faceplusplus.com.cn/tech_landmark/
其提供的技術服務有1:人臉檢測(人臉檢測追蹤,人臉關鍵點檢測) 2:人臉分析(微笑分析,性別年齡種族表情)3:人臉識別(1:1,1:N,大規模人臉搜索)。我需要關注的是這里的人臉關鍵點檢測的實現。Face++為美圖秀秀,美顏相機提供人臉關鍵點檢測的技術服務。
2 Face++一個采訪問題,能夠了解人臉識別技術的整個流程。
CSDN移動:可否介紹一下,典型的人臉識別系統是什么樣子的?
印奇:當今的人臉識別系統雖然包含無數細節和各種工程技巧,但大的系統框架不外乎如下圖所示的流程:一張人臉圖片輸入后,需要先找到人臉的位置(人臉檢測),然后在這個基礎上定位人臉關鍵點的位置(如眼睛中心或嘴角等),每個系統關鍵提取的數量相差很大,有的只有左右眼睛中心兩個點,有的可能多達近百個點。這些點的位置一是用來做人臉的幾何校正,即把人臉通過縮放、旋轉、拉伸等圖像變化變到一個比較標準的大小位置。這樣待識別的人臉區域會更加規整,便于后續進行匹配。同時,現在的實際系統一般也都配有人臉光學校正模塊,通過一些濾波的方法,去除一些對光照更加敏感的面部特征。在做完這些預處理之后,就是從人臉區域提取各種特征,包括LBP、HOG、Gabor等。最終相關的特征會連接成一個長的特征向量(Feature?Vector),然后匹配出人臉的相似度,根據相似度的大小,系統會判定兩張圖片到底是不是一個人。不難看出,人臉識別技術還是一個系統鏈條較長,較為有技術門檻的領域。因為這條流水線的每個環節可能都會嚴重影響最終系統性能,所以一個好的人臉識別技術公司需要在各個環節上追求細節,建立自己的技術優勢,最終才有可能在最后的人臉識別精度上有出色的表現。
3 人類識別人臉用的是什么算法:http://www.zhihu.com/question/20154853
上面鏈接是知乎上面的討論,有一個關于生物學方面的解釋。
又一個Face++的專訪:http://segmentfault.com/a/1190000000452539
通過下面這段話可以了解到目前的一些測試平臺:
所以我的感覺是技術實現的方式采用:深度學習與傳統算法相結合,互補的方式,并注重深度學習方面的創新。Face++ 目前發布的兩篇論文,關鍵點檢測和人臉特征表示都是基于DCNN的技術。
SegmentFault:?Face++的算法研發用到了C++、Matlab和Python?能比較下Matlab和Python在視覺算法研究方面的優勢和不足么?
Face++:?優勢是比較糙快猛,方便驗證idea;落實到系統和實用級別,可能還是要采用C++。所以用matlab驗證完idea后,用C++做實現。不妨申請下Face++的實習生。
4 閱讀文獻《人臉特征點定位研究與應用-吳證》
文中提到幾種人臉關鍵點檢測的方法:
1投影(五官灰度值較周圍皮膚灰度值低)
2基于先驗規則(先驗知識指的是人臉比如眼瞼、虹膜等一些已知的灰度、形狀信息)
3基于幾何形狀(比如可變形模板,能夠較好檢測眼睛嘴唇特征形狀,但是由于邊緣不精確難以精確定位特征點,依賴初始參數大,容易陷入局部最小,計算時間長)(另外還有主動形狀模型(ASM),主動表觀模型(AAM))
4基于統計的方法(該方法的思想是將特征部位看做一類模式,然后使用大量的特征部位樣本和非特征部位樣本進行訓練,然后構造分類器,該類方法主要有PCA(主成分分析)、SVM、ANN(神經網絡)、AdaBoost、模板匹配)
5基于小波和小波包
5 機器學習的封裝好的庫:
這里有關于庫的介紹:http://www.chinacloud.cn/show.aspx?id=21150&cid=16
theano:妹紙目前推薦我用這個庫,python封裝的。知乎上有不少人用這個,但是統一的評論是調試不方便。theano,教程比較基礎,安裝非常簡單,幾個指令可以搞定,不過用他來做開發實在太麻煩,建議配合keras使用,非常贊。
Theano主頁:http://deeplearning.net/software/theano/
Github網址:https://github.co
還有一些庫比如:matconvnet、Lasagne、opencv、nolearn、keras、caffe
最新的kaggle比賽中很多人用的是nolearn + lasagne,這兩個庫也是基于Theano作為核心建立的。??
dlib:
http://matthewearl.github.io/2015/07/28/switching-eds-with-python/
http://blog.csdn.net/qingnianzhi/article/details/47322627
6 目前我的打算
我的目的:實現對人臉的關鍵點定位
學習思路:打算通過深度學習的方式來進行關鍵點檢測,首先在ufldl上學習深度學習的入門知識,然后在網絡的博客上找別人用python寫的人臉檢測的算法,最后自己基于C++實現,然后app中java調用。
比如鏈接:http://blog.csdn.net/qingnianzhi/article/details/46912383#comments
總結
以上是生活随笔為你收集整理的人脸识别,人脸关键点检测算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Caffe上训练使用自己的数据
- 下一篇: 人脸识别技术大总结(1):Face De