此篇博客是防止自己遺忘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
三、使用手機攝像頭實時檢測
- 需要IPWebCam
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);
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下出現預測好的所有圖片。
然後會在dark-master/build/darknet/x64/data/ 下出現預測好的座標數據和置信值的文件result.txt (我的數據集只有一類):
二、隱藏label
有時候我們不需要圖片上顯示label,用visual studio打開darknet.sln,找到名爲image.c的C文件,搜索draw_detections_v3(),找到裏面的draw_label這行,並註釋掉,然後重新build項目。這樣預測出來的圖片就不帶標籤了。