使用YOLO訓練自己的資料樣本經驗總結
阿新 • • 發佈:2019-01-02
YOLO近一年多新出的一種object detection的方法,關於目標檢測及YOLO的介紹可參見:基於深度學習的目標檢測研究進展 , CVPR2016目標檢測之識別效率篇:YOLO, G-CNN, Loc-Net ,RCNN學習筆記(6):You Only Look Once(YOLO):Unified, Real-Time Object Detection。
1. 好,現在我們使用yolo一般是想訓練自己的資料集然後識別自己想要detect的object,因為YOLO程式本身是以VOC2012 dataset為樣本來訓練並識別的,詳見官網YOLO: Real-Time Object Detection
2. 關於自己訓練這塊,官網沒有做太多說明,這裡有個不錯的教程: Start Training YOLO with Our Own Data 。上邊有一個比較小的資料樣本,而且都標註好了,方便測試。這裡提一下如果自己標註並轉換到規範格式的話,注意convert.py本身是不完善的,每標記一類object都需要修改部分程式碼,尤其類別一定要記的更改,也可參考 yolo的訓練和測試 。
3. 具體操作過程中我本來用的guanghan fork的github程式碼,然後一直是
Nan
的問題。最後掉頭使用了官方的github庫,一次執行成功(現在還在執行,哈哈)。所以還是建議用官方的原始碼吧,畢竟也在不斷update,guanghan的應該是不怎麼更新了,不過也有必要下下來試一試。 4. 出現
NaN
yolo.c
看起,然後是network.c
、data.h
啥的,可以使用grep 'str_tofind' -nr .
在當前資料夾中遞迴查詢字元出現的位置。還有就是有問題儘量先從官方資料裡找,readme檔案中有連結其google group 。我就是順著這裡看了一遍最後還是沒有找到解決方法,就從新安裝了darknet進行嘗試了。 5. 其他問題,比如我這裡比較悲催,沒有配置GPU的大電腦,只有一塊nvidia的TX1板。記憶體比較小,很容易崩,這一點就需要不斷調整batch和subdivisions了,不囉嗦了。另外也經常會用到
sudo sysctl -w vm/drop_caches=3
free -m
檢視記憶體使用情況, ~/tegrastats
檢視硬體使用情況等命令。 6. 現在還只是處於訓練狀態,後面應該還會遇到其他問題,再補充。
如圖訓練過程中,引數IOU代表預測目標位置的準確性,越接近1越好;每個batch之後會輸出loss和avg loss,其值越小越好。