此篇博客是防止自己遗忘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项目。这样预测出来的图片就不带标签了。