标准与模型库¶
共同设定¶
我们默认使用 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
基线¶
DeepLabV3+¶
请参考 DeepLabV3+ 获得详细信息。
NonLocal Net¶
请参考 NonLocal Net 获得详细信息。
Semantic FPN¶
请参考 Semantic FPN 获得详细信息。
MobileNetV2¶
请参考 MobileNetV2 获得详细信息。
MobileNetV3¶
请参考 MobileNetV3 获得详细信息。
Mixed Precision (FP16) Training¶
请参考 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。