darknet初體驗 3

注意在makefile文件中的opencv是C++形式的,因爲本身darknet就是用C來寫的!

這個本身就是C++的編譯工作

一般需要用opencv編譯的都是採用的c++形式的opencv!python的opencv不支持cuda加速!

對於darknet的指令parse問題:
./darknet … 指令之後在最後還可以寫其他的輔助指令,例如:
-gpus 0,1,…制定多少個GPU參與訓練測試
-thresh 0.5 確定當confidence的值在thresh之上在輸出
-out car.txt 這個是採用valid模式輸出的文本文件,用來看模型的性能的

darknet在.data文件中還有valid驗證集,valid和train是一樣的,給出來圖像數據的.jpg絕對路徑文件!
這個valid還沒有用過,等會試一試

對於一個完整的任務,光訓練好還不行,還要對訓練的網絡進行評價纔可以(上面的valid也是屬於網絡評價的一部分)
訓練一個網絡,需要評價這個網絡,並根據評價的結果想一下爲什麼是這樣,怎樣去優化這個網絡。這樣纔是一個閉環,能夠有提高,僅僅走一遍訓練的流程,是沒有意義的。

這時候另一個命令就來了:valid
我們在用darknet的時候常用的是./darknet detector train(訓練)/test(測試圖片)
對於驗證模型用./darknet detector valid
注意!這一的驗證是批量test
Q:那如果想要用valid數據呢?
例如: darknet detector valid ./cfg/voc.data cfg/tiny_yolo_voc.cfg tiny_yolo_voc.weights
使用detector valid參數,具體函數是detector.c下的validate_detector函數。將測試集的檢測結果保存到detect_result.txt。這裏的detect_result通常就是你檢測的東西名稱啦/
其中thresh在validate_detector中默認爲0.005,按需修改。
這裏有個問題,我的電腦上用valid一直不行。但是換一個就行了,輸出的預測結果.txt文件是coor 類別 confidence

原文鏈接:https://blog.csdn.net/cgt19910923/article/details/80524173
這裏推薦大神的博客:

https://www.jianshu.com/p/7ae10c8f7d77
https://blog.csdn.net/qq_34806812/article/details/81459982?utm_source=blogxgwz3

能夠實現對於loss的圖形可視化(判斷是否過擬合),重點關注 train loss 和avg train loss,這兩個值應該是隨着iteration增加而逐漸降低的。如果loss增大到幾百那就是訓練發散了,如果loss在一段時間不變,就需要降低learning rate或者改變batch來加強學習效果。當然也可能是訓練已經充分。這個需要自己判斷。

如果想要計算mAP利用文件https://github.com/rbgirshick/py-faster-rcnn/blob/master/lib/datasets/voc_eval.py

然後是對於召回率recall的測試

./darknet detector recall ....

這裏需要修改 example/detector.c文件, 修改detector.c下的validate_detector_recall函數
替換list *plist = get_paths(“data/coco_val_5k.list”);爲list *plist=get_paths(“scripts/train.txt”);自己的訓練集文本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章