1. 程式人生 > >openface 訓練數據集

openface 訓練數據集

pan git 一個 main 自己 mes person 簡單 文件

訓練深度網絡模型
OpenFace還不是運用faceNet的model作為訓練模型,所以在準確性上比faceNet要低,如果你只是做一個簡單的分類,建議你看看官網的demo3(http://cmusatyalab.github.io/openface/demo-3-classifier/),如果你想自己訓練一個模型,建議提供一個大於500k的圖片集作為訓練集。(這裏的500k應該是50w張圖片來理解更合適)
Openface暫時還沒提供該faceNet模型的支持。
註意:在K40Gpu的機器上訓練數據估計要耗費很多的內存還有一整天的時間,所以務必準備相應的硬件支持。

1)創建原生圖片目錄data/mydataset/raw
Raw目錄下再建立各個分類目錄,這些分類目錄的名字將是分類的標簽名,在子目錄下面就存放各個分類的圖片。

技術分享圖片

2)預處理原生圖片
如果你想比較你圖片集跟LFW數據集的準確率,你可以使用項目中提供的腳本來清除你圖片集中帶有LFW特征的圖片(data/casia-facescrub/remove-lfw-names.py)
我們啟用8個線程來預處理圖片:

for N in {1..8}; do ./util/align-dlib.py <path-to-raw-data> align outerEyesAndNose <path-to-aligned-data> --size 96 & done

註:<> 括號裏是自己的目錄,自己需要根據實際改寫
然後修剪生成分類目錄,在每個分類目錄下存放3張精選的圖片:

./util/prune-dataset.py <path-to-aligned-data> --numImagesThreshold 3

註:3這個閾值,你可以根據情況自己設置


3)訓練模型
執行 training/main.lua文件去訓練模型(在 training/opts.lua文件裏編輯選項或者通過命令行傳參執行)然後會產生損失函數和處理模型到training/work這個目錄裏。對於GPU內存來說,大概需要耗費128G內存,需設置-peoplePerBatch和-imagesPerPerson(默認分別是15和20)來減少內存的消耗。(這些參數可限制每批次處理的上限)

註意:數據目錄的metadata(元數據)存放在緩存裏training/work/trainCache.t7

;如果數據目錄發生改變了,刪除這些元數據,他會重新生成一個。

停止或者重啟訓練
每次訓練叠代都會把模型存放在work裏面,如果訓練進程被kill掉,你可以通過-retain參數重啟。你也可以設置不同人工種子-manualSeed來作為圖片序列采樣,-epochNumber設置叠代次數。

這裏需要你懂點lua語言的應用的,不然真的一頭霧水,主要的翻譯就這樣了


4)分析訓練結果
驗證損失函數: training/plot-loss.py.
需要裝相應的依賴,相應依賴存放在 training/requirements.txt,可以執行以下命令安裝:

pip2 install -r requirements.txt

模型的正確率:
Openface 官方有說明默認是使用nn4.small2,有3733968個參數,預計準確率為93左右
LFW數據集在國外訓練model挺流行,可是在國內感覺不怎麽行,畢竟采集的人物大都是外國人為準;關於模型的正確率,你可以參考這個鏈接:
http://cmusatyalab.github.io/openface/models-and-accuracies/

http://cmusatyalab.github.io/openface/training-new-models/

openface 訓練數據集