接上篇博客~(基于google colab)
由于训练集图片和想要检测图片的尺寸不一致的问题,需要将欲检测图片切割,将切割后的小图分别预测再合成大图。这时候涉及到了批量检测图片的问题,查询很多方法大都复杂且不易实现,后参考博客实现了该功能,总结如下:
- 首先切割图片,根据自己的需求写一个切割图片的脚本,并将切割后的图片保存在一个文件夹下。
- 生成一个包含该文件夹下所有图片名字的txt文件。
!ls -R /mydrive/yolo/outimg/* > input.txt
- 参考博客修改detector.c文件
- 第一步
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020060511370318.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NtaWxlX21pbmdt,size_16,color_FFFFFF,t_70)
- 第二步:在detector.c开头static int coco_ids[] = 下面加一段代码:
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);
return name;
}
- 将修改好的detector.c文件上传到colab的对应文件夹下:
!cp /mydrive/yolo/detector.c ./src
- 在darknet路径下创建一个output文件夹
- 重新编译darknet
!make
!./darknet detector test data/obj.data cfg/yolov4-custom2.cfg /mydrive/yolo/backup/yolov4-ship_final_1.weights -ext_output -dont_show </content/darknet/input.txt> result.txt -thresh 0.02
- 检测完成
检测完成后会在output文件夹下生成批量检测后的图片,还会生成一个带有检测信息的result.txt文件。 - 合并
自己写一个脚本将检测后的子图合并成大图,也可写一个脚本提取result.txt中的标记框信息然后添加到原图上。