mmdetection多类目标训练查看单类准确率(AP)以及使用模型测试看结果(show)

本文主要是个人笔记,以后便于查询,也供借鉴。通常我们在mmdetection平台上就训练一类目标,训练过程中每跑完一个epoch就可以查看到该目标的0.5,0.75等阈值下的准确率,还有一个整体的mAP。但是,当你跑多类目标时,多个目标一起训练怎么看单类的准确率?mmdetection默认的设置是多类目标一起训练时,打印整体的准确率,如果要在训练和测试的时候查看单类的准确率,可以如下操作(以下操作的前提是已经训练起来了,相关多类训练的多类配置文件修改好了):
在mmdetection/mmdet/datasets/coco.py中找到如下代码:

def evaluate(self,
                 results,
                 metric='bbox',
                 logger=None,
                 jsonfile_prefix=None,
                 classwise=False,
                 proposal_nums=(100, 300, 1000),
                 iou_thrs=None,
                 metric_items=None):

修改classwise=False为classwise=True,打印结果变化如下:
默认的打印结果:
默认打印结果
修改后如下,增加了单类的AP,即准确率
修改后的结果
但是,上图中的单类准确率并不是很好的评价指标,它是AP在各个阶段取的一个平均值,在0.5到0.95这个区间内取的综合评估结果,我们需要进一步限定在某个阈值下比较有意义,比如阈值设在0.5时的准确率,这时只统计0.5阈值下的结果,代码如下:

def evaluate(self,
                 results,
                 metric='bbox',
                 logger=None,
                 jsonfile_prefix=None,
                 classwise=True,
                 proposal_nums=(100, 300, 1000),
                 iou_thrs=[0.5],
                 metric_items=None):

打印结果如下:
在这里插入图片描述
如果在训练的时候没有修改如上代码,可以不用重新训练,使用训练出来的模型进行测试也可得到如上结果,测试命令如下:

python3 tools/test.py ./config/retinanet/retinanet_r50_fpn_1x_coco.py ./work_dirs/retinanet_r50_fpn_1x_coco/epoch_12.pth --out ./result/result.pkl --eval bbox

模型训练好之后,对验证集进行测试,打印预测框在验证集图像上,可以使用下面的命令:

python3 tools/test.py ./config/retinanet/retinanet_r50_fpn_1x_coco.py ./work_dirs/retinanet_r50_fpn_1x_coco/epoch_12.pth --show-dir ./result

看到如下效果
在这里插入图片描述

版权声明:本文为CSDN博主「清梦枕星河~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44442727/article/details/119024930

清梦枕星河~

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

目标检测中的数据格式转换工具Roboflow

目标检测中的数据格式转换工具、Roboflow Roboflow提供了您需要的所有工具,将原始图像转换为定制的训练有素的计算机视觉模型,并部署它在您的应用程序中使用。 Roboflow支持检测目标和分类模型。 支持多种标注格式的转换:

小目标数据增强

环境ubuntu 18.04 64位YOLO数据集简介近年来,目标检测已经取得了长足的进步,不过,尽管如此,小目标与大目标之间,依然有着非常大的差距。论文 Augmentat