win10下yolov3批量测试图片+保存
程序员文章站
2024-02-14 14:14:10
...
1. 修改detector.c文件
-
用VS打开darknet的工程文件darknet.sln
-
找到detector.c
-
在detector.c开头static int coco_ids[] = 下面加一段代码:
char *GetFilename(char *p)
{
static char name[20]={""};
char *q = strrchr(p,'/') + 1;
strncpy(name,q,6);//注意后面的6,如果你的测试集的图片的名字字符(不包括后缀)是其他长度,请改为你需要的长度(官方的默认的长度是6)
return name;
}
如图所示:
- ctrl+f搜索"save_image(im, “predictions”)",然后定位到这一行,然后将其替换为如下代码:
char b[2048];
sprintf(b, "output/%s", GetFilename(input));//保存在output中
save_image(im, b);
如图所示:
在…\darknet-master\build\darknet\x64目录下新建output文件夹用于存放测试后的图片结果
- 修改完成,重新生成
2. 批量测试+保存图片
- 打开cmd到…\darknet-master\build\darknet\x64目录下,运行:
darknet.exe detector test data\Insulator.data cfg\yolov3-Insulator.cfg_test backup\yolov3-Insulator_16000.weights <D:\新桌面\darknet-master\build\darknet\x64\data\val.txt> result.txt
- 这些需要根据自己情况修改:
darknet.exe detector test data\Insulator.datacfg\yolov3-Insulator.cfg_testbackup\yolov3-Insulator_16000.weights <D:\新桌面\darknet-master\build\darknet\x64\data\val.txt> result.txt - ps:
Insulator.data:检测用的模型的文件地址
cfg\yolov3-Insulator.cfg_test:检测用的模型的cfg文件的地址
backup\yolov3-Insulator_16000.weights:检测用的模型weights文件的地址
<D:\新桌面\darknet-master\build\darknet\x64\data\val.txt>:准备测试的txt文件的地址,(需要用尖括号括出来,不然会出现"Cannot load image"错误
result.txt:输出文本格式的检测结果的文件名,随意。 - 运行成功后output文件夹内:
其中有遇到的问题:
我一开始只能存一张图,就是测试图片在刷新但是只有一张图,这是因为名字一直一样所以覆盖了。
最后发现就是测试图片txt文件路径的问题,一定要是绝对路径!!!!
这是复制的其他博主的图:
要这么绝对哦!
我失败的原因是我的是这样的:(反面教材
这样存储时在最开始添加的GetFilename函数中运行strncpy(name,q,6);时得到的是我的文件夹名称val_images的前六位,所有的图都是这个名所以一直覆盖
这个路径跟生成时有关,我的就不是绝对路径。。。(我一个小白菜当时生成的时候哪注意了这些。。
我因为当时没有反应过来这是因为不是绝对路径造成的问题。。。所以我就块操作把反斜杠改了。。。
就成功了噗哈哈哈哈。。。当然这样一时之快不是长久之计,还是得去改改生成.txt的代码
坑死我了划重点 绝对路径!!!!!
参考:
Windows下使用Yolov3批量测试、结果保存、得到AP / MAP / recall
YOLOv3的批量图片检测以及批量输出(windows下)