人臉識別CNN網路訓練流程
阿新 • • 發佈:2019-01-10
目標
訓練論文”A Lightened CNN for Deep Face Representation”中的caffe網路。
資料
CASIA-WebFace 可在這裡申請。
預處理
獲得CASIA-Webface資料集之後,使用tools中的:
- 指令碼
addLabeltopic.py
將圖片的label置為0-10574,並將label加入圖片的名字中,如0_001.jpg
。 - 指令碼
getallfilesInOnedir.py
將所有圖片複製到某一級目錄下,如image/ - 使用code_point中的工具對人臉圖片進行標點,其中bbox.txt中指定了固定的人臉位置。
- 可使用show_resulr.m指令碼對標點結果進行視覺化。
- 根據每個圖片樣本的標點資訊將人臉進行旋轉和裁剪,使得樣本標準化。
經過上述操作,可以得到10575人的494414張標準化人臉圖塊。
使用caffe,訓練模型
- 生成lmdb資料
- 編寫train_test.prototxt和solver.prototxt
- 開始訓練!
網路配置
對學習率的設定
初始學習率設定為0.01,訓練過程中,發現初始loss為9.3,約為-log(1/10575)正常,稍加訓練後,loss上升到80+,說明學習率設定過大,調整為0.001,並以inv方式進行衰減。發現loss逐漸衰減了。
測試記錄
測試資料集:lfw。取官方給出的pairs.txt進行測試。保證pairs.txt中的圖片不會出現在訓練集中。
資料組織 | 數量 | 描述 |
---|---|---|
Intra-pair | 3000 | 每一個pair是同一個人物的兩張不同場景下的人臉圖片對 |
Extra-pair | 3000 | 每一個pair是不同人物的人臉圖片對 |
使用pairs.txt中給出的6000對人臉對測試本模型的準確度。按照標準的ROC評測方案,並在True Positive Rate與False Reject Rate相當時,取出準確率用於表徵模型的準確率。將不同迭代次數時的測試結果記錄在下表中。
迭代次數(萬) | True Positive Rate(%) | False Reject Rate(%) | Average(%) |
---|---|---|---|
115 | 96.2 | 96.2 | 96.2 |
165 | 96.8333 | 96.8667 | 96.85 |
183 | 96.7 | 96.8333 | 96.7667 |
196.5 | 96.9333 | 96.9667 | 96.95 |
206 | 96.7333 | 96.8333 | 96.7833 |
240 | 96.8667 | 96.8667 | 96.8667 |
260 | 96.7667 | 96.8333 | 96.8 |
計算環境
NVIDIA GTX970