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

三、使用手机摄像头实时检测

  • 需要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);

YOLOv3 在Windows 下的一些常用的命令行操作(训练,批量测试,计算mAP,计算anchors等)_第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;
}

YOLOv3 在Windows 下的一些常用的命令行操作(训练,批量测试,计算mAP,计算anchors等)_第2张图片
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下出现预测好的所有图片。
YOLOv3 在Windows 下的一些常用的命令行操作(训练,批量测试,计算mAP,计算anchors等)_第3张图片然后会在dark-master/build/darknet/x64/data/ 下出现预测好的坐标数据和置信值的文件result.txt (我的数据集只有一类):
YOLOv3 在Windows 下的一些常用的命令行操作(训练,批量测试,计算mAP,计算anchors等)_第4张图片

二、隐藏label

有时候我们不需要图片上显示label,用visual studio打开darknet.sln,找到名为image.c的C文件,搜索draw_detections_v3(),找到里面的draw_label这行,并注释掉,然后重新build项目。这样预测出来的图片就不带标签了。
YOLOv3 在Windows 下的一些常用的命令行操作(训练,批量测试,计算mAP,计算anchors等)_第5张图片
YOLOv3 在Windows 下的一些常用的命令行操作(训练,批量测试,计算mAP,计算anchors等)_第6张图片

你可能感兴趣的:(YOLO,深度学习)