c++版本相对于官网上的c版本更加智能(c版本只能在linux上跑),而c++版本的yolov3也可以在win上跑。
找到home/yourpath/.../darknet/src/detector.c程序。
开头的*GetFilename进行修改,申明的函数也带进去,可以选择直接粘贴过去。其中就参数6注意一下就行。
#include "darknet.h"
#include <sys/stat.h>
#include<stdio.h>
#include<time.h>
#include<sys/types.h>
static int coco_ids[] = {1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,67,70,72,73,74,75,76,77,78,79,80,81,82,84,85,86,87,88,89,90};
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")"将下面程序插入,然后注释掉save_image(im, "predictions")
char b[512];
sprintf(b, "output/%s", GetFilename(input));
save_image(im, b);
修改完成在darknet路径下make clean再make
然后将你需要批量测试图片的绝对路径保存于train.txt内,可以放在data文件夹下。(需要开始在darknet文件夹里面创建output文件夹)注意:<>不能省略。
./darknet detector test cfg/voc.data cfg/yolov3.cfg yolov3.weights -dont_show -ext_output <data/train.txt> results.txt
对应着把cfg进行修改即可。
然后就坐等在daknet/output里面的照片输出完成,同时在result.txt里面会保存每张照片里面目标的坐标信息。