訓練深度網路模型
openface還不是運用facenet的model作為訓練模型,所以在準確性上比facenet要低,如果你只是做乙個簡單的分類,建議你看看官網的demo3(如果你想自己訓練乙個模型,建議提供乙個大於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 ; do ./util/align-dlib.py align outereyesandnose --size 96 & done注:<> 括號裡是自己的目錄,自己需要根據實際改寫
然後修剪生成分類目錄,在每個分類目錄下存放3張精選的:
./util/prune-dataset.py --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
將資料集劃分為訓練集以及測試集
將資料集簡單地劃分為測試集以及訓練集 import os import random train percent 9 訓練集所佔比例 valid percent 0.1 測試集所佔比例 xmlfilepath data delete 所在地相對路徑 total file os.listdir xml...
YOLO訓練自己的資料集
很高興現在已經有幾百人通過我的教程成功地使用yolo處理自己的資料集。最近一直在用cnn的模型做影象二分類,但苦於效果不佳,於是把影象分類問題轉作目標識別問題。做目標識別選擇了yolo you only look once 乙個最近推出的方法,突出的優點就是速度快。查詢了網上關於yolo的訓練自己資...
yolo生成和訓練資料集
裡面共有兩個資料夾,現在我們使用的是xml2txt xml2txt.py檔案來對我們資料進行處理,首先你需要把你所有標註的xml檔案和所有的檔案放在一起,就像這樣 這是手機拍的 所有檔名很麻煩。明白博主為什麼要重新命名所有的了吧 接著切到剛才的xml2txt.py資料夾內,使用命令 python x...