YOLOv3 在Windows 下的一些常用的命令行操作(訓練,批量測試,計算mAP,計算anchors等)

此篇博客是防止自己遺忘YOLOv3的一些命令行操作,方便自己查閱。

YOLOv3官方自帶操作

一、訓練

darknet.exe detector train data/voc.data data/yolov3-spp-voc.cfg data/pretrain/darknet53.conv.74

二、測試單幅圖像

darknet.exe detector test data/obj.data yolov3-custom.cfg data/weights/yolov3-custom.weights -thresh 0.25

三、使用手機攝像頭實時檢測

darknet.exe detector demo data/voc.data data/yolov3-voc.cfg data/weights/yolov3-voc.weights http://192.168.0.100:8080/video?dummy=param.mjpg -i 0

四、快速計算mAP

darknet.exe detector map data/obj.data yolov3-custom.cfg data/weights/yolov3-custom.weights -thresh 0.25 -iou_thresh 0.45

五、計算適合數據集的anchors

darknet.exe detector calc_anchors data/obj.data -num_of_clusters 9 -width 416 -height 416

一些定製化操作

一、批量測試保存結果圖和座標數據

1.用visual studio打開darknet.sln,找到名爲detector.c的C文件,ctrl+f搜索"save_image(im, “predictions”)",註釋掉這一行,然後將其替換爲如下代碼:

char b[512];
sprintf(b, "data/output/%s", GetFilename(input));//保存在data/output中
save_image(im, b);

1
2.此時直接build會報錯,出現unresolved external symbol GetFilename的error,要在detector.c開頭static int coco_ids[] = 下面加一段代碼,然後再重新build:

char *GetFilename(char *p)
{ 
    static char name[20]={""};
    char *q = strrchr(p,'/') + 1;
    strncpy(name,q,6);//注意後面的6,如果你的測試集的圖片的名字字符(不包括後綴)是其他長度,請改爲你需要的長度,例如000001.jpg
    return name;
}

在這裏插入圖片描述
3.在dark-master/build/darknet/x64/data/ 路徑下新建一個名爲output的文件夾,cmd命令行進入dark-master/build/darknet/x64,然後輸入:

darknet.exe detector test data/obj.data yolov3-custom.cfg data/weights/yolov3-custom.weights -thresh 0.25 -dont_show -ext_output < data/test.txt > data/result.txt

  • < data/test.txt > test.txt裏面寫了所有測試圖片的路徑

4.運行結束後,會在dark-master/build/darknet/x64/data/output下出現預測好的所有圖片。
3然後會在dark-master/build/darknet/x64/data/ 下出現預測好的座標數據和置信值的文件result.txt (我的數據集只有一類):
在這裏插入圖片描述

二、隱藏label

有時候我們不需要圖片上顯示label,用visual studio打開darknet.sln,找到名爲image.c的C文件,搜索draw_detections_v3(),找到裏面的draw_label這行,並註釋掉,然後重新build項目。這樣預測出來的圖片就不帶標籤了。
5
6

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