1. 程式人生 > >人臉識別CNN網路訓練流程

人臉識別CNN網路訓練流程

目標

訓練論文”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