ショートカット

ベンチマークとモデル動物園

ミラーサイト

MMDetection V2.0 以降、モデル動物園のメンテナンスには aliyun のみを使用しています。V1.x のモデル動物園は非推奨になりました。

共通の設定

  • すべてのモデルは coco_2017_train で訓練され、coco_2017_val でテストされました。

  • 分散訓練を使用しています。

  • ImageNet 上で事前訓練されたすべての PyTorch スタイルのバックボーンは PyTorch モデル動物園から取得し、Caffe スタイルの事前訓練されたバックボーンは、新しくリリースされた detectron2 のモデルから変換されました。

  • 他のコードベースとの公平な比較のために、8 つの GPU 全ての torch.cuda.max_memory_allocated() の最大値として GPU メモリを報告します。この値は通常、nvidia-smi が表示する値よりも小さくなります。

  • 推論時間は、データ読み込み時間を除く、ネットワークフォワーディングと後処理の合計時間として報告します。結果は、2000 枚の画像で平均時間を計算するスクリプト benchmark.py を使用して取得されました。

ImageNet 事前学習済みモデル

ImageNet 分類タスクで事前学習されたバックボーンモデルから初期化するのが一般的です。すべての事前学習済みモデルのリンクは、open_mmlab で確認できます。img_norm_cfg と重みのソースに応じて、すべての ImageNet 事前学習済みモデルの重みをいくつかのケースに分類できます。

  • TorchVision: ResNet50、ResNet101 など、torchvision の重みに対応しています。img_norm_cfgdict(mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) です。

  • Pycls: RegNetX など、pycls の重みに対応しています。img_norm_cfgdict(   mean=[103.530, 116.280, 123.675], std=[57.375, 57.12, 58.395], to_rgb=False) です。

  • MSRA スタイル: ResNet50_Caffe、ResNet101_Caffe など、MSRA の重みに対応しています。img_norm_cfgdict(   mean=[103.530, 116.280, 123.675], std=[1.0, 1.0, 1.0], to_rgb=False) です。

  • Caffe2 スタイル: 現在、ResNext101_32x8d のみ含まれています。img_norm_cfgdict(mean=[103.530, 116.280, 123.675], std=[57.375, 57.120, 58.395], to_rgb=False) です。

  • その他のスタイル: 例えば、img_norm_cfgdict(mean=[123.675, 116.28, 103.53], std=[1, 1, 1], to_rgb=True) である SSD や、img_norm_cfgdict(mean=[0, 0, 0], std=[255., 255., 255.], to_rgb=True) である YOLOv3 など。

MMDetection で一般的に使用されるバックボーンモデルの詳細な表を以下に示します。

モデル ソース リンク 説明
ResNet50 TorchVision torchvision の ResNet-50 torchvision の ResNet-50 から。
ResNet101 TorchVision torchvision の ResNet-101 torchvision の ResNet-101 から。
RegNetX Pycls RegNetX_3.2gfRegNetX_800mf など。 pycls から。
ResNet50_Caffe MSRA MSRA の ResNet-50 Detectron2 の R-50.pkl モデルの変換コピー。元の重みは MSRA の元の ResNet-50 に由来します。
ResNet101_Caffe MSRA MSRA の ResNet-101 Detectron2 の R-101.pkl モデルの変換コピー。元の重みは MSRA の元の ResNet-101 に由来します。
ResNext101_32x8d Caffe2 Caffe2 ResNext101_32x8d Detectron2 の X-101-32x8d.pkl モデルの変換コピー。FB で Caffe2 を使用して訓練された ResNeXt-101-32x8d モデル。

ベースライン

RPN

詳細は RPN を参照してください。

Faster R-CNN

詳細は Faster R-CNN を参照してください。

Mask R-CNN

詳細は Mask R-CNN を参照してください。

Fast R-CNN(事前計算された提案付き)

詳細は Fast R-CNN を参照してください。

RetinaNet

詳細は RetinaNet を参照してください。

Cascade R-CNN および 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 を参照してください。

スクラッチからの学習

詳細はImageNet事前学習の再考 を参照してください。

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 を参照してください。

PanopticFPN

詳細はPanopticFPN を参照してください。

MaskFormer

詳細はMaskFormer を参照してください。

DyHead

詳細はDyHead を参照してください。

Mask2Former

詳細はMask2Former を参照してください。

Efficientnet

詳細はEfficientnet を参照してください。

その他のデータセット

また、PASCAL VOCCityscapesOpenImages、およびWIDER FACEについても、いくつかの手法のベンチマークテストを実施しています。

事前学習済みモデル

マルチスケールトレーニングと長いスケジュールを用いて、ResNet-50とRegNetX-3.2Gを用いたFaster R-CNNMask R-CNNも学習しています。これらのモデルは、利便性のために、下流タスクの強力な事前学習済みモデルとして機能します。

速度ベンチマーク

トレーニング速度ベンチマーク

analyze_logs.py を使用して、トレーニングにおける反復処理の平均時間を取得できます。ログ分析に例があります。

Mask R-CNNのトレーニング速度を他のいくつかの一般的なフレームワークと比較します(データはdetectron2からコピーされています)。MMDetectionについては、mask-rcnn_r50-caffe_fpn_poly-1x_coco_v1.pyを使用してベンチマークを行い、これはdetectron2のmask_rcnn_R_50_FPN_noaug_1x.yamlと同じ設定になっているはずです。参考として、チェックポイントトレーニングログも提供します。スループットは、GPUのウォームアップ時間をスキップするために、100~500イテレーションの平均スループットとして計算されます。

実装 スループット (img/s)
Detectron2 62
MMDetection 61
maskrcnn-benchmark 53
tensorpack 50
simpledet 39
Detectron 19
matterport/Mask_RCNN 14

推論速度ベンチマーク

推論レイテンシのベンチマークには、benchmark.py を提供します。このスクリプトは、2000枚の画像でモデルのベンチマークを行い、最初の5回の時間を無視して平均時間を計算します。 LOG-INTERVALを設定することで、出力ログ間隔(デフォルト:50)を変更できます。

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

モデル動物園のすべてのモデルのレイテンシは、fuse-conv-bnを設定せずにベンチマークされています。これを設定することで、レイテンシを低減できます。

Detectron2との比較

速度と性能の点で、MMDetectionをDetectron2と比較します。DetectronのコミットID 185c27e(2020年4月30日)を使用します。公平な比較を行うため、両方のフレームワークを同じマシンにインストールして実行します。

ハードウェア

  • NVIDIA Tesla V100 (32G) GPU x 8

  • Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz

ソフトウェア環境

  • Python 3.7

  • PyTorch 1.4

  • CUDA 10.1

  • CUDNN 7.6.03

  • NCCL 2.4.08

性能

種類 学習率スケジュール Detectron2 mmdetection ダウンロード
Faster R-CNN 1x 37.9 38.0 モデル | ログ
Mask R-CNN 1x 38.6 & 35.2 38.8 & 35.4 モデル | ログ
Retinanet 1x 36.5 37.0 モデル | ログ

トレーニング速度

トレーニング速度はs/iterで測定します。値が低いほど優れています。

種類 Detectron2 mmdetection
Faster R-CNN 0.210 0.216
Mask R-CNN 0.261 0.265
Retinanet 0.200 0.205

推論速度

推論速度は、単一GPUでのfps(img/s)で測定します。値が高いほど優れています。Detectron2と整合性を保つために、純粋な推論速度(データ読み込み時間を除く)を報告します。Mask R-CNNの場合、後処理におけるRLEエンコーディングの時間を除外します。ハードウェアの違いにより、サーバでテストした結果よりもわずかに高い公式に報告されている速度も括弧内に含めています。

種類 Detectron2 mmdetection
Faster R-CNN 25.6 (26.3) 22.2
Mask R-CNN 22.5 (23.3) 19.6
Retinanet 17.8 (18.2) 20.6

トレーニングメモリ

種類 Detectron2 mmdetection
Faster R-CNN 3.0 3.8
Mask R-CNN 3.4 3.9
Retinanet 3.9 3.4