1简介
语义分割是对输入图像中的每个像素进行分类的任务。它的应用包括自动驾驶、自然场景理解和机器人技术。它也是全景分割方法的基础,该方法除了为每个像素分配一个类之外,还分离同一类的实例。
先前语义分割方面的进展通常采用ImageNet预训练Backbone,并添加上下文模块,该模块具有较大的平均池化(如PPM)或较大的膨胀率(如ASPP),以快速扩大感受野。它们利用ImageNet预训练的权值以实现在PASCAL VOC 2012等较小的数据集上更快的收敛和更高的精度,在这些数据集上,从头开始训练可能是不可能的。这种方法有两个潜在的问题。ImageNet Backbone通常在最后几个卷积层中有大量的通道,因为它们旨在将图像标记到ImageNet中1000个类中的一个。例如,ResNet18以512通道结束,ResNet50以2048通道结束。
Mobilenetv3的作者发现,将上一个卷积层的通道数量减半并不会降低语义分割的准确性,这暗示了ImageNet模型的通道冗余。其次,ImageNet模型被调优以获取分辨率约为224x224的输入图像,但语义分割的图像要大得多。例如,Cityscapes的图像分辨率为1024x2048, CamVid的图像分辨率为720x960。ImageNet模型缺乏对如此大的图像进行编码。
这两个问题启发作者设计一个专门用于语义分割的Backbone。作者通过引入一种称为“D Block”的新型膨胀结构,直接增加了Backbone中的感受野,并且可以让backbone中的通道数量降低。作者从ResNeXt块结构中获得灵感,该结构在传统的ResNet块中使用了组卷积来提高其准确性,同时保持了相似的复杂度。RegNet采用ResNeXt块,并在广泛的FLOP机制中提供更好的Baseline。
作者采用快速RegNetY-600MF进行语义分割,用“D Block”替换原来的“Y Block”。特别是,当进行组卷积时,“D Block”对一半组使用一个膨胀率,对另一半使用另一个膨胀率。通过在RegSeg Backbone中重复“D Block”,可以很容易地增加感受野而不丢失局部细节。RegSeg的Backbone使用高达14的膨胀率,由于它有足够的感受野,所以不添加任何上下文模块,如ASPP或PPM。
许多最近的工作,如Auto-DeepLab、Dilated SpineNet和DetectoRS都不太愿意在架构设计空间中包含具有大膨胀率的膨胀卷积,仍然依赖于诸如ASPP或PPM之类的上下文模块来增加感受野。作者从很小的膨胀率开始,并始终将一个分支的膨胀率设为“D Block”,以此来解决这个问题。作者希望这项工作可以激励未来的研究人员在模型中尝试更大的膨胀率。
作者还提出了一种轻量级的解码器,它可以有效地恢复在Backbone中丢失的局部细节。以前的解码器(如DeepLabv3+中的解码器)太慢,无法实时运行,而常见的轻量级解码器(如LRASPP)也没有那么有效。在相同的训练设置下,本文的解码器比LRASPP提高了1.0%。
RegSeg是实时运行的。使用具有混合精度的T4 GPU, RegSeg在Cityscapes和CamVid中以30 FPS和70 FPS的速度运行。许多任务需要模型实时运行,比如自动驾驶或移动部署。实时模型比非实时模型更高效,而且当计算复杂度扩大到相同时,它们有潜力击败最先进的模型。例如,EfficientNet先前通过使用神经结构搜索发现的一个低计算模型,通过按比例放大,在ImageNet上获得了最先进的结果。
总而言之,本文的贡献如下:
- 提出了一种新的 dilated block 结构“D Block”,它可以在保持局部细节的同时轻松地增加Backbone的感受野。通过在RegSeg的Backbone中重复D Block,我们可以控制视场而无需额外的计算;
- 介绍了一种轻量级解码器,它的性能优于常见的方案;
- 进行了大量的实验来证明方法的有效性。RegSeg在Cityscapes测试集上实现了78.3 mIOU,同时达到30帧/秒,在CamVid测试集上实现了80.9 mIOU,速度70帧/秒,两者都没有经过ImageNet预训练。在Cityscapes测试集上,RegSeg比SFNet(DF2)的最佳结果高出0.5%。在相同的训练设置下,RegSeg在Cityscapes上的表现比DDRNet-23表现好0.5%。
2相关工作
2.1 网络设计
在ImageNet上训练的模型在一般任务的网络设计中起着重要的作用,它们的改进常常迁移到其他领域,如语义分割。
通过使用随机搜索进行了大量的实验和分析,RegNet对ResNeXt架构的许多改进。它们提供了各种模型,并且在可比的训练设置下,这些模型优于EfficientNet。Effecentnetv2是Effecentnet的改进版本,它通过使用常规的转换而不是在更高分辨率下的深度转换来提高训练速度。在本文中,从RegNet中汲取灵感,采用其块结构进行语义分割。
2.2 语义分割
Fully Convolutional Networks (FCNs)在分割任务上优于传统方法。DeepLabv3在ImageNet预训练的Backbone中使用空洞卷积,将输出stride减少到16或8,而不是通常的32,并通过提出Atrous空间金字塔池模块(ASPP)来增加感受野,该模块并行地应用了不同扩张率的卷积层分支。图2是一个空洞卷积的例子。
PSPNet提出了金字塔池化模块(Pyramid Pooling Module, PPM),它通过首先应用平均池化来应用不同输入分辨率的卷积层的并行分支。在本文中提出了与ASPP结构相似的 dilated block (“D Block”),并将其作为Backbone的主要构建块,而不是在末端附加一个。
DeepLabv3+是在DeepLabv3上的改进,通过添加一个简单的解码器,在输出stride为4处添加2个3 × 3 convs,以提高边界周围的分割质量。
HRNetV2在Backbone中保持不同分辨率的平行分支,最细的分支在输出stride为4。
2.3 实时语义分割
MobilenetV3使用轻量级解码器LRASPP来适应ImageNet模型进行语义分割。BiSeNetV1和BiSeNetV2在Backbone中有两个分支(空间路径和上下文路径),并在结束时合并它们以获得良好的准确性和性能,而不需要ImageNet预训练。SFNet提出了Flow Alignment Module (FAM)来向上采样低分辨率的特征比双线性插值更好。STDC通过删除空间路径和设计一个更好的Backbone来重新考虑BiSeNet体系结构。
HarDNet主要使用3×3卷积和1×1卷积减少GPU内存消耗。DDRNet-23使用两个分支,它们之间有多个双边融合,并附加一个新的上下文模块称为Deep Aggregation Pyramid Pooling Module(DAPPM)。DDRNet-23是目前最先进的实时Cityscapes 语义分割技术,本文也证明了在相同的训练设置下RegSeg优于DDRNet-23。