作者|open-mmlab 编译|Flin 来源|Github
基准测试 和 Model Zoo
环境
硬件
- 8 个 NVIDIA Tesla V100 GPUs
- Intel Xeon 4114 CPU @ 2.20GHz
软件环境
- Python 3.6 / 3.7
- PyTorch 1.1
- CUDA 9.0.176
- CUDNN 7.0.4
- NCCL 2.1.15
镜像站点
我们使用AWS作为托管model zoo的主要站点,并在阿里云上维护镜像。 你可以在模型网址中把https://s3.ap-northeast-2.amazonaws.com/open-mmlab替换为https://open-mmlab.oss-cn-beijing.aliyuncs.com。
常用设置
- 所有FPN基准和RPN-C4基准均使用8个GPU进行训练,批处理大小为16(每个GPU 2张图像)。其他C4基线使用8个批处理大小为8的GPU进行了训练(每个GPU 1张图像)。
- 所有模型都在
coco_2017_train
上训练以及在coco_2017_val
测试。 - 我们使用分布式训练,并且BN层统计信息是固定的。
- 我们采用与Detectron相同的训练时间表。1x表示12个epoch,而2x表示24个epoch,这比Detectron的迭代次数略少,并且可以忽略不计。
- ImageNet上所有pytorch样式的预训练主干都来自PyTorchmodel zoo。
- 为了与其他代码库进行公平比较,我们将GPU内存报告
torch.cuda.max_memory_allocated()
为所有8个GPU 的最大值。请注意,此值通常小于nvidia-smi
显示的值。 - 我们将推理时间报告为总体时间,包括数据加载,网络转发和后处理。
基线
具有不同主干的更多模型将添加到model zoo。
RPN
Faster R-CNN
Mask R-CNN
Fast R-CNN (有预先计算的proposals)
RetinaNet
Cascade R-CNN
Cascade Mask R-CNN
注意s:
- 20e级联(掩码)R-CNN中的时间表指示在第16和19个epoch减少lr,总共减少20个epoch。
混合任务级联(HTC)
注意:
- 有关详细信息和更强大的模型(50.7 / 43.9),请参阅混合任务级联(https://github.com/open-mmlab/mmdetection/blob/master/configs/htc).
SSD
Backbone | Size | Style | Lr schd | 内存 (GB) | 训练时间 (s/iter) | 最短时间 (fps) | box AP | Download |
---|---|---|---|---|---|---|---|---|
VGG16 | 300 | caffe | 120e | 3.5 | 0.256 | 25.9 / 34.6 | 25.7 | model(https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmdetection/models/ssd300_coco_vgg16_caffe_120e_20181221-84d7110b.pth) |
VGG16 | 512 | caffe | 120e | 7.6 | 0.412 | 20.7 / 25.4 | 29.3 | model(https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmdetection/models/ssd512_coco_vgg16_caffe_120e_20181221-d48b0be8.pth) |
注意:
cudnn.benchmark
设置为True
用于SSD训练和测试。- 对于batch size= 1和batch size= 8,报告推理时间。
- 由于模型参数和nms,COCO和VOC的速度有所不同。
组规范化(GN)
有关详细信息,请参考组规范化(https://github.com/open-mmlab/mmdetection/blob/master/configs/gn)。
权重标准化
有关详细信息,请参考权重标准化(https://github.com/open-mmlab/mmdetection/blob/master/configs/gn+ws)。
可变形卷积v2
有关详细信息,请参阅可变形卷积网络(https://github.com/open-mmlab/mmdetection/blob/master/configs/dcn)。
CARAFE:功能的内容感知重组
有关详细信息,请参考CARAFE(https://github.com/open-mmlab/mmdetection/blob/master/configs/carafe)。
Instaboost
有关详细信息,请参考Instaboost(https://github.com/open-mmlab/mmdetection/blob/master/configs/instaboost)。
Libra R-CNN
有关详细信息,请参考Libra R-CNN(https://github.com/open-mmlab/mmdetection/blob/master/configs/libra_rcnn)。
Guided Anchoring
有关详细信息,请参阅Guided Anchoring(https://github.com/open-mmlab/mmdetection/blob/master/configs/guided_anchoring)。
FCOS
有关详细信息,请参阅FCOS(https://github.com/open-mmlab/mmdetection/blob/master/configs/fcos)。
FoveaBox
有关详细信息,请参考FoveaBox(https://github.com/open-mmlab/mmdetection/blob/master/configs/foveabox)。
RepPoints
有关详细信息,请参考RepPoints(https://github.com/open-mmlab/mmdetection/blob/master/configs/reppoints)。
FreeAnchor
有关详细信息,请参考FreeAnchor(https://github.com/open-mmlab/mmdetection/blob/master/configs/free_anchor)。
Grid R-CNN (plus)
有关详细信息,请参考Grid R-CNN(https://github.com/open-mmlab/mmdetection/blob/master/configs/grid_rcnn)。
GHM
有关详细信息,请参阅GHM(https://github.com/open-mmlab/mmdetection/blob/master/configs/ghm)。
GCNet
有关详细信息,请参考GCNet(https://github.com/open-mmlab/mmdetection/blob/master/configs/gcnet)。
HRNet
有关详细信息,请参考HRNet(https://github.com/open-mmlab/mmdetection/blob/master/configs/hrnet)。
Mask Scoring R-CNN
有关详细信息,请参考Mask Scoring R-CNN(https://github.com/open-mmlab/mmdetection/blob/master/configs/ms_rcnn)。
Train from Scratch
有关详细信息,请参考 重新思考ImageNet预训练(https://github.com/open-mmlab/mmdetection/blob/master/configs/scratch)。
NAS-FPN
有关详细信息,请参阅NAS-FPN(https://github.com/open-mmlab/mmdetection/blob/master/configs/nas_fpn)。
ATSS
有关详细信息,请参考ATSS(https://github.com/open-mmlab/mmdetection/blob/master/configs/atss)。
其他数据集
我们还对PASCAL VOC(https://github.com/open-mmlab/mmdetection/blob/master/configs/pascal_voc),Cityscapes(https://github.com/open-mmlab/ mmdetection / blob / master / configs / cityscapes)和WIDER FACE(https://github.com/open-mmlab/mmdetection/blob/master/configs/wider_face)的一些方法进行了基准测试。
与 Detectron 和 maskrcnn-benchmark 的比较
我们将mmdetection与Detectron(https://github.com/facebookresearch/Detectron) 和maskrcnn-benchmark(https://github.com/facebookresearch/maskrcnn-benchmark)进行比较。使用的主干是R-50-FPN。
通常来说,mmdetection与Detectron相比具有3个优势。
- 更高的性能(尤其是在mask AP方面)
- 更快的训练速度
- 高效记忆
性能
Detectron和maskrcnn-benchmark使用Caffe风格的ResNet作为主干。我们使用caffe样式(权重从(https://github.com/facebookresearch/Detectron/blob/master/MODEL_ZOO.md#imagenet-pretrained-models) 和pytorch样式(权重来自官方model zoo)ResNet主干报告结果,表示为pytorch样式结果 / caffe样式结果。
我们发现,pytorch风格的ResNet通常比caffe风格的ResNet收敛慢,因此在1倍进度中导致结果略低,但2倍进度的最终结果则较高。
<table> <tr> <th>类型</th> <th>Lr schd</th> <th>Detectron</th> <th>maskrcnn-benchmark</th> <th>mmdetection</th> </tr> <tr> <td rowspan="2">RPN</td> <td>1x</td> <td>57.2</td> <td>-</td> <td>57.1 / 58.2</td> </tr> <tr> <td>2x</td> <td>-</td> <td>-</td> <td>57.6 / -</td> </tr> <tr> <td rowspan="2">Faster R-CNN</td> <td>1x</td> <td>36.7</td> <td>36.8</td> <td>36.4 / 36.6</td> </tr> <tr> <td>2x</td> <td>37.9</td> <td>-</td> <td>37.7 / -</td> </tr> <tr> <td rowspan="2">Mask R-CNN</td> <td>1x</td> <td>37.7 & 33.9</td> <td>37.8 & 34.2</td> <td>37.3 & 34.2 / 37.4 & 34.3</td> </tr> <tr> <td>2x</td> <td>38.6 & 34.5</td> <td>-</td> <td>38.5 & 35.1 / -</td> </tr> <tr> <td rowspan="2">Fast R-CNN</td> <td>1x</td> <td>36.4</td> <td>-</td> <td>35.8 / 36.6</td> </tr> <tr> <td>2x</td> <td>36.8</td> <td>-</td> <td>37.1 / -</td> </tr> <tr> <td rowspan="2">Fast R-CNN (w/mask)</td> <td>1x</td> <td>37.3 & 33.7</td> <td>-</td> <td>36.8 & 34.1 / 37.3 & 34.5</td> </tr> <tr> <td>2x</td> <td>37.7 & 34.0</td> <td>-</td> <td>37.9 & 34.8 / -</td> </tr> </table>
训练速度
训练速度以s/iter为单位。越低越好。
<table> <tr> <th>类型</th> <th>Detectron (P100<sup>1</sup>)</th> <th>maskrcnn-benchmark (V100)</th> <th>mmdetection (V100<sup>2</sup>)</th> </tr> <tr> <td>RPN</td> <td>0.416</td> <td>-</td> <td>0.253</td> </tr> <tr> <td>Faster R-CNN</td> <td>0.544</td> <td>0.353</td> <td>0.333</td> </tr> <tr> <td>Mask R-CNN</td> <td>0.889</td> <td>0.454</td> <td>0.430</td> </tr> <tr> <td>Fast R-CNN</td> <td>0.285</td> <td>-</td> <td>0.242</td> </tr> <tr> <td>Fast R-CNN (w/mask)</td> <td>0.377</td> <td>-</td> <td>0.328</td> </tr> </table>
-
1。Facebook的Big Basin服务器(P100 / V100)比我们使用的服务器稍快。mmdetection在FB的服务器上也可以稍快一些地运行。
-
2。为了公平比较,我们在此处列出了caffe的结果。
推理速度
推理速度在单个GPU上以fps(img / s)进行测量。越高越好。
<table> <tr> <th>类型</th> <th>Detectron (P100)</th> <th>maskrcnn-benchmark (V100)</th> <th>mmdetection (V100)</th> </tr> <tr> <td>RPN</td> <td>12.5</td> <td>-</td> <td>16.9</td> </tr> <tr> <td>Faster R-CNN</td> <td>10.3</td> <td>7.9</td> <td>13.5</td> </tr> <tr> <td>Mask R-CNN</td> <td>8.5</td> <td>7.7</td> <td>10.2</td> </tr> <tr> <td>Fast R-CNN</td> <td>12.5</td> <td>-</td> <td>18.4</td> </tr> <tr> <td>Fast R-CNN (w/mask)</td> <td>9.9</td> <td>-</td> <td>12.8</td> </tr> </table>
训练内存
<table> <tr> <th>类型</th> <th>Detectron</th> <th>maskrcnn-benchmark</th> <th>mmdetection</th> </tr> <tr> <td>RPN</td> <td>6.4</td> <td>-</td> <td>3.3</td> </tr> <tr> <td>Faster R-CNN</td> <td>7.2</td> <td>4.4</td> <td>3.6</td> </tr> <tr> <td>Mask R-CNN</td> <td>8.6</td> <td>5.2</td> <td>3.8</td> </tr> <tr> <td>Fast R-CNN</td> <td>6.0</td> <td>-</td> <td>3.3</td> </tr> <tr> <td>Fast R-CNN (w/mask)</td> <td>7.9</td> <td>-</td> <td>3.4</td> </tr> </table>
毫无疑问,maskrcnn基准测试和mmdetection比Detectron的存储效率更高,而主要优点是PyTorch本身。我们还执行一些内存优化来推动它向前发展。
请注意,Caffe2和PyTorch具有不同的API,以通过不同的实现获取内存使用情况。对于所有代码库,nvidia-smi
显示的内存使用量均大于上表中报告的数字。
原文链接:https://mmdetection.readthedocs.io/en/latest/MODEL_ZOO.html
欢迎关注磐创AI博客站: http://panchuang.net/
sklearn机器学习中文官方文档: http://sklearn123.com/
欢迎关注磐创博客资源汇总站: http://docs.panchuang.net/
来源:oschina
链接:https://my.oschina.net/u/4253699/blog/4263555