MMDetection.pdf

论文地址:https://arxiv.org/pdf/1906.07155.pdf
源码地址:https://github.com/open-mmlab/mmdetection

2019年收集于cs.CV的论文《MMDetection: Open MMLab Detection Toolbox and Benchmark》介绍了具集MMDetection,该工具集支持物体检测,实例分割,它基于2018年COCO挑战赛冠军队MMDet的代码,程序由Pytorch编写,不仅提供了代码,还提供编译好的模型。论文偏重工程实践,还提供各种算法的测试对比。

MMDetection有以下优势:

模块化设计,开发者可快速构造自己的目标检测工具。
支持多个当前最新的目标检测框架。
可以在GPU上高效地运行,与当前最优秀的工具持平或更快。
效果更好,赢得了2018年COCO挑战赛。

支持框架

MMDetection支持多种当前流行的目标识别框架,具体如下表所示:
在这里插入图片描述
单级(One-Stage)方法

SSD:2015年提出的精典且使用广泛的单级目标检测模型。
RetinaNet:2017年提出的基于焦点损失的高性能单级模型。
GHM:2019年提出的调节梯度的单级模型。
FCOS:2019年提出的全卷积单级模型。
FSAF:2019年提出的基于特征选择(feature selective)的无锚点单级模型。

两级(Two-Stage)方法

Fast R-CNN [9]:2015年提出的R-CNN的改进版本,它使用端到端的模型提高了训练和检测速度,由于目标检测被分为前期的计算备选区域和后期的分类以及精调,因此被认为两级方法。
Faster R-CNN:2015年提出的Fast R-CNN的改进版本,主要加强了备选区域的计算速度。
R-FCN:2016年提出的使用全卷积方法实现的目标检测和语义分割。
Mask R-CNN:2017年提出的目标检测和实例分割方法,可使用端到端的模型实现目标检测、实例分割、关键点检测等任务,且精度很高。
Grid R-CNN [20]:2018年提出的基于网格的精调目标位置的方法(类似YOLO)。
Mask Scoring R-CNN:2019年提出通过预测IoU掩码提升Mask R-CNN模型效果的方法。
Double-Head R-CNN:2019年提出的多头RNN,用不同的头分别实现分类和定位。

多级(Multi-stage)方法

Cascade R-CNN:2017年提出的有效的多级目标检测方法。
Hybrid Task Cascade:2019年提出的多级多分枝的目标检测和实例分割方法。MMDetection工具集不仅支持目标检测的多种方法,还考虑到了更多的使用场景及扩展方法。

通用的模块和方法

Mixed Precision Training:2018年提出的使用半精度浮点数训练深度模型的方法,此方法可以提高模型效率。
Soft NMS:2017年提出的NMS的替代方案,也用于目标区域去冗余。
OHEM:2016年提出的在线挖掘难采样的方法(用更难的实例训练,以便更快收敛)。
DCN:2017年提出的可变形卷积和可变形RoI池化。
DCNv2:2018年提出的调制变形算子。
Train from Scratch:2018年提出的用随机初始化方式替代预训练模型的方法。
ScratchDet:2018年提出的另一种从头训练模型的方法。
M2Det:2018年提出的更有效的构造特征金字塔的方法。
GCNet:2019年提出的全局上下文模型可以有效地对全局建模。
Generalized Attention:2019年提出的普适的注意力方法。
SyncBN:工具集中用Pytorch实现了,利用GPU执行同步批量规范化(batch normalization,BN)。
Group Normalization:2018年提出的BN的替代方法,在目标检测任务中batch_size比分类任务中的batch_size小很多,BN可能影响模型效果,可使用GN,在规范化时计算各个通道的均值和方差,以减轻上述问题的影响。
Weight Standardization:2019年提出的微批量训练卷积层权重标准化。
HRNet:2019年提出的针对高分辨率图像表示的基础网络(backbone)。
Guided Anchoring:2019年提出的预测稀疏和异形的锚点方法。
Libra R-CNN:2019年提出的一种平衡目标检测学习的新框架。

此论文也是近两年目标识别技术的总览,MMDetection工具集实现了上述所有方法,截至目前, git项目仍在不断更新。

结构

虽然不同目标检测工具框架不同,但一般都由以下几部分(头、脖子、躯干……)构成:

Backbone(躯干) 底层网络用于提取图片特征,如VGG,Resnet等,常常由卷积网络构成,不包含最后的全连接层。它一般也是各种图像处理网络中体量最大的部分。
Neck(脖子) Neck衔接backbone和head,实现精调特征或者精细配置,如FPN(特征金字塔网络)就是典型Neck。
DenseHead(头) DenseHead用于处理带有位置信息的特征(一般是WxHxC),比如AnchorHead RPN-Head RetinaHead等等。
RoIExtractor
RoI是感兴趣的区域,RoIExtractor用RoI池化或者类似的方法,从特征金字塔中提取某一区域的图像特征。
RoIHead
RoIHead将区域特征作为输入,对于每一个区域执行预测任务,例如分类,精调边框,计算实例掩码(Mask)等等。

单级和双级的框架如下图所示:

在这里插入图片描述
工具集提供各个子模块的实现,开发者可以通过简单的装配,实现具体任务。一个典型的训练流程如下图所示:
在这里插入图片描述

模型效果

下面截取了一部分评测效果,论文中还提供更多的针对COCO数据集的测试,包括各种上层目标识别算法和下层特征提取模型,对比了各个模型的精度、速度以及内存占用量,详情请见论文。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: mmdetection test.py 是一个命令行工具,用于在mmdetection框架中进行模型测试。通过该工具,可以加载训练好的模型,对测试集进行预测,并输出预测结果。在使用该工具时,需要指定测试集的路径、模型的路径、输出结果的路径等参数。具体使用方法可以参考mmdetection官方文档。 ### 回答2: MMDetection是一个基于PyTorch的开源目标检测框架,可用于各种物体检测任务。在MMDetection中,test.py是用于测试训练好的模型的主要脚本之一。 使用test.py脚本,需要先准备测试集数据和训练好的模型。测试集数据通常包括一组或多组待检测的图像,这些图像需要与训练集数据的格式相同。训练好的模型可以是从已有的预训练模型微调而来,也可以是从头开始训练的。 在准备好数据和模型后,可以使用test.py脚本进行测试。具体步骤如下: 1. 修改配置文件 首先需要编辑配置文件,将项目的路径和测试文件路径等参数设置正确。配置文件通常保存在config文件夹中,其中包括运行模型的参数、模型架构、训练方案等。可用记事本或其他编辑器打开该文件进行修改。 2. 运行测试 在命令行中输入以下代码即可运行测试 python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}] [--eval ${EVAL_METRICS}] [--show] [--show-dir ${SHOW_DIR}] 其中,${CONFIG_FILE}是指配置文件的路径;${CHECKPOINT_FILE}是指训练好的模型的路径;${RESULT_FILE}是指测试结果保存的路径;${EVAL_METRICS}是指测试评价指标,如AP、AR等;--show和--show-dir参数是可选的,前者用于显示测试结果的图像,后者用于指定显示结果的文件夹路径。 3. 测试结果 测试完成后,可以查看测试结果。如果指定了--out参数,则测试结果会保存在该路径下,可以使用文本编辑器或其他工具打开查看。如果使用了--show参数,则测试结果的图像会显示在屏幕上,可以逐一查看每张图片的检测结果。 总之,MMDetection的test.py脚本是一个十分重要的工具,它可以方便快捷地进行目标检测模型的测试。需要注意的是,在实际应用中,还需根据具体任务和数据情况进行适当的参数调整和模型优化,以获得更佳的检测结果。 ### 回答3: mmdetection是一个基于PyTorch框架的目标检测工具,提供了训练和测试目标检测模型的工具链。其中test.py是用来测试训练好的目标检测模型的脚本。 在使用mmdetection之前,需要先安装相关的依赖包和mmdetection。可以使用以下命令安装: ``` pip install -r requirements/build.txt pip install -v -e . ``` 安装完成后,需要下载数据集和预训练模型,可以通过以下命令进行下载: ``` python tools/get_data.py ``` 然后,需要准备测试集的数据和相应的配置文件。测试集的数据应该放在一个文件夹中,并且每个图片需要有一个对应的xml文件。配置文件可以在configs文件夹中找到,需要选择与训练时使用的配置文件相同的配置文件。 接下来就可以运行test.py脚本进行测试,例如: ``` python tools/test.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py work_dirs/faster_rcnn_r50_fpn_1x_coco/epoch_12.pth --eval bbox ``` 其中,第一个参数是配置文件的路径,第二个参数是模型权重文件的路径,第三个参数是评估的指标,这里选择bbox指标,即bounding box的准确率和AP值。运行完后,会在结果文件夹中生成测试结果。 mmdetection的test.py脚本还提供了很多其他的参数,可以通过以下命令查看: ``` python tools/test.py --help ``` 总之,mmdetection test.py可以方便地测试训练好的目标检测模型,并输出评估结果,可用于模型优化和验证。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值