Darknet批量测试图片
在做批量测试的时候在网上找了一圈方法,发现都是大同小异,主要是他们都会在文件读取时设置固定长度,无法满足我的需求,而且ab版darknet的测试代码中只能测试单张图片,批量测试得不到相应的框出来的图片可视化效果。
需求:
1.考虑不同长度文件名的批量测试;
2.将框出来的图片保存到对应的文件夹下,按照原文件的方式命名。
方法:
1.仅在darknet源码的detector.c文件中改一下保存的文件名;
2.批量测试通过指令循环来进行,虽然可能效率不高,但是能解决问题。
具体如下:
detector.c中的test_detector()函数修改:
只需要在save_image(im, “predictions”);前加上:
char *input_file = strrchr(file name,’/’)+1;
char *last_dot = strrchr(input_file,’.’);
if(last_dot != NULL && strrchr(input_file, ‘/’) < last_dot)
*last_dot = ‘\0’;
char str1[100] = {“test_result/”};
strcat(str1, input_file);
然后将save_image(im,”predictions”);修改为:
save_image(im,str1);
下面的show_image也可以改一下。test_result/是保存的位置
保存之后记得make一下就好。
然后创建脚本test.sh,写入以下代码:
for line in $(cat /home…/var.txt); do echo $line; darknet detector test a.data yolov4-custom.cfg yolov4-custom_best.weights $line -ext_output;done
这样就完成啦,其中.txt文件中记录的是需要测试的样本的绝对地址。
bash test.sh 就好。