本文從假設你已經有一個圖像數據集和xml標籤數據集了。然後從VOC2007數據集的製作開始說。
數據整理方法---訓練方法-----利用訓練日誌繪製Loss\IOU等曲線的方法------測試方法---------批量測試方法
數據整理方法:
(假設你只想要其中某些類,就要用程序剔除不要的標籤、然後刪除空標籤以及對應圖像。注意備份)
訓練自己的數據
訓練帶正常螺栓的數據集
-採用的初始權重爲:首先Imagenet訓練過,然後經過我們螺栓庫訓練過,然後經過提包線夾脫銷數據集訓練過得到的yolov3模型權重。
-問題:之前訓練過yolov3,但這一次還是調整了半天,說明模型的訓練過程中,不能單單的跑出來,要記錄具體的訓練步驟,以及處理過程。
-具體流程如下
-
修改cfg中voc.data:,
classes是數據集類、train和valid是由voc_label.py根據aa.m分配完成的位於Main中的結果文檔生成的訓練txt。names是類別名稱單獨放一個文件夾,類別按voc_label中相同的順序填寫。backup後面是一個文件夾,保存訓練好的網絡權重
-
修改yolov3-voc.cfg:
-文檔內搜索yolo。
-開頭部分
修改對應的地方。filters=3x(類別數目+5)
所需要的文件如下:
voc_label.py網上都有,生成VOC格式的MaIn中txt文件的py代碼放在另一個博文裏面了,設置的是隨機挑選數據分配到test與train的,不是順序的,要注意。
LOSS曲線與IOU曲線繪製
1、繪製上一次訓練的Loss曲線、IOU曲線
-還有map和ap曲線還沒知道怎麼畫
-需要三個程序
首先把命令窗口打印的訓練日誌複製下來然後:
- extract Log日誌爲 Loss和iou版本、
- 都與日誌放在同一個文件夾下運行
- 分別用train-loss\train-iou對日誌數據進行可視化
單張圖片測試:
./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_final.weights 01.jpg
批量測試:
1.可視化的批量測試
按https://blog.csdn.net/mieleizhi0522/article/details/79989754(YOLOv3批量測試圖片並保存在自定義文件夾下)中方法,首先修改代碼,然後重新編譯darknet,然後用
./darknet detector test cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_final.weights
命令,運行後輸入依次2007_train.txt\2007_test.txt\2007_val.txt的路徑,會蹦出圖片,一張張關閉掉,就會自動保存並且運行下一張。運行完一組,結果輸出到data/out裏面,修改名字,跑下一個txt。就可以得到本次測試的圖片結果。
2.數字結果的批量測試(輸出txt,裏面是框座標、類別、得分)
./darknet detector vaild cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_final.weights -gpu 0,1 thresh .001
參數分別是:
vaild測試模式,
數據配置文件
模型文件 指定gpu,
設定檢測的閾值。
會把cfg/voc.data裏的測試txt文檔中的所有圖片批量測試一遍,按類輸出txt文檔到darknet-master/result文件夾中。更換不同的txt,得到val.txt、train.txt、test.txt對應數據的測試結果,每一次都要分開保存好,避免覆蓋
測試結果
圖像測試結果和數值座標結果都分別保存下來。