mmdetection训练及测试过程

Train

训练自己的数据集

python tools/train.py configs/xxxx.py 
复制代码

训练后生成的.pth文件即训练模型

Test

测试自己的数据集

--out 带上out文件的路径,生成.pkl文件,pkl文件以数组形式保存了检测框的四个信息
--eval 需要评估的项目,包括:*proposal_fast, proposal, bbox, segm, keypoints*(debug:mAP评估error),评估的数据会展示在测试行为结束后展示在小黑窗
--show 可视化展示,包括类别和检测框
复制代码
python tools/test.py configs/xxxx.py work_dirs/xxxx/epoch_xx.pth --out xxx.pkl 

--show-dir xxx路径     将可视化结果保存在指定路径
python tools/test.py configs/xxxx.py work_dirs/xxxx/epoch_xx.pth --show-dir ./result

复制代码

关于显示.pkl文件内容: blog.csdn.net/weixin_3945…

多类训练

通常我们在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阈值下的结果 修改iou_thrs=None为iou_thrs=[0.5]

对单张图片进行测试

#coding=utf-8
 
from mmdet.apis import init_detector
from mmdet.apis import inference_detector
# 由于mmdetection版本更新导致show_result的使用方法为model.show_result
# from mmdet.apis import show_result
 
# 模型配置文件
config_file = '../../configs/faster_rcnn_r101_fpn_1x.py'
 
# 预训练模型文件
checkpoint_file = '../../models/faster_rcnn_r101_fpn_1x_20181129-d1468807.pth'
 
# 通过模型配置文件与预训练文件构建模型
model = init_detector(config_file, checkpoint_file, device='cuda:0')
 
# 测试单张图片并进行展示
img = 'test1.jpg'
result = inference_detector(model, img)
model.show_result(img, result, model.CLASSES)
复制代码

猜你喜欢

转载自juejin.im/post/7031072292377460767