YOLOv3的批量图片检测以及批量输出(windows下)
YOLOv3的批量图片检测
前言:本文写的目的是因为自己在寻找方法的时候看到的博客需要修改的地方太多,容易出错,所以写一个简单一点,也算给自己一个备注。尽量傻瓜式,所以多图警告!本文的批量检测需要:
1. 改极少量的代码(darknet框架下作者的原生代码)。
2. 一个包含所有需要检测图片路径的txt文件,一行为一个图片的地址。
3. 在cmd下输入指令。
1.代码修改
用vs打开darknet工程文件,找到文件名为detector.c的C文件,ctrl+f搜索"save_image(im, "predictions")",然后定位到这一行,应该是1200+行,然后将其替换为如下代码:
char b[512];
sprintf(b, "output/%s", GetFilename(input));//保存在output中
save_image(im, b);
画风如下:
2. 准备一个包含所有需要检测图片路径的txt文件
把要检测的图片的绝对地址全部放在一个txt文件中,画风如下所示:
3. 在cmd下用指令检测即可
在darknet的工程路径下创建一个名为“output”的文件夹,画风如下所示:
然后和yolo训练指令类似,在cmd下输入以下指令即可(如果用的coco数据集格式前几个参数可能稍有不同,不过后面都是一样的):
.\darknet.exe detector test <data/voc.data> <cfg/yolo-voc.cfg> <yolo-voc.weights> -ext_output -dont_show <data/train.txt> <result.txt>
其中用“< >”尖括号框出来的地方需要修改:
data/voc.data:检测用模型的voc.data文件的地址。
cfg/yolov2-voc.cfg:检测用模型的cfg文件的地址。
yolo-voc.weights:检测用模型的weights文件的地址。
data/train.txt :步骤2中准备的txt文件地址。
result.txt:输出文本格式的检测结果的文件名,随意,用"result.txt"就行。
运行之后就能在output文件夹中看到所有带有检测结果的图片了。
画风如下所示(用的灰度图进行检测的,所以框可能看不清楚):
然后还会生成一个result的txt文件,打开画风如下所示: