mmdetection相关model zoo汇总

嵇弘新
2023-12-01

镜像地址

从 MMDetection V2.0 起,我们只通过阿里云维护模型库。V1.x 版本的模型已经弃用。

共同设置

  • 所有模型都是在 coco_2017_train 上训练,在 coco_2017_val 上测试。
  • 我们使用分布式训练。
  • 所有 pytorch-style 的 ImageNet 预训练主干网络来自 PyTorch 的模型库,caffe-style 的预训练主干网络来自 detectron2 最新开源的模型。
  • 为了与其他代码库公平比较,文档中所写的 GPU 内存是8个 GPU 的 torch.cuda.max_memory_allocated() 的最大值,此值通常小于 nvidia-smi 显示的值。
  • 我们以网络 forward 和后处理的时间加和作为推理时间,不包含数据加载时间。所有结果通过 benchmark.py 脚本计算所得。该脚本会计算推理 2000 张图像的平均时间。

ImageNet 预训练模型

通过 ImageNet 分类任务预训练的主干网络进行初始化是很常见的操作。所有预训练模型的链接都可以在 open_mmlab 中找到。根据 img_norm_cfg 和原始权重,我们可以将所有 ImageNet 预训练模型分为以下几种情况:

  • TorchVision:torchvision 模型权重,包含 ResNet50, ResNet101。img_norm_cfgdict(mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
  • Pycls:pycls 模型权重,包含 RegNetX。img_norm_cfgdict( mean=[103.530, 116.280, 123.675], std=[57.375, 57.12, 58.395], to_rgb=False)
  • MSRA styles:MSRA 模型权重,包含 ResNet50_Caffe,ResNet101_Caffe。img_norm_cfgdict( mean=[103.530, 116.280, 123.675], std=[1.0, 1.0, 1.0], to_rgb=False)
  • Caffe2 styles:现阶段只包含 ResNext101_32x8d。img_norm_cfgdict(mean=[103.530, 116.280, 123.675], std=[57.375, 57.120, 58.395], to_rgb=False)
  • Other styles: SSD 的 img_norm_cfgdict(mean=[123.675, 116.28, 103.53], std=[1, 1, 1], to_rgb=True),YOLOv3 的 img_norm_cfgdict(mean=[0, 0, 0], std=[255., 255., 255.], to_rgb=True)

MMdetection 常用到的主干网络细节如下表所示:

模型来源链接描述
ResNet50TorchVisiontorchvision 中的 ResNet-50来自 torchvision 中的 ResNet-50
ResNet101TorchVisiontorchvision 中的 ResNet-101来自 torchvision 中的 ResNet-101
RegNetXPyclsRegNetX_3.2gfRegNetX_800mf来自 pycls
ResNet50_CaffeMSRAMSRA 中的 ResNet-50Detectron2 中的 R-50.pkl 转化的副本。原始权重文件来自 MSRA 中的原始 ResNet-50
ResNet101_CaffeMSRAMSRA 中的 ResNet-101Detectron2 中的 R-101.pkl 转化的副本。原始权重文件来自 MSRA 中的原始 ResNet-101
ResNext101_32x8dCaffe2Caffe2 ResNext101_32x8dDetectron2 中的 X-101-32x8d.pkl 转化的副本。原始 ResNeXt-101-32x8d 由 FB 使用 Caffe2 训练。

Baselines

RPN

请参考 RPN

Faster R-CNN

请参考 Faster R-CNN

Mask R-CNN

请参考 Mask R-CNN

Fast R-CNN (使用提前计算的 proposals)

请参考 Fast R-CNN

RetinaNet

请参考 RetinaNet

Cascade R-CNN and Cascade Mask R-CNN

请参考 Cascade R-CNN

Hybrid Task Cascade (HTC)

请参考 HTC

SSD

请参考 SSD

Group Normalization (GN)

请参考 Group Normalization

Weight Standardization

请参考 Weight Standardization

Deformable Convolution v2

请参考 Deformable Convolutional Networks

CARAFE: Content-Aware ReAssembly of FEatures

请参考 CARAFE

Instaboost

请参考 Instaboost

Libra R-CNN

请参考 Libra R-CNN

Guided Anchoring

请参考 Guided Anchoring

FCOS

请参考 FCOS

FoveaBox

请参考 FoveaBox

RepPoints

请参考 RepPoints

FreeAnchor

请参考 FreeAnchor

Grid R-CNN (plus)

请参考 Grid R-CNN

GHM

请参考 GHM

GCNet

请参考 GCNet

HRNet

请参考 HRNet

Mask Scoring R-CNN

请参考 Mask Scoring R-CNN

Train from Scratch

请参考 Rethinking ImageNet Pre-training

NAS-FPN

请参考 NAS-FPN

ATSS

请参考 ATSS

FSAF

请参考 FSAF

RegNetX

请参考 RegNet

Res2Net

请参考 Res2Net

GRoIE

请参考 GRoIE

Dynamic R-CNN

请参考 Dynamic R-CNN

PointRend

请参考 PointRend

DetectoRS

请参考 DetectoRS

Generalized Focal Loss

请参考 Generalized Focal Loss

CornerNet

请参考 CornerNet

YOLOv3

请参考 YOLOv3

PAA

请参考 PAA

SABL

请参考 SABL

CentripetalNet

请参考 CentripetalNet

ResNeSt

请参考 ResNeSt

DETR

请参考 DETR

Deformable DETR

请参考 Deformable DETR

AutoAssign

请参考 AutoAssign

YOLOF

请参考 YOLOF

Seesaw Loss

请参考 Seesaw Loss

CenterNet

请参考 CenterNet

YOLOX

请参考 YOLOX

PVT

请参考 PVT

SOLO

请参考 SOLO

QueryInst

请参考 QueryInst

Other datasets

我们还在 PASCAL VOCCityscapesWIDER FACE 上对一些方法进行了基准测试。

Pre-trained Models

我们还通过多尺度训练和更长的训练策略来训练用 ResNet-50 和 RegNetX-3.2G 作为主干网络的 Faster R-CNNMask R-CNN。这些模型可以作为下游任务的预训练模型。

速度基准

训练速度基准

我们提供 analyze_logs.py 来得到训练中每一次迭代的平均时间。示例请参考 Log Analysis

我们与其他流行框架的 Mask R-CNN 训练速度进行比较(数据是从 detectron2 复制而来)。在 mmdetection 中,我们使用 mask_rcnn_r50_caffe_fpn_poly_1x_coco_v1.py 进行基准测试。它与 detectron2 的 mask_rcnn_R_50_FPN_noaug_1x.yaml 设置完全一样。同时,我们还提供了模型权重训练 log 作为参考。为了跳过 GPU 预热时间,吞吐量按照100-500次迭代之间的平均吞吐量来计算。

框架吞吐量 (img/s)
Detectron262
MMDetection61
maskrcnn-benchmark53
tensorpack50
simpledet39
Detectron19
matterport/Mask_RCNN14

推理时间基准

我们提供 benchmark.py 对推理时间进行基准测试。此脚本将推理 2000 张图片并计算忽略前 5 次推理的平均推理时间。可以通过设置 LOG-INTERVAL 来改变 log 输出间隔(默认为 50)。

python tools/benchmark.py ${CONFIG} ${CHECKPOINT} [--log-interval $[LOG-INTERVAL]] [--fuse-conv-bn]

模型库中,所有模型在基准测量推理时间时都没设置 fuse-conv-bn, 此设置可以使推理时间更短。

与 Detectron2 对比

我们在速度和精度方面对 mmdetection 和 Detectron2 进行对比。对比所使用的 detectron2 的 commit id 为 185c27e(30/4/2020)。
为了公平对比,我们所有的实验都在同一机器下进行。

硬件

  • 8 NVIDIA Tesla V100 (32G) GPUs
  • Intel® Xeon® Gold 6148 CPU @ 2.40GHz

软件环境

  • Python 3.7
  • PyTorch 1.4
  • CUDA 10.1
  • CUDNN 7.6.03
  • NCCL 2.4.08

精度

模型训练策略Detectron2mmdetection下载
Faster R-CNN1x37.938.0model | log
Mask R-CNN1x38.6 & 35.238.8 & 35.4model | log
Retinanet1x36.537.0model | log

训练速度

训练速度使用 s/iter 来度量。结果越低越好。

模型Detectron2mmdetection
Faster R-CNN0.2100.216
Mask R-CNN0.2610.265
Retinanet0.2000.205

推理速度

推理速度通过单张 GPU 下的 fps(img/s) 来度量,越高越好。
为了与 Detectron2 保持一致,我们所写的推理时间除去了数据加载时间。
对于 Mask RCNN,我们去除了后处理中 RLE 编码的时间。
我们在括号中给出了官方给出的速度。由于硬件差异,官方给出的速度会比我们所测试得到的速度快一些。

模型Detectron2mmdetection
Faster R-CNN25.6 (26.3)22.2
Mask R-CNN22.5 (23.3)19.6
Retinanet17.8 (18.2)20.6

训练内存

模型Detectron2mmdetection
Faster R-CNN3.03.8
Mask R-CNN3.43.9
Retinanet3.93.4
 类似资料: