CNN人脸关键点检测
CNN人臉關鍵點檢測
參考文獻《Deep Convolutional Network Cascade for Facial Point Detection》\
摘要
提出一種利用精心設計的三級/三層(three-level)卷積網絡估計面部關鍵點位置的新方法。
At each level,多網絡(multiple networks)的輸出是魯棒性和精確估計的保證。
卷積網絡的深層結構助于定位高精度的關鍵點,全局高層次的特征基于整個人臉面部在初始化階段提取。
優勢一,整個人臉的紋理上下文信息用來定位每個關鍵點。
優勢二、因為網絡被訓練來用于同時預測所有的關鍵點,關鍵點間的幾何約束被隱式的編碼。
所以,該方法可以避免由歧義和數據損壞引起的局部極小(in difficult image samples due to occlusions, large pose variations, and extreme lightings)。The networks at the following two levels are trained to locally refine initial predictions and their inputs are limited to small regions around the initial predictions. Several network structures critical for accurate and robust facial point detection are investigated. Extensive experiments show that our approach outperforms state-of-the-art methods in both detection accuracy and reliability.
1 關鍵點示例
2 Cascaded convolutional networks
對 CNN facial point detection[CVPR2013]一文的實現
在Deep convolutional network cascade for facial point detection一文中,作者實現了基于CNN的人臉標注算法。而后續發表在CVPR2014上的關于人臉識別的文章,很大程度上都依賴于前端人臉標注算法的準確性。本人嘗試在ConvNet上對該網絡進行了實現。收獲有以下幾點:
1.?????結構與權重初始化對訓練過程的影響。
在研究中發現:深度卷積網的可優化性嚴重依賴于結構和初始權重。卷積層后的sigmiod或tanh函數會將輸出值映射到歸一化區間,如果初始權重設置不好,會將輸出值歸一化到相近值,如:0.981, 0.982, 0.9812等。由于計算機精度有限,經過多次非線性映射后,所有樣本最終的輸出將完全相同,從而導致調優困難。比較合理的訓練方法是:選擇好網絡結構并隨機初始化權值后,逐層觀察非線性映射后的輸出結果,根據輸出結果重新調節權重大小,使不同樣本的輸出結果相互存在明顯差異。
2.?????訓練樣本對訓練精度的影響。
在研究中發現:不同的訓練樣本集對卷積網的精度有很大影響,樣本放入的順序也會影響卷積網的精度。我共產生了3個訓練樣本集:尺度、位移隨機化樣本集,尺度隨機化樣本集,和與測試條件一致的樣本集。通過訓練發現:先利用差異較大尺度、位移都存在變化的樣本集對網絡進行訓練,待收斂后再利用只存在尺度變化的樣本集進行訓練,最后使用與測試條件一直的樣本集進行訓練,會使得最終預測精度較好。個人的理解是:變化較大的樣本集可以更好地訓練底層卷積核的特征表達能力,變化較小的樣本集可以更好地訓練中層和高層網絡的特征提取能力。前面采用的訓練順序可以保證網絡由底層到高層都獲得較為良好地訓練。3.?????慎用ReLU函數。
ReLU會將所有負值輸出全部置零。本實驗中相當多的卷積核產生的響應都為負數,采用ReLU后網絡無法收斂。
4.?????學習率對網絡精度的影響。
目前主流的訓練算法主要采用學習率單調遞減的方法進行,訓練過程中學習率一旦下降后絕不會再次變大。本人在實驗中發現:當學習率下降到一定程度后,再次適當增大學習率可以加速誤差的減小速度,使得模型更容易被優化。部分標注結果如下:
總體來講,基本實現了文章的功能。目前只實現了第一層網絡,沒有按照原文那樣用第二三層網絡進行誤差回歸,因此精度稍遜與原文方法。
可執行代碼(matlab生成的exe)下載地址:http://download.csdn.net/detail/kklots/8618505
總結
以上是生活随笔為你收集整理的CNN人脸关键点检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大话推荐系统
- 下一篇: GPS及惯性传感器在无人驾驶中的应用