- 我们默认使用 4 卡分布式训练
- 所有 PyTorch 风格的 ImageNet 预训练网络由我们自己训练,和 论文 保持一致。 我们的 ResNet 网络是基于 ResNetV1c 的变种,在这里输入层的 7x7 卷积被 3个 3x3 取代
- 为了在不同的硬件上保持一致,我们以
torch.cuda.max_memory_allocated()
的最大值作为 GPU 占用率,同时设置torch.backends.cudnn.benchmark=False
。 注意,这通常比nvidia-smi
显示的要少 - 我们以网络 forward 和后处理的时间加和作为推理时间,除去数据加载时间。我们使用脚本
tools/benchmark.py
来获取推理时间,它在torch.backends.cudnn.benchmark=False
的设定下,计算 200 张图片的平均推理时间 - 在框架中,有两种推理模式
slide
模式(滑动模式):测试的配置文件字段test_cfg
会是dict(mode='slide', crop_size=(769, 769), stride=(513, 513))
. 在这个模式下,从原图中裁剪多个小图分别输入网络中进行推理。小图的大小和小图之间的距离由crop_size
和stride
决定,重合区域会进行平均whole
模式 (全图模式):测试的配置文件字段test_cfg
会是dict(mode='whole')
. 在这个模式下,全图会被直接输入到网络中进行推理。 对于 769x769 下训练的模型,我们默认使用slide
进行推理,其余模型用whole
进行推理
- 对于输入大小为 8x+1 (比如769),我们使用
align_corners=True
。其余情况,对于输入大小为 8x (比如 512,1024),我们使用align_corners=False
请参考 FCN 获得详细信息。
请参考 PSPNet 获得详细信息。
请参考 DeepLabV3 获得详细信息。
请参考 PSANet 获得详细信息。
请参考 DeepLabV3+ 获得详细信息。
请参考 UPerNet 获得详细信息。
请参考 NonLocal Net 获得详细信息。
请参考 EncNet 获得详细信息。
请参考 CCNet 获得详细信息。
请参考 DANet 获得详细信息。
请参考 APCNet 获得详细信息。
请参考 HRNet 获得详细信息。
请参考 GCNet 获得详细信息。
请参考 DMNet 获得详细信息。
请参考 ANN 获得详细信息。
请参考 OCRNet 获得详细信息。
请参考 Fast-SCNN 获得详细信息。
请参考 ResNeSt 获得详细信息。
请参考 Semantic FPN 获得详细信息。
请参考 PointRend 获得详细信息。
请参考 MobileNetV2 获得详细信息。
请参考 MobileNetV3 获得详细信息。
请参考 EMANet 获得详细信息。
请参考 DNLNet 获得详细信息。
请参考 CGNet 获得详细信息。
请参考 Mixed Precision (FP16) Training 在 BiSeNetV2 训练的样例 获得详细信息。
- 8 NVIDIA Tesla V100 (32G) GPUs
- Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz
- Python 3.7
- PyTorch 1.5
- CUDA 10.1
- CUDNN 7.6.03
- NCCL 2.4.08
为了公平比较,我们全部使用 ResNet-101V1c 进行标定。输入大小为 1024x512,批量样本数为 2。
训练速度如下表,指标为每次迭代的时间,以秒为单位,越低越快。
Implementation | PSPNet (s/iter) | DeepLabV3+ (s/iter) |
---|---|---|
MMSegmentation | 0.83 | 0.85 |
SegmenTron | 0.84 | 0.85 |
CASILVision | 1.15 | N/A |
vedaseg | 0.95 | 1.25 |
注意:DeepLabV3+ 的输出步长为 8。