YOLO输出大中小目标的AP值

在进行实验的过程中,博主一直使用的是COCO数据集,其评价指标如下所示,包含大中小目标的AP值与AR值。博主选用了yolov5与yolov7进行实验,其中yolov5成功,yolov7却出现了问题。

在这里插入图片描述

随后博主在进行对比实验时使用了YOLO模型,其默认是不输出大中小目标的AP值的,为了能够获取这个评价指标值,我们需要对val.py文件进行修改。

下载依赖

首先是我们所需的依赖包:pycocotools

pip install pycocotools

数据集测试

yolov5要执行val.py。yolov7中是test.py,需要加载我们的训练完成的模型文件,其参数与训练时大致相同。

修改文件

首先是将--save-json加上default="True"

parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file')

其次将下面这句代码注释掉:

opt.save_json |= opt.data.endswith('coco.yaml')

报错处理

报错1:

File "/home/ubuntu/anaconda3/envs/python/lib/python3.8/site-packages/torch/serialization.py", line 1033, in _legacy_load
    magic_number = pickle_module.load(f, **pickle_load_args)
_pickle.UnpicklingError: STACK_GLOBAL requires str

将数据集中的cache文件删除即可,然后重新运行。

在这里插入图片描述

运行结果如下,说明该程序已经没有问题了。

在这里插入图片描述

报错2:

可以看到下面报错,这是由于我们的COCO数据集验证时需要json格式的标注文件,而这个文件要放在./coco/annotations/文件夹下,那么我们将instances_val2017.json文件复制一份到yolov7根目录的./coco/annotations即可

Speed: 9.4/1.1/10.4 ms inference/NMS/total per 640x640 image at batch-size 4
Evaluating pycocotools mAP... saving runs/test/exp7/best_predictions.json...
loading annotations into memory...
pycocotools unable to run: [Errno 2] No such file or directory: './coco/annotations/instances_val2017.json'

需要注意的是yolov5在这里的报错与yolov7是有些许不同的:
这里他要存放json的地址为../datasets/coco/annotations/instances_val2017.json

loading annotations into memory...
pycocotools unable to run: [Errno 2] No such file or directory: '../datasets/coco/annotations/instances_val2017.json'
Results saved to runs/val/exp3

报错3

然而yolov7却出现下面问题:

在这里插入图片描述

起初我是先做的yolov7的,开始以为是数据集出现了问题,然而在yolov5中却是正常的,那么就只能是yolov7的修改方式与yolov5不同所导致的。
看到有人说test.py文件要将is_coco手动设置为True,不知道为什么这里结果是False,手动设置为True的话会执行下面coco80->91的函数,因为coco标签文件是到91的,如果不转评估结果都是0。但博主实验后发现不行。

随后在查阅资料时误打误撞,将下面这句代码修改,说实话真不知道为啥这样改,但结果就是成功了。
原本代码

'category_id': coco91class[int(p[5])] if is_coco else int(p[5]),

修改后代码:

'category_id':  int(p[5])

在这里插入图片描述

再次运行就OK了。

yolov7运行结果

在这里插入图片描述

yolov5运行结果

yolov5的运行效果如下图所示,但却发现yolo的评价结果值要比coco的值高了一点,不过倒也无伤大雅。

在这里插入图片描述

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭祥.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值