最近在做小目标检测的东西,因为后期毕业论文需要,所以开始使用Yolov9模型,运行val.py的时候不会自己产生小目标的AP指标,所以研究了一下,步骤非常简单:
第一步:
在数据集中生成json格式的Annotation文件,存放在数据集目录下:
②找到val.py文件中的save-json将其设置default = True
parser.add_argument('--save-json',default=True, action='store_true', help='save a COCO-JSON results file')
③将下面一行代码进行注释
opt.save_json |= opt.data.endswith('coco.yaml')
④将这一行代码进行替换
# anno_json = str(Path(data.get('path', '../coco')) / 'annotations/instances_val2017.json')
anno_json = str(Path(data.get('path', '../coco')) / 'annotations.json') # annotations json
然后运行val.py即可调用COCOeval在验证时添加小目标的指标
以下指标很低的原因只是因为我为了测试能成功训练的时候只跑了一个epoch,这个方法是绝对没有问题的。
--------------------------------------------------------------------------------------------------------------------------------
如何生成json文件参考我的这一篇博文:小目标的检测指标APs怎么获得?------数据集Yolo格式生成json文件_yolo转json-CSDN博客