① Fast-SCNN
https://blog.csdn.net/calvinpaean/article/details/88534052
https://arxiv.org/pdf/1902.04502.pdf
https://github.com/Tramac/Fast-SCNN-pytorch
https://github.com/xiaoyufenfei/Efficient-Segmentation-Networks
摘要 :本文介绍一种适用于低内存嵌入式设备、计算高效、可用于高分辨率图像(1024×2048px)的实时语义分割模型FastSCNN。在现有的快速分割的双分支方法的基础上,我们引入“学习下采样”模块,该模块同时计算多个分辨率分支的低层级特征。然后将高分辨率的空间细节与低分辨率提取的深层特征结合起来,在Cityspaces数据集上获得68.0%mIoU的精度,123.5FPS的速度。我们还证明大规模预训练没必要。我们用ImageNet预训练和Cityspaces的粗标记数据对我们的度量进行了实验验证。最后,我们不修改网络结构,在下采样的输入上获得了速度更快、精度有可比性的结果。
1.引言
实时语义分割的研究最近获得了显着的普及[21,34,17,25,36,20]。
我们发现,文献中语义分割通常由具有编码器-解码器框架的深卷积神经网络来处理[29,2],而许多计算高效的方法使用双分支或多分支架构[21,34,17]。通常情况下:
•更大的感受野对于学习对象类之间的复杂关联(即全局上下文)很重要,
•图像中的空间细节是保持物体边界所必需的,以及
•需要具体的设计来平衡速度和准确性(而不是重定位的分类DCNNs)。
具体地说,在两个分支网络中,较深的分支在低分辨率下用于捕获全局上下文,而较浅的分支在全输入分辨率下用于学习空间细节。然后将二者合并,得到最终的语义分割结果。重要的是,较深的分支带来的计算成本的提升需要靠缩小输入尺寸来克服。而要获得全分辨率图只需要较少的层数。因而,在现代GPU上,实时性是可以实现的。与编码-解码不同的是,双分支中不同分辨率的初始卷积是不共享的。这里值得注意的是,引导上采样网络(GUN)[17]和图像级联网络(ICNet)[36]只在前几层之间共享权重。
我们提出FastSCNN,将双分支技术[21,34,17,36]与编码-解码[29,2]结合起来。FastSCNN的结构如图1。因为深度卷积网络的浅层主要提取低级特征[35,19],我们共享了双分支中初始层的计算。我们称这种技术为“学习下采样”,其效果与编码-解码中的跳连相似。我们只使用了一次跳连来保证计算效率。“学习下采样”模块层数比较浅,以保证特征共享的有效性。最后,我们还使用了深度可分离卷积[30,10]和逆残差模块[28]。
在Cityspaces数据集[6]上,FastSCNN在NvidiaTitanXp(Pascal)上处理全分辨率图像(1024×2048px),速度是123.5FPS,精度是68.0%mIoU。比现有最先进技术快两倍。(BiSeNet,71.4%mIoU,[34])。
虽然我们的参数量达到1.11M,但大多数离线分割方法(如DeepLab[4]和PSPNet[37])以及一些实时算法(如GUN[17]和ICNet[36])的参数量多得多。FastSCNN的模型容量特别低,原因是:(1)要在低内存的嵌入式设备上运行,(2)期待有更好的泛化能力。先前的很多工作都建议在ImageNet数据集[27]上预训练以提高精度和泛化能力。我们研究了预训练对低容量的FastSCNN的影响,结论是,使用预训练或者弱标签数据没有明显的提升效果,在Cityscapes数据集上只提升了0.5%mIoU,这一点和那些大容量的模型刚好相反。总结下我们的贡献:
(1) 提出了FastSCNN,在高分辨率图像(1024×2048px)上,精度有竞争力(68.0%),速度特别强(123.5fps)。
(2) 使用离线方法中常用的跳连,提出了一个浅层的“学习下采样”模块,以快速高效地多分支低层级特征提取。
(3)将FastSCNN设计为小容量,并且实验证明,对于小容量网络,多跑一些epoch,和使用预训练或额外的弱标签数据是等效的。
此外,对于下采样的输入,我们不对网络做任何修改就达到了最先进水平。
2.相关工作
我们对比分析语义分割方法,尤其是低功耗低内存的实时语义分割方法[2,20,21,36,34,17,25,18]。
2.1.语义分割的基础
最先进的语义分割结合了两个独立的模块:编码器和解码器。编码器用卷积和池化来提取特征。解码器从低分辨率特征中恢复空间细节,并预测分割结果[29,2]。通常,编码器用一个移除全连接层的分类网络,例如VGG或ResNet。
FCN[29]是大多数分割模型的基础,采样VGG为编码器,双线性上采样结合较低层的跳接来恢复空间细节。U-Net[26]使用密集的跳连进一步利用空间细节。
之后,受全局的图像上下文先验启发[13,16],PSPNet[37]使用金字塔池化模块,DeepLab[4]使用atrous空间金字塔池化(ASPP)对全局上下文进行编码和利用。
其他竞争性的基本分割结构使用条件随机场(CRF)[38,3]或递归神经网络[32,38]。然而它们不实时。
与目标检测[23,24,15]类似,速度是一个重要因素[21,34,17,25,36,20]。SegNet在FCN的基础上引入了联合编解码模型,成为最早的高效分割模型之一。继SegNet之后,ENet[20]还设计了一个具有很少几层的编码器-解码器,以降低计算成本。
最近出现了双分支和多分支方法。ICNet[36]、ContextNet[21]、BiSeNet[34]和GUN[17]通过在深度分支中减少输入的分辨率来学习全局上下文,而在浅层分支的全分辨率特征中学习边缘的细节信息。
然而,最先进的实时语义分割仍然具有局限性,并且通常需要高端GPU。受双分支方法的启发,FastSCNN使用了一个浅层的网络路径来编码细节信息,上下文信息在低分辨特征中被有效地学习,如图2所示。
2.2 DCNN中的高效设计
深度可分离卷积: MobileNet[10]提出深度可分离卷积,减少了浮点运算和卷积参数,降低了计算量和内存需求。
高效的重新设计: Chollet[5]使用高效的深度可分离卷积设计了Xception 网络。MobileNet-V2提出了inverted bottleneck resial block[28]来构建一个高效率的深度网络,用于分类任务。ContextNet[21]使用 inverted bottleneck resial block设计了一个双分支网络,用于实时语义分割。
网络量化: 浮点计算相较于整型和二进制操作要昂贵的多,模型运行时间可以进一步通过量化技巧来缩短。
网络压缩: 剪枝可以用于减小预训练网络的大小,使运行速度更快,参数更少,内存占用更少。
FastSCNN很依赖于深度可分离卷积和resial bottleneck blocks[28]。此外,我们还引入双分支结构,与“学习下采样”模块结合起来,允许在多级分辨率上共享特征,如图2所示。注意,尽管多个分支的初始层提取了相似的特征[35,19],但常用的双分支方法并没有使用这一点。网络量化和网络压缩可以正交应用,这个留给我们以后的工作。
2.3 辅助任务的预训练
普遍认为辅助任务的预训练可以提高精度。早期的目标检测[7]和语义分割[4,37]的研究在ImageNet上进行了预训练[27]。其他实时高效的语义分割方法也在ImageNet上进行了预训练[36,34,17]。然而,尚不清楚低容量网络是否有必要预训练。我们实验证明预训练对小网络没有明显的提升效果。数据增广和训练更多的epoch也能取得类似的效果。
3 我们提出的FastSCNN
FastSCNN灵感来自于双分支结构[21,34,17]和具有跳连的编码器网络[29,26]。因为注意到网络的前几层通常提取低级特征,我们将跳连重新解释为一个“学习下采样”模块,这样我们就能够融合两个框架的关键思想,并可以构建一个快速的语义分割模型。图1和表1是FastSCNN的结构。接下来将介绍我们的设计动机和各模块的详细设置。
3.1 动机
当前最先进的实时语义分割方法是基于双分支结构,每个分支作用在不同级别的分辨率上[21,34,17],从输入图像的低分辨特征中学习全局信息,并使用浅层网络的全分辨率来细化分割结果的精度。由于输入分辨率和网络深度是决定运行时间的主要因素,双分支结构使得模型可以是实时的。
众所周知,网络的前几层提取低级特征,例如边和角[35,19]。因此,我们不采用将两个分支完全独立的方法,而是引入学习下采样模块,让两个分支共享浅层的网络模块。
3.2 网络结构
我们的FastSCNN使用“学习下采样模块”,一个粗糙的全局特征提取模块、一个特征融合模块和一个标准的分类器。所有模块都是用深度可分离卷积来构建,深度可分离卷积已经是许多高效网络的关键[5,10,21]。
3.2.1学习下采样
为了保证低层特征共享的有效和高效,学习下采样模块只采用了三层结构。第一层是标准卷积层(Conv2D),另外两层是深度可分离卷积(DSConv)。这里要说明的是,虽然DSConv可以提升计算效率,但由于输入图像只有3个通道,深度可分离卷积放在第一层的话带来的效率的提升是微不足道的,因此第一层用标准卷积。
学习下采样的3层中的每一层的卷积滑动步长都是2,然后是批量归一化和ReLU。标准卷积和深度可分离中的深度层的卷积核尺寸都是3×3。和[5,28,21]一样,我们省略了深度可分离卷积中深度卷积和点卷积的非线性运算。
3.2.2全局特征提取器
全局特征提取模块是为了获取图像分割的全局上下文。与通常的双分支方法在原始图像上获取低分辨率特征不同,我们是取“学习下采样”模块的输出作为全局特征提取器的输入,其分辨率是原始图像的1/8。详细结构如表1所示。我们使用MobileNet-v2[28]中提出的高效的bottleneck resial block,如表2所示。
特别地,当输入输出大小相同时,我们对bottleneck resial block采用残差连接。我们的bottleneck block使用了一个高效的深度可分离卷积,这样参数量更小,浮点计算更少。此外,在末尾添加金字塔池模块(PPM)[37],以聚合基于不同区域的上下文信息。
3.2.3特征融合模块
与ICNet[36]和ContextNet[21]类似,我们更喜欢简单的特征相加,以确保效率。或者,使用更复杂的特征融合模块,例如[34],这样精度更高而计算量也更大。特征融合模块的细节如表3所示。
3.2.4分类器
分类器中使用了两个深度可分离卷积和一个点卷积。我们发现在特征融合模块后增加几层可以提高精度。分类器模块的详细信息如表1所示。
在训练过程中使用Softmax,因为使用了梯度下降。在推理过程中,我们可以用Argmax代替昂贵的Softmax计算。我们将此选项表示为Fast SCNN cls(分类)。另一方面,如果需要输出概率模型,则使用softmax,表示为FastSCNN prob(概率)。
3.3 和现有的最先进技术比较
3.3.1与双分支模型的关系
最先进的实时模型(ContextNet[21]、BiSeNet[34]和GUN[17])使用双分支结构。我们的“学习下采样”模块相当于它们的空间路径,因为它很浅,从全分辨率学习,并用于特征融合模块(图1)。
我们的全局特征提取模块相当于这种方法更深层的低分辨率分支。相反,我们的全局特征抽取器与学习下采样模块共享其前几层的计算。通过共享层,我们不仅降低了特征提取的计算复杂度,而且还降低了所需的输入大小,因为FastSCNN使用1/8分辨率而不是1/4分辨率进行全局特征提取。
3.3.2与编码-解码模型的关系
FastSCNN可以看做是诸如FCN[29]或U-Net[26]等编码-解码框架的特例。然而,与FCN中的多个跳连和U-Net中的密集跳连不同,FastSCNN只使用一个跳连来减少计算量和内存。
与[35]一致,他主张在DCNNs中只在前几层共享特征,我们将跳连放在网络的前几层。和我们相反,现有的最先进技术都是在每个分辨率下使用很深的模块之后才使用跳连。
4.实验
我们在Cityscapes数据集[6]上评估我们的方法,并且在测试集,也就是Cityscapes benchmark server上提交了它的性能。
4.1实现细节
我们用Python、Tensorflow上进行了实验。我们实验的工作站有有Nvidia Titan X(Maxwell)或Nvidia Titan Xp(Pascal)GPU、CUDA 9.0和CuDNN v7。运行时评估在单个CPU线程和一个GPU中执行,以测量前向推理时间。我们取100帧的平均耗时作为单帧耗时。
我们使用SGD(momentum=0.9),批量大小是12。受[4,37,10]的启发,我们使用“poly”学习率,其中基学习率为0.045,幂为0.9。与MobileNet-V2类似,我们发现L2正则化对深度卷积(depthwise convolution)不必要。其他的层,L2系数是0.00004。因为语义分割的训练数据有限,我们使用了多种数据增强技术:随机缩放(缩放率范围是0.5到2)、平移/裁剪、水平翻转、颜色通道噪声和亮度变化。使用交叉熵损失训练。我们发现学习结束时的辅助损失和0.4权值的全局特征提取模块是有益的。
批量归一化在每个激活函数之前使用。Dropout只在最后一层,也就是softmax之前。与MobileNet[10]和ContextNet[21]相反,我们发现使用ReLU训练得更快,而且精度比ReLU6稍高,即使整个模型都使用深度可分离卷积。
我们发现训练更多的迭代次数可以提高性能。除非另有说明,我们使用Cityescapes数据集[6]用1000个epoch训练我们的模型。值得注意的是,Fast-SCNN的容量故意非常低,只有1.11million个参数。后来我们发现有益的数据增强技术使得不太可能过度拟合。
4.2.在Cityscapes数据集上的评估
Cityscapes是最大的公开的城市道路数据集,包含从欧洲50个不同城市拍摄的高分辨率图像(1024×2048px)。它有5000个高质量标注的图像,其中训练集2975个,验证集500个,测试集1525个。训练集和验证集的标注是公开的,测试集的结果可以在评估服务器上进行评估。此外,20000个弱标注图像(粗糙标签)可用于训练。我们在这两者上都进行评估:高质量标注样本和粗糙标注样本。Cityscapes提供30个类别标签,而只有19个类别用于评估。接下来我们报告模型的mIoU和推断时间。下面报告联合上的平均交集(mIoU)和网络推理时间。
我们在Cityscapes不公开的测试集上评估总体性能。我们所提的FastSCNN与其他最先进的实时语义分割方法(ContextNet[21]、BiSeNet[34]、GUN[17]、ENet[20]和ICNet[36])和离线方法(PSPNet[37]和DeepLab-V2[4])的比较如表4所示。FastSCNN达到68.0%mIoU,略低于BiSeNet(71.5%)和GUN(70.4%)。ContextNet在这里只达到66.1%。
表5比较了不同分辨率下的推断时间。在这里,BiSeNet(57.3 fps)和GUN(33.3 fps)明显慢于FastSCNN(123.5 fps)。与ContextNet(41.9fps)相比,在Nvidia Titan X(Maxwell)上,FastSCNN的速度也明显更快。因此,我们得出结论,FastSCNN显着提高了最先进模型的速度,而只以轻微的精度降低为代价。FastSCNN为低内存嵌入设备而设计,使用1.11million个参数,比BiSeNet的5.8million个参数少5倍。
最后,我们将跳连的作用置零,来测试FastSCNN的性能。验证集上,mIoU从69.22%降低到64.30%。图3比较了定性结果。正如所料,跳连对FastSCNN是有益的,特别是在边界和小尺寸物体周围。
4.3 预训练和弱标注数据
大容量的深度卷积网络,如R-CNN[7]和PSPNet[37]已经表明,通过不同的辅助任务,预训练可以提高性能。由于我们的FastSCNN是低容量的,我们希望在使用预训练和不使用预训练的情况下分别测试性能。据我们所知,预训练和弱标注数据对低容量模型的作用的重要性,还没有被研究过。结果如表6所示。
我们在ImageNet[27]上预先训练FastSCNN,用平均池化替换特征融合模块,分类模块现在只有一个softmax层。FastSCNN在ImageNet的验证集上达到60.71%的top-1精度和83.0%的top-5精度。这一结果表明,FastSCNN的容量不足以达到ImageNet上大多数标准DCNNs的性能(>70%top-1)[10,28]。使用ImageNet预训练的Fast-SCNN在城市景观验证集上的准确率为69.15%mIoU,仅比没有预训练的FastSCNN提高0.53%。因此,我们得出结论,在FastSCNN中,使用ImageNet预训练不能获得显着的提升。
由于Cityscapes数据集和ImageNet数据集之间的重叠是有限的,因此可以合理地假设,由于两个领域的容量有限,FastSCNN可能不会受益。因此,我们现在合并了Cityscapes提供的20000张粗糙标记的附加图像,因为这些图像来自类似的领域。然而,使用粗糙标注数据训练的FastSCNN(使用或不使用ImageNet预训练)性能相似,仅在没有预训练的情况下略优于原始的FastSCNN。请注意,由于DCNNs的随机初始化,微小的性能浮动是微不足道的。
我们表明,无论是ImageNet预训练还是弱标记数据都对我们的低容量DCNN没有显着的好处。图4显示了训练曲线。使用粗糙标注数据训练的FastSCNN的迭代速度慢,因为标注的质量差。使用ImageNet预训练的两个模型在早期阶段(对不用粗标注数据的模型是前400个epoch,对使用粗标注数据的模型是前100个epoch)表现的更好。带有粗数据序列的快速SCNN迭代速度慢是标签质量差的原因。ImageNet的两个预训练版本只在早期阶段都表现得更好(单独训练集最多400个阶段,使用附加的粗略标记数据训练时为100个阶段)。这意味着,当我们从头训练模型(也就是不使用预训练)时,多训练一些epoch就能达到和使用预训练类似的精度。
4.4 更低的输入分辨率
我们评估下在1/2和1/4分辨率下模型的性能(表7)。
1/4分辨率下,模型精度51.9%,速度485.4fps,这比MiniNet(佚名)的40.7%mIoU、250fps好得多。在1/2分辨率下,可达到具有竞争力的62.8%mIoU、285.8fps。我们强调,无需修改,快速SCNN直接适用于较低的输入分辨率,使其非常适合嵌入式设备。
5 结论
我们提出了FastSCNN用于实时语义分割。多分支结构的共享计算可以节省计算量提高速度。实验表明跳连有利于恢复空间细节。如果训练的epoch数足够多,对低容量网络而言,大规模辅助任务预训练没必要。
② CVPR 2019 Oral 论文解读 | 无监督域适应语义分割
雷锋网 AI 科技评论按: 网络研究院、华中科技大学、悉尼科技大学联合新作——关于无监督领域自适应语义分割的论文《 Taking A Closer Look at Domain Shift: Category-level Adversaries for Semantics Consistent Domain Adaptation》被 CCF A 类学术会议 CVPR2019 收录为 Oral 论文 。该论文提出了一种从“虚拟域”泛化到“现实域”的无监督语义分割算法,旨在利用易获取的虚拟场景标注数据来完成对标注成本高昂的现实场景数据的语义分割,大大减少了人工标注成本。 本文是论文作者之一罗亚威为雷锋网 AI 科技评论提供的论文解读。
论文地址: https://arxiv.org/abs/1809.09478
1.问题背景
基于深度学习的语义分割方法效果出众,但需要大量的人工标注进行监督训练。不同于图像分类等任务,语义分割需要像素级别的人工标注,费时费力,无法大规模实施。借助于计算机虚拟图像技术,如3D游戏,用户可以几乎无成本地获得无限量自动标注数据。然而虚拟图像和现实图像间存在严重的视觉差异(域偏移),如纹理、光照、视角差异等等,这些差异导致在虚拟图像上训练出的深度模型往往在真实图像数据集上的分割精度很低。
2. 传统方法
针对上述域偏移问题,一种广泛采用的方法是在网络中加入一个域判别器Discriminator (D),利用对抗训练的机制,减少源域Source (S)和目标域Target(T)之间不同分布的差异,以加强原始网络(G)在域间的泛化能力。方法具体包括两方面:
(1)利用源域的有标签数据进行有监督学习,提取领域知识:
其中Xs,Ys为源域数据及其对应标签。
(2)通过对抗学习,降低域判别器(D)的精度,以对齐源域与目标域的特征分布:
其中XT为目标域数据,无标签。
3.我们针对传统方法的改进
以上基于对抗学习的传统域适应方法只能对齐全局特征分布(Marginal Distribution),而忽略了不同域之间,相同语义特征的语义一致性(Joint Distribution),在训练过程中容易造成负迁移,如图2(a)所示。举例来说,目标域中的车辆这一类,可能与源域中的车辆在视觉上是接近的。因此,在没有经过域适应算法之前,目标域车辆也能够被正确分割。然而,为了迎合传统方法的全局对齐,目标域中的车辆特征反而有可能会被映射到源域中的其他类别,如火车等,造成语义不一致。
针对这一问题,我们在今年CVPR的论文中,向对抗学习框架里加入了联合训练的思想,解决了传统域适应方法中的语义不一致性和负迁移等键问题。具体做法见图2(b),我们采用了两个互斥分类器对目标域特征进行分类。当两个分类器给出的预测很一致时,我们认为该特征已经能被很好的分类,语义一致性较高,所以应减少全局对齐策略对这些特征产生的负面影响。反之,当两个分类器给出的预测不一致,说明该目标域特征还未被很好地分类,依然需要用对抗损失进行与源域特征的对齐。所以应加大对齐力度,使其尽快和源域特征对应。
4.网络结构
为了实现上述语义级对抗目标,我们提出了Category-Level Adversarial Network (CLAN)。 遵循联合训练的思想,我们在生成网络中采用了互斥分类器的结构,以判断目标域的隐层特征是否已达到了局部语义对齐。在后续对抗训练时, 网络依据互斥分类器产生的两个预测向量之差(Discrepancy)来对判别网络所反馈的对抗损失进行加权。网络结构如下图3所示。
图3中,橙色的线条表示源域流,蓝色的线条表示目标域流,绿色的双箭头表示我们在训练中强迫两个分类器的参数正交,以达到互斥分类器的目的。源域流和传统的方法并无很大不同,唯一的区别是我们集成了互斥分类器产生的预测作为源域的集成预测。该预测一方面被标签监督,产生分割损失(Segmentation Loss),如式(3)所示:
另一方面,该预测进入判别器D,作为源域样本。
绿色的双箭头处,我们使用余弦距离作为损失,训练两个分类器产生不同的模型参数:
目标域流中,集成预测同样进入判别器D。不同的是,我们维持两个分类器预测的差值,作为局部对齐程度的依据 (local alignment score map)。该差值与D所反馈的损失相乘,生成语义级别的对抗损失:
该策略加大了语义不一致特征的对齐力度,而减弱了语义一致的特征受全局对齐的影响,从而加强了特征间的语义对齐,防止了负迁移的产生。
最后,根据以上三个损失,我们可以得出最终的总体损失函数:
基于以上损失函数,算法整体的优化目标为:
在训练中,我们交替优化G和D,直至损失收敛。
5. 特征空间分析
我们重点关注不常见类,如图4(a)中黄框内的柱子,交通标志。这些类经过传统方法的分布对齐,反而在分割结果中消失了。结合特征的t-SNE图,我们可以得出结论,有些类的特征在没有进行域迁移之前,就已经是对齐的。传统的全局域适应方法反而会破坏这种语义一致性,造成负迁移。而我们提出的语义级别对抗降低了全局对齐对这些已对齐类的影响,很好的解决了这一问题。
6. 实验结果
我们在两个域适应语义分割任务,即GTA5 -> Cityscapes 和 SYNTHIA -> Cityscapes 上进行了实验验证。我们采用最常见的Insertion over Union作为分割精度的衡量指标,实验结果如下。从表1和表2中可以看出,在不同网络结构(VGG16,ResNet101)中,我们的方法(CLAN)域适应效果都达到了 state-of-the-art的精度。特别的,在一些不常见类上(用蓝色表示),传统方法容易造成负迁移,而CLAN明显要优于其他方法。
表 1. 由虚拟数据集GTA5 迁移至真实数据集 Cityscapes 的域适应分割精度对比。
表 2. 由虚拟数据集SYNTHIA 迁移至真实数据集 Cityscapes 的域适应分割精度对比。
第二个实验中,我们了展示隐空间层面,源域和目标域间同语义特征簇的中心距离。该距离越小,说明两个域间的语义对齐越好。结果见图 5。
最后,我们给出分割结果的可视化效果。我们的算法大大提高了分割精度。
7. 总结
《Taking A Closer Look at Domain Shift: Category-level Adversaries for Semantics Consistent Domain Adaptation》引入了联合训练结合对抗学习的设计,在无监督域适应语义分割任务中取得了较好的实验结果。该算法能应用前景广泛,比如能够很好地应用到自动驾驶中,让车辆在不同的驾驶环境中也能保持鲁棒的街景识别率。
最后
CVPR 2019 Oral 论文精选汇总,值得一看的 CV 论文都在这里(持续更新中)
CVPR 2019 即将于 6 月在美国长滩召开。今年有超过 5165 篇的大会论文投稿,最终录取 1299 篇,其中 Oral 论文近 300 篇。为了方便社区开发者和学术青年查找和阅读高价值论文,AI 研习社从入选的 Oral 论文中,按应用方向挑选了部分精华论文,贴在本文,打开链接即可查看~
https://ai.yanxishe.com/page/postDetail/11408
③ Lecture 11 检测与分割
我们之前都是图像分类的任务,最后一个全连接层得到所有分类的得分。现在我们来研究计算机视觉的其他任务,比如语义分割、图像分类与定位、目标检测、实例分割等。
在 语义分割 任务中,输入一张图片,希望输出能对图像的每个像素做出分类,判断这个像素是属于物体或者背景,不再像之前那样整张图片都是一个类。语义分割不会区分实例,只关心像素,所以如果图中有两头牛,会把两块像素都归为牛,不会分开每一头,以后会讲到 实例分割 (Instance Segmentation)可以区分实例。
实现语义分割的一个想法是 滑动窗口 ,即将图像分成一个个的小块,然后使用CNN网络计算小块的中心元素属于哪个分类。这样做的一个问题是,需要为每个像素计算一次,很多运算都是重复的,实际上没人会这么做。
另一个想法是 全卷积 ( Fully Convolutional),将网络的所有层都设计成卷积层,这样就能实现一次对图像的所有像素进行预测。比如使用3x3的卷积层然后使用零填充保持输入输出的空间尺寸,最终得到一个CxHxW的特征图,其中C是像素分类的数量,这样的一个特征图就一次计算了所有像素的分类得分。然后使用交叉熵损失、取平均、反向传播等操作进行训练。由于要为每个像素设置标签,这样的数据集花费是非常昂贵的。这里的数据集需要先确定图像属于哪个类别,比如猫,然后对图像的像素点设置类别。实际应用中,如果一直保持空间尺寸的话计算量会很庞大,所以不能设置这种结构。
使用全卷积网络的一种好的形式是在网络内部使用 降采样 (downsampling)然后使用 升采样 (upsampling),只在最初的几个卷积层保持尺寸,然后降采样比如池化或跨进卷积(strided convolution)来降低尺寸,进行一系列卷积后升采样到原来的尺寸。之所以需要去池化是因为池化减少了像素值,降低了图像的清晰度,丢失了图像空间结构,不知道这些像素原来在哪里,所以也就不明确边界应该在什么位置,所以需要进行去池化得到这些空间信息。
然后问题是如何进行升采样呢?
在一维中可能会表现的更清晰:滤波器被输入加权后直接放到输出中,输出的步长为2,下一个位置要平移两个像素,重叠的部分直接相加。最后为了使输出是输入的两倍,需要裁掉一个像素。
之所以称作转置卷积,可以通过矩阵乘法来解释,以一个一维的输入为例 a = [a, b, c, d],现在做 3x1 的卷积,卷积核为 [x, y, z],步长1填充1,此时的卷积可以看作是卷积核组成的一个大的矩阵 X 与输入 a 做乘法,如下图左边所示。(图上应为xyz,书写错误。)卷积核在输入 a 上滑动对应元素相乘后相加得到输出的过程,完全等价于卷积核组成的大矩阵与输入 a 的乘法。然后将 X 转置与 a 相乘,即转置卷积,结果就是一个正常的卷积,改变的只是填充规则。
现在如果步长为2,情况就不一样了。左边的卷积仍然可以看作是乘法,而右侧的转置卷积就变成用输入加权后的卷积核在输出上的叠加。
综上,语义分割任务的实现方法如下图所示:
此外, 多视角3D重建 ( Multi-view 3D Reconstruction)也使用了降采样和升采样的方法。
定位 ( Localization)往往是与 分类 (Classificatio)结合在一起的,如果图片分类是一只猫,同时我们也想知道猫在这张图片的什么位置,要用一个框给框起来。这与 目标检测 (Object Detection)是不同的,定位是一旦图像已经归为哪一类,比如猫,这样我们就会有一个明确的目标去寻找,找出它的边界即可。而目标检测是要检测出图像上存在的物体。
定位可以复用分类的方法,比如AlexNet。如下图所示,最后一个全连接层,除了得到1000个类别的得分,还会得到一个长为4的向量,表示目标的位置。这样最后就有两个损失,一个是正确分类的Softmax损失,另一个是正确位置的L2损失,L1、L2等损失也称作 回归损失 (Regression Loss)。最后将两个损失通过某些超参数加权得到总损失,和之前的超参数不同的是,以前的超参数改变是为了减小损失,而这里的加权超参数直接会改变损失值的表达式,损失变大变小都有可能。使用总损失求梯度。这里使用的网络是使用ImageNet 预训练过的模型,进行迁移学习。
目标检测任务是这样的:我们有几个感兴趣的类别,比如猫狗鱼等等,现在输入一张图像,图像上有几个物体事先是不知道的,当我们我们感兴趣的物体在图像上出现时,我们希望模型能自动标记出目标物体的位置,并判断出具体的分类。这实际上是很有挑战的任务,也是计算机视觉中很核心的任务,对此的研究已经经历了很多年,也有非常多的方法。
与定位最大的区别是,我们不知道图上会有多少对象。比如图像上只有一只猫,我们最终的输出只有一个位置四个数字;有两只狗一只猫,会输出3个位置12个数字;那么有一群鸭子呢?数量就很多了。所以目标检测问题不能看作定位中的回归问题。
另一个想法是把目标检测问题看作分类问题。类似语义分割的想法,将图像分成一个个的小块,让每一个小块通过卷积网络判断这块是背景?是猫?是狗?可以这么想,但是这个小块该怎么获得呢?不同的物体可能会有不同的大小、位置以及长宽比,这将是无数的情况,如果都要进行卷积,那么计算量是非常大的。
实际上,更实用的方法是 候选区域 (Region Proposals )方法。 选择性搜索 (Selective Search )方法就是在目标对象周围设定2000个形状大小位置不一的候选区域,目标物体在候选区域的可能性还是比较大的。然后对这些区域卷积,找到目标物体,虽然大多数区域都是无用的。与寻找几乎个区域比起来,这种方法要高效的多。此外,这不是深度学习的方法,是机器学习算法。 R-CNN 就是基于这种观点提出的。首先对输入图片使用区域备选算法,获取2000个感兴趣的区域(Regions of interest, roi),由于这些区域大小不一,所以需要处理成同样的尺寸才能通过CNN,之后使用SVM对区域进行分类。可以使用线性回归损失来校正包围框,比如虽然这个框选中的物体是一个缺少头部的狗,就需要对包围框进行校正。总之,这是一个多损失网络。
R-CNN的问题是计算消耗大、磁盘占用多、运行速度慢,即使测试时也要30秒测试一张图片,因为有2000个区域。解决方法时使用 快速R-CNN (Fast R-CNN ),不在原始图像生成备选区域,而是先整张图片通过卷积网络得到特征图,然后在特征图上使用备选区域算法得到感兴趣的区域在特征图的映射,之后使用 Rol Pool将所有区域变成同样尺寸。然后一方面使用softmax损失进行分类,一方面使用回归损失比如L1平滑损失校正包围框,总损失是两部分的和,然后反向传播进行训练。
如下图所示,效果还是很明显的。但是快速R-CNN也有一个问题是运行时间被区域备选方案限制。
解决方案是 更快的R-CNN (Faster R-CNN)。这种方法的改进是与其使用固定的算法得到备选区域,不如让网络自己学习自己的备选区域应该是什么。如下图所示,前面仍然是通过卷积网络获得特征图,然后通过一个 备选区域网络 (Region Proposal Network,RPN),该网络会做两件事,一是计算分类损失,选择的区域是目标还是不是目标;二是校正包围框。得到备选区域后接下来的步骤就和快速R-CNN一致了,也是得到最后的分类得分和校正包围框。训练的过程会综合这四个损失,最终效果很好。
Mask R-CNN是在Faster R-CNN基础上改进而来,是2017年发布的方法。首先将整张图像通过卷积网络和候选框生成网络,得到候选特征在特征图上的映射再调整尺寸,到这里和Faster R-CNN都是相同的;现在不仅是得到分类得分和校正包围框,还要增加一个分支通过卷积网络对每一个候选框预测一个分割区域模板。这个新增的分支就是一个在候选框中进行的微型语义分割任务。这样上下两个分支的任务就很明确了——上面的分支需要计算分类得分确定候选框中的目标属于哪个分类以及通过对候选框坐标的回归来预测边界框的坐标;下面的分支基本类似一个微型语义分割网络,会对候选框中的每个像素进行分类,判断每个像素是否属于候选框的中目标。
Mask R-CNN综合了上面讲的很多方法,最终的效果也是非常好的。比如下图最左边,不仅框出了每个物体还分割了像素,即使很远地方的人也被清晰的分割出来了。
此外,Mask R-CNN也可以识别动作,方法是在上面分支中增加一个关节坐标损失,这样就能同时进行分类、检测、动作识别、语义分割。此外,基于Faster R-CNN,运行速度也是非常快的。下图展示的效果是很令人惊讶的,可以同时识别出图上有多少人,分割出他们的像素区域,并且会标示他们的动作姿势。
使用前馈模型。
YOLO 即 “You Only Look Once” 和 SSD 即 “Single-Shot MultiBox Detector”,这两个模型是在同一时期提出的(2016),它们不会使用候选框分别进行处理,而是尝试将其作为回归问题,通过一个大的卷积网络,一次完成所有预测。给定输入图像,分成网格状比如7x7,然后在每个小单元中心处使用 B 个基本的边界框,比如高的、宽的、正方形的,这样总共有 7x7xB个基本框。现在想对每个网格单元的所有基本边界框预测目标物体,首先要预测每个基本边界框偏移来确定边界框和真实物体的位置差值,使用5个值(dx, dy, dh, dw, confidence)来表示偏差;然后预测每个网格单元里目标的 C 个分类(包括背景)得分,这样每个网格单元都会得到一个分类得分,即目标所属类别。最终的输出就是一个三维的张量:7x7x(5*B+C)。
TensorFlow Detection API(Faster RCNN, SSD, RFCN, Mask R-CNN): 点击这里
二维平面的目标检测只需确定 [x, y, w, h],3D的定位框需要确定的坐标为 [x, y, z, roll, pitch, yaw],简化后可以不需要 roll 和 pitch。比2D目标检测要复杂的多。
④ 产品语义切分原则是什么
语义分割作为计算机视觉领域的关键任务,是实现完整场景理解的必经之路。为了让机器拥有视觉,要经过图像分类、物体检测再到图像分割的过程。其中,图像分割的技术难度最高。
越来越多的应用得益于图像分类分割技术,全场景理解在计算机视觉领域也至关重要。其中一些应用包括自动驾驶车辆、人机交互、AR-VR等。随着近年来深度学习的普及,很多语义分割问题都在使用深度架构来解决,其中最常见的是CNN(卷积神经网),它的精度和效率都大大超过了其他方法。
语义分割是什么?
语义分割是从粗到细推理的一个自然步骤:原点可以定位在分类,它包括对整个输入进行预测.下一步是本地化/检测,它不仅提供了类,而且还提供了关于这些类的空间位置的附加信息。最后,语义分割通过为每个像素进行密集的预测推断标签来实现细粒度推理,因此每个像素都被标记为其包围对象矿石区域的类。
更具体地说,语义图像分割的目标是给图像中的每个像素都贴上对应的一类所代表的内容的标签。因为我们要对图像中的每个像素进行预测,所以这个任务通常被称为密集预测。这里要注意的事,语义分割是为给定图像中的每个像素分配一个类的任务而并非为整个图像分配一个单一的类,语义分割是将图像中的每个像素都归入其中的一个类。
语义分割的应用
自动驾驶:需要为汽车配备必要的感知能力,让汽车可以“观察”路况和周遭环境,从而使自动驾驶汽车能够安全地在道路上行驶。
⑤ 语义分割的解码器去噪预训练
Decoder Denoising Pretraining for Semantic Segmentation
https://arxiv.org/abs/2205.11423
23 May, 2022
Authors: Emmanuel Brempong Asie, Simon Kornblith, Ting Chen , Niki Parmar , Matthias Minderer, Mohammad Norouzi
摘要:语义分割标注的获取既昂贵又耗时。因此,通常使用预训练来提高分割模型的标注效率。通常,分割模型的编码器作为分类器进行预训练,解码器随机初始化。在这里,我们认为解码器的随机初始化可能是次优的,尤其是当标注样本很少时。我们提出了一种基于去噪的解码器预训练方法,该方法可以与编码器的有监督预训练相结合。我们发现,在ImageNet数据集上,解码器去噪预训练的效果明显优于编码器监督的预训练。尽管解码器去噪预训练非常简单,但它在标注高效语义分割方面取得了最先进的效果,并在城市景观、Pascal上下文和ADE20K数据集上获得了可观的收益。
1简介
计算机视觉中的许多重要问题,如语义分割和深度估计,都需要密集的像素级预测。为这些任务构建精确的监督模型是一项挑战,因为在所有图像像素上密集地收集真值标注成本高昂、耗时且容易出错。因此,最先进的技术通常求助于预训练,其中模型主干(即编码器)首先被训练为监督分类器(Sharif Razavian等人,2014;Radford等人,2021;Kolesnikov等人,2020)或自监督特征提取器(Oord等人,2018;Hjelm等人,2018;Bachman等人,2019;He等人,2020;Chen等人,2020b;c;Grill等人,2020)。主干架构(如Resnet(He et al.,2016))逐渐降低了特征图的分辨率。因此,为了进行像素级预测,需要解码器将采样恢复到像素级。大多数最先进的语义分割模型都不会预训练解码器引入的附加参数并随机初始化它们。在本文中,我们认为解码器的随机初始化远远不是最优的,并且使用简单但有效的去噪方法预训练解码器权重可以显着提高性能。
去噪自动编码器在机器学习方面有着悠久而丰富的历史(Vincent et al.,2008;2010)。一般的方法是向干净的数据中添加噪声,并训练模型将噪声数据分离回干净的数据和噪声分量,这需要模型学习数据分布。去噪目标非常适合于训练密集预测模型,因为它们可以在每像素级别上轻松定义。虽然去噪的想法由来已久,但去噪目标最近在去噪扩散概率模型(DPM)背景下吸引了新的兴趣;(Sohl Dickstein等人,2015;Song&Ermon,2019;Ho等人,2020))。DPMs通过学习通过一系列迭代去噪步骤将高斯噪声转换为目标分布,从而近似复杂的经验分布。这种方法在图像和音频合成方面取得了令人印象深刻的结果(Nichol&Dhariwal,2021;Dhariwal&Nichol,2021;Saharia et al.,2021b;Ho et al.,2021;Chen et al.,2021b),在样本质量分数方面优于强GAN和自回归基线。
受扩散模型中去噪的新兴趣和成功的启发,我们研究了通过去噪自动编码器学习的表示在语义分割中的有效性,特别是对于通常随机初始化的预训练解码器权重。
总之,本文研究了语义分割体系结构中解码器的预训练,发现通过随机初始化可以获得显着的收益,特别是在有限的标注数据设置中。我们提出将去噪用于解码器预训练,并将去噪自动编码器连接到扩散概率模型,以改进去噪预训练的各个方面,例如在去噪目标中预测噪声而不是图像,以及在添加高斯噪声之前缩放图像。这导致在三个数据集上对编码器的标准监督预训练有了显着的改进。
在第2节中,我们在深入研究常规去噪预训练的细节之前,先对其进行简要概述
第3节和第4节中的解码器对预训练进行去噪。
第5节介绍了与最新方法的实证比较。
2方法
我们的目标是学习能够很好地迁移到密集视觉预测任务的图像表示。我们考虑一种由编码器fθ和解码器gφ组成的体系结构,解码器gφ由两组参数θ和φ参数化。此模型将图像x作为输入∈ R H×W×C并将其转换为稠密表示y∈ R h×w×c,例如语义分割掩码。
我们希望找到一种初始化参数θ和φ的方法,这样模型就可以通过几个标注的样本有效地在语义分割上进行微调。对于编码器参数θ,我们可以按照标准实践,使用分类时预训练的权重初始化它们。我们的主要贡献涉及解码器参数φ,它通常是随机初始化的。我们建议将这些参数作为去噪自动编码器进行预训练(Vincent et al.,2008;2010):给定一幅未标注的图像x,我们通过将高斯噪声σc与固定的标准偏差σ相加到x,获得一幅带噪图像xe,然后将模型训练为自动编码器gφ◦ fθ以最小化重建误差kgφ(fθ(xe))− xk 2 2(仅优化φ并保持θ固定)。我们称这种方法为解码器去噪预训练(DDeP)。或者,φ和θ都可以通过去噪(去噪预训练;DeP)进行训练。下面,我们将讨论对标准自动编码器公式的几个重要修改,这些修改将显着提高表示的质量。
作为我们的实验装置,我们使用了Transune(Chen et al.(2021a));图2)。编码器根据ImageNet-21k(Deng等人,2009)分类进行预训练,而解码器则使用我们的去噪方法进行预训练,也使用ImageNet-21k图像,而不使用标注。预训练后,该模型根据城市景观、Pascal上下文或ADE20K语义分段数据集进行微调(Cordts等人,2016;Mottaghi等人,2014;Zhou等人,2018)。我们报告了所有语义类别的平均交并比(mIoU)。我们在第5.1节中描述了进一步的实施细节。
图1显示,我们的DDeP方法明显优于仅编码器的预训练,尤其是在少样本情况下。图6显示,即使是DeP,即在没有任何监督预训练的情况下对整个模型(编码器和解码器)进行去噪预训练,也可以与监督预训练相竞争。我们的结果表明,尽管去噪预训练简单,但它是学习语义分割表示的一种有效方法。
3编码器和解码器的去噪预训练
如上所述,我们的目标是学习能够很好地转换到语义分割和其他密集视觉预测任务的有效视觉表示。我们重新讨论去噪目标以实现这一目标。我们首先介绍标准去噪自动编码器公式(针对编码器和解码器)。然后,我们提出了对标准公式的一些修改,这些修改的动机是最近扩散模型在图像生成方面的成功(Ho等人,2020年;Nichol&Dhariwal,2021;Saharia等人,2021b)。
3.1标准去噪目标
在标准去噪自动编码器公式中,给定一个未标注的图像x,我们通过将高斯噪声σc与固定的标准偏差σx相加,得到一个带噪图像xe,
然后我们训练一个自动编码器gφ◦ fθ以最小化重建误差kgφ(fθ(xe))− xk 2。因此,目标函数采用以下形式
虽然这个目标函数已经产生了对语义分割有用的表示,但我们发现,一些关键的修改可以显着提高表示的质量。
3.2目标中去噪目标的选择
标准去噪自动编码器目标训练模型来预测无噪图像x。然而,扩散模型通常训练来预测噪声向量c(Vincent,2011;Ho et al.,2020):
对于具有从输入xe到输出的跳跃连接的模型,这两个公式的行为类似。在这种情况下,模型可以很容易地将其对c的估计与输入xe结合起来,以获得x。
然而,在没有明确的跳跃连接的情况下,我们的实验表明,预测噪声向量明显优于预测无噪声图像(表1)。
3.3作为预训练目标的去噪的可扩展性
无监督的预训练方法最终会受到由预训练目标学习的表征与最终目标任务所需表征之间不匹配的限制。对于任何无监督的目标,一个重要的“健全性检查”是,它不会很快达到这个极限,以确保它与目标任务很好地一致。我们发现,通过去噪学习的表示将继续提高到我们的最大可行预训练计算预算(图3)。这表明去噪是一种可扩展的方法,并且表示质量将随着计算预算的增加而继续提高。
3.4去噪与监督预训练
在标准去噪自动编码器公式中,使用去噪对整个模型(编码器和解码器)进行训练。然而,至少在微调数据丰富的情况下,全模型的去噪预训练性能不如编码器的标准监督预训练(表2)。在下一节中,我们将探索将去噪和有监督的预训练相结合,以获得两者的好处。
4仅对解码器进行去噪预训练
实际上,由于已经存在用于预训练编码器权重的强大且可伸缩的方法,因此去噪的主要潜力在于预训练解码器权重。为此,我们将编码器参数θ固定在通过在ImageNet-21k上进行监督预训练获得的值上,并且仅对解码器参数φ进行预训练并进行去噪,从而实现以下目标:
我们将这种预训练方案称为解码器去噪预训练(DDeP)。如下所示,在所有标注效率机制中,DDeP的性能优于纯监督或纯去噪预训练。在第5节给出基准结果之前,我们研究了DDeP的关键设计决策,如本节中的噪声公式和最佳噪声级。
4.1噪声大小和图像与噪声的相对比例
解码器去噪预训练的关键超参数是添加到图像中的噪声的大小。噪声方差σ必须足够大,网络必须学习有意义的图像表示才能将其移除,但不能太大,导致干净图像和噪声图像之间的分布过度偏移。对于目视检查,图4显示了σ的几个样本值。
除了噪声的绝对大小外,我们还发现干净图像和噪声图像的相对缩放也起着重要作用。不同的去噪方法在这方面有所不同。具体地说,DDPM生成一个有噪声的图像xe as
这不同于等式(1)中的标准去噪公式,因为x衰减为√γ和c衰减为√ 1.− γ,以确保如果x的方差为1,则随机变量xe的方差为1。使用此公式,我们的去噪预训练目标变为:
在图5中,我们将这种缩放的加性噪声公式与简单的加性噪声公式(公式(1))进行了比较,发现缩放图像可以显着提高下游语义分割性能。我们推测,噪声图像的方差与噪声大小的解耦减少了干净图像和噪声图像之间的分布偏移,从而改善了预训练表示到最终任务的传递。因此,本文其余部分将使用此公式。我们发现,对于缩放的加性噪声公式,最佳噪声幅值为0.22(图5),并将该值用于下面的实验。
4.2预训练数据集的选择
原则上,任何图像数据集都可以用于去噪预训练。理想情况下,我们希望使用大型数据集(如ImageNet)进行预训练,但这引发了一个潜在的担忧,即预训练数据和目标数据之间的分布变化可能会影响目标任务的性能。为了验证这一点,我们比较了解码器在几个数据集上进行去噪预训练,而编码器在ImageNet-21K上进行预训练,并保持分类目标不变。我们发现,对于所有测试数据集(城市景观、Pascal上下文和ADE20K;表3),在ImageNet-21K上预训练解码器比在目标数据上预训练解码器的效果更好。值得注意的是,这甚至适用于城市景观,城市景观在图像分布方面与ImageNet-21k存在显着差异。因此,在通用图像数据集上使用DDeP预训练的模型通常适用于范围广泛的目标数据集。
4.3解码器变体
考虑到解码器去噪预训练显着改善了解码器的随机初始化,我们假设该方法可以使解码器的大小扩大到使用随机初始化时效益减少的程度。我们通过在解码器的各个阶段改变特征映射的数量来测试这一点。我们所有实验的默认(1×)解码器配置为[1024、512、256、128、64],其中索引i处的值对应于第i个解码器块处的特征映射数。这反映在图2中。在Cityscapes上,我们尝试将所有解码器层的默认宽度加倍(2×),而在Pascal上下文和ADE20K上,我们尝试将宽度加倍(3×)。虽然较大的解码器通常即使在随机初始化时也能提高性能,但DDeP在所有情况下都会带来额外的增益。因此,DDeP可能会解锁新的解码器密集型架构。我们在第5节中给出了1×解码器和2×/3×解码器的主要结果。
4.4扩散过程的扩展
如上所述,我们发现,通过调整标准自动编码器公式的某些方面,如预测目标的选择以及图像和噪声的相对缩放,可以改进预训练表示,使其更类似于扩散模型。这就提出了一个问题,即是否可以通过使用全扩散过程进行预训练来进一步改进表征。在这里,我们研究了使该方法更接近DDPM中使用的完全扩散过程的扩展,但发现它们并没有改善上述简单方法的结果。
可变噪声表。
由于它使用单个固定噪声级(式(6)中的γ),因此我们的方法对应于扩散过程中的单个步骤。完整的DDPMs通过从每个训练样本的[0,1]中随机均匀采样噪声幅值γ,模拟从干净图像到纯噪声(及其相反)的完整扩散过程(Ho et al.,2020)。因此,我们也对随机抽样γ进行了实验,但发现固定γ表现最好(表4)。
调节噪声水平。
在扩散形式中,模型表示从一个噪声级到下一个噪声级的(反向)过渡函数,因此以当前噪声级为条件。在实践中,这是通过为每个训练样本提供所采样的γ作为额外的模型输入来实现的,例如,提供给归一化层。由于我们通常使用固定的噪声级,因此我们的方法不需要调节。当使用可变噪声时间表时,调节也不会提供任何改善。
噪声级加权。
在DDPM中,损失中不同噪声级的相对权重对样品质量有很大影响(Ho等人,2020年)。由于我们的实验表明,学习可迁移表征不需要多个噪声级,因此我们没有对不同噪声级的权重进行实验,但请注意,这可能是未来研究的一个有趣方向。
5基准结果
我们在几个语义分割数据集上评估了所提出的解码器去噪预训练(DDeP)的有效性,并进行了标注效率实验。
5.1实施细则
对于语义分割任务的预训练模型的下游微调,我们使用标准的逐像素交叉熵损失。我们使用Adam(Kingma&Ba,2015)优化器和余弦学习率衰减计划。对于解码器去噪预训练(DDeP),我们使用512的批量大小,并训练100个epoch。学习速度为6e−5用于1×和3×宽度解码器,以及1e−4用于2×宽度解码器。
在对目标语义分割任务中的预训练模型进行微调时,我们将权值衰减和学习率值扫过[1e−5,3e−4] 并为每个任务选择最佳组合。对于100%设置,我们报告所有数据集上10次运行的平均值。在Pascal上下文和ADE20K中,我们还报告了1%、5%和10%标注分数的10次运行(不同子集)的平均值,以及20%设置的5次运行的平均值。在城市景观上,我们报告了1/30设置下10次跑步的平均值,1/8设置下6次跑步,1/4设置下4次跑步的平均值。
在训练过程中,对图像及其相应的分割模板应用随机裁剪和随机左右翻转。对于城市景观,我们将图像随机裁剪为1024×1024的固定大小,对于ADE20K和Pascal上下文,我们将图像裁剪为512×512的固定大小。所有解码器去噪预训练运行均以224×224分辨率进行。
在城市景观推断过程中,我们通过将全分辨率1024×2048图像分割为两个1024×1024输入patch来评估它们。我们采用水平翻转,平均每一半的结果。将两半部分串联起来以产生全分辨率输出。对于Pascal Context和ADE20K,除了水平翻转外,我们还对图像的重缩放版本使用多尺度评估。使用的比例因子为(0.5、0.75、1.0、1.25、1.5、1.75)。
5.2解码器去噪预训练的性能增益
在城市景观方面,DDeP的表现优于DeP和有监督的预培训。在图6中,我们报告了城市景观上的DeP和DDeP结果,并将其与随机初始化或使用ImageNet-21K预训练编码器初始化的训练结果进行比较。DeP结果使用了缩放的加性噪声公式(方程式(5)),与标准降噪目标获得的结果相比,性能显着提高。
如图6所示,在1%和5%标注图像设置中,DeP优于监督基线。对于1×和2×解码器变体,解码器去噪预训练(DDeP)比DeP和ImageNet-21K监督预训练都有进一步改进(表6)。
如表5.2所示,DDeP在所有标注分数上都优于先前提出的城市景观标注有效语义分割方法。只有25%的训练数据,DDeP比最强的基线方法PC2Seg(Zhong等人,2021)在完整数据集上训练时产生的分割效果更好。与最近的工作不同,我们不对城市景观进行多尺度评估,这将导致进一步的改进。
DDeP还改进了Pascal上下文数据集上的有监督预训练。图1比较了DDeP在1%、5%、10%、20%和100%的训练数据上与有监督基线和Pascal上下文上随机初始化模型的性能。表5.2将这些结果与使用3×解码器获得的结果进行了比较。对于1×和3×解码器,DDeP的性能明显优于架构上相同的监督模型,在所有半监督设置中获得了4-12%的mIOU改进。值得注意的是,只有10%的标注,DDeP优于20%标注训练的监督模型。
图7显示了ADE20K数据集上DDeP的类似改进。我们再次看到,在5%和10%的设置中,收益超过10分,在1%的设置中,收益超过5分。这些一致的结果证明了DDeP在数据集和训练集大小方面的有效性。
我们的上述结果使用了Transune(Chen等人(2021a));图2)实现最大性能的体系结构,但DDeP与主干网无关,并且与更简单的主干网体系结构一起使用时也会带来好处。在表7中,我们训练了一个标准的U-Net,该U-Net带有一个ResNet50编码器,在Pascal上下文中具有DDeP(无多尺度评估)。DDeP在所有设置中都优于监督基线,表明我们的方法超越了transformer架构。
6相关工作
因为为语义分割收集详细的像素级标注成本高昂、耗时且容易出错,已经提出了许多方法来从较少的标注样本中实现语义分割(Tarvainen&Valpola,2017;Miyato et al.,2018;Hung et al.,2018;Mittal et al.,2021;French et al.,2019;Ouali et al.,2020;Zou et al.,2021;Feng et al.,2020b;Ke et al.,2020;Olsson et al.,2021;Zhong et al.,2021)。这些方法通常求助于半监督学习(SSL)(Chapelle et al.,2006;Van Engelen&Hoos,2020),在这种学习中,除了有标注的训练数据外,还假设可以访问大量的未标注图像数据集。在接下来的内容中,我们将讨论以前关于强数据增强、生成模型、自训练和自监督学习在标注有效语义分割中的作用的工作。虽然这项工作侧重于自监督的预训练,但我们相信,强大的数据增强和自训练可以与所提出的去噪预训练方法相结合,以进一步改善结果。
数据增强。
French et al.(French et al.,2019)证明,Cutout(DeVries&Taylor,2017)和CutMix(Yun et al.,2019)等强大的数据增强技术对于少数标注样本的语义分割特别有效。Ghiasi等人(2021)发现,简单的复制粘贴增强有助于实例分割。之前的工作(Remez et al.,2018;Chen et al.,2019;Bielski&Favaro,2019;Arandjelović&Zisserman,2019)也通过利用GANs(Goodfello et al.,2014)组合不同的前景和背景区域来生成新的可信图像,探索了完全无监督的语义分割。我们使用了相对简单的数据增强,包括水平翻转和随机起始式裁剪(Szegedy et al.,2015)。使用更强大的数据增强留给未来的工作。
生成模型。
标注有效语义分割的早期工作使用GANs生成合成训练数据(Souly et al.,2017),并区分真实和预测的分割掩码(Hung et al.,2018;Mittal et al.,2021)。DatasetGAN(Zhang等人,2021)表明,现代GAN架构(Karras等人,2019)在生成合成数据以帮助像素级图像理解方面是有效的,而此时只有少数标注图像可用。我们的方法与扩散和基于分数的生成模型高度相关(Sohl Dickstein et al.,2015;Song&Ermon,2019;Ho et al.,2020),这代表了一个新兴的生成模型家族,导致图像样本质量优于GANs(Dhariwal&Nichol,2021;Ho et al.,2021)。这些模型通过去噪分数匹配与去噪自动编码器相连(Vincent,2011),可以看作是训练基于能量的模型的方法(Hyvärinen&Dayan,2005)。去噪扩散模型(DDPM)最近已应用于超分辨率、着色和修复等条件生成任务(Li等人,2021;Saharia等人,2021b;Song等人,2021;Saharia等人,2021a),表明这些模型可能能够学习有用的图像表示。我们从DDPM的成功中得到了启发,但我们发现DDPM的许多组件都不是必需的,简单的去噪预训练效果很好。扩散模型已被用于迭代优化语义分段掩码(Amit等人,2021;Hoogeboom等人,2021)。Baranchuk et al.(Baranchuk et al.,2021)证明了通过扩散模型学习的特征在语义分割中的有效性,这些特征来自于极少数标注的样本。相比之下,我们利用简单的去噪预训练进行表示学习,并研究编码器-解码器体系结构的完全微调,而不是提取固定特征。此外,我们使用成熟的基准将我们的结果与之前的工作进行比较。
自训练,一致性规范化。
自训练(自学习或伪标注)是最古老的SSL算法之一(Scudder,1965;Fralick,1967;Agrawala,1970;Yarowsky,1995)。它的工作原理是使用一个初始的监督模型,用所谓的伪标注对未标注的数据进行注释,然后使用伪标注和人类标注数据的混合来训练改进的模型。这个迭代过程可以重复多次。自训练已被用于改进目标检测(Rosenberg等人,2005;Zoph等人,2020)和语义分割(Zhu等人,2020;Zou等人,2021;Feng等人,2020a;Chen等人,2020a)。一致性正则化与自训练密切相关,并在图像增强过程中加强预测的一致性(French et al.,2019;Kim et al.,2020;Ouali et al.,2020)。这些方法通常需要仔细调整超参数和合理的初始模型,以避免传播噪声。将自训练与去噪预训练相结合可能会进一步改善结果。
自监督学习。
自监督学习方法可以制定预测性的借口任务,这些任务很容易从未标注的数据中构建,并且有利于下游的区分性任务。在自然语言处理(NLP)中,掩蔽语言建模任务(Devlin等人,2019;Liu等人,2019;Raffel等人,2020)已成为事实上的标准,在NLP任务中显示出令人印象深刻的结果。在计算机视觉中,提出了用于自监督学习的不同借口任务,包括预测图像中相邻patch的相对位置的任务(Doersch et al.,2015),修复任务(Pathak et al.,2016),解决拼图(Noroozi&Favaro,2016),图像着色(Zhang et al.,2016;Larsson et al.,2016),轮换预测(Gidaris et al.,2018)和其他任务(Zhang et al.,2017;Caron et al.,2018;Kolesnikov et al.,2019)。最近,基于样本鉴别和对比学习的方法在图像分类方面显示出了有希望的结果(Oord et al.,2018;Hjelm et al.,2018;He et al.,2020;Chen et al.,2020b;c;Grill et al.,2020)。这些方法已被用于成功地预训练用于对象检测和分割的主干(He et al.,2020;Chen et al.,2020d),但与这项工作不同的是,它们通常随机初始化解码器参数。最近,也有一系列基于掩蔽自动编码的新兴方法,如BEIT(Bao等人,2021)、MAE(He等人,2021)和其他方法(Zhou等人,2021;Dong等人,2021;Chen等人,2022)。我们注意到,我们的方法是针对这一系列掩模图像建模同时开发的,我们的技术也是正交的,因为我们关注的是解码器预训练,这不是上述论文的重点。
用于密集预测的自监督学习。
Pinheiro et al.(2020)和Wang et al.(2021)提出了密集对比学习,这是一种针对密集预测任务的自监督预训练方法,对比学习应用于patch和像素级特征,而不是图像级特征。这让人想起AMDIM(Bachman et al.,2019)和CPC V2(Hénaff et al.,2019)。Zhong等人(2021)进一步考虑了这一想法,并将图像不同增强(可能未标注)的模型输出之间的分割掩码一致性与整个增强的像素级特征一致性相结合。
视觉Transformer。
受NLP中Transformer的成功(Vaswani et al.,2017)的启发,一些出版物研究了卷积和自注意相结合的目标检测(Carion et al.,2020)、语义分割(Wang et al.,2018;2020b)和全景分割(Wang et al.,2020a)。Vision Transformer(ViT)(Dosovitskiy et al.,2021)证明,当大量标注数据集可用时,无卷积方法可以产生令人印象深刻的结果。最近的研究探索了将ViT作为语义分割的主干(Zheng等人,2020年;Liu等人,2021;Strudel等人,2021)。这些方法在解码器的结构上有所不同,但它们显示了基于ViT的语义分割的能力。我们采用混合ViT(Dosovitskiy et al.,2021)作为主干,其中patch嵌入投影应用于从卷积特征图中提取的patch。我们研究了解码器的大小,发现更宽的解码器通常会改善语义分割结果。
7结论
受最近流行的图像合成扩散概率模型的启发,我们研究了这些模型在学习语义分割有用的可迁移表示方面的有效性。令人惊讶的是,我们发现,将语义分割模型作为去噪自动编码器进行预训练可以大大提高语义分割性能,尤其是在标注样本数量有限的情况下。我们基于这一观察结果,提出了一种两阶段预训练方法,其中监督预训练编码器与去噪预训练解码器相结合。这导致了数据集和训练集大小的一致收益,从而形成了一种切实可行的预训练方法。探索去噪预训练在其他密集预测任务中的应用也很有趣。
⑥ 计算机视觉面试之语义分割
在深度学习广泛应用于计算机视觉之前,人们一般使用TextonForest和Random Forest based Classifiers的方法进行语义分割。
深度学习方法中常见的一种语义分割方法是图像块分类(patch classification),即利用像素周围的图像块对每一个像素进行分类。原因是网络模型通常包含全连接层(fully connect layer),而且要求固定大小的图像输入。
2014年,加州大学伯克利分校的Long等人提出全卷积网络(FCN),使得卷积神经网络不需要全连接层就可以实现密集的像素级分类,从而成为当前非常流行的像素级分类CNN架构。由于不需要全连接层,所以可以对任意大小的图像进行语义分割,而且比传统方法要快上很多。之后,语义分割领域几乎所有的先进方法都是基于该模型进行扩展的。
为了保留像素的空间位置信息,有两种方法可以解决这个问题:
(1)编码器-解码器结构,编码器与解码器之间通常存在跨越连接(shortcut connections)。U-Net是这类架构中最常用的模型之一(源于: Convolutional Networks for Biomedical Image Segmentation )。
(2)使用带孔卷积(dilated/atrous convolutions),从而除去池化层。
条件随机场(CRF)通常用于后处理来进一步改善分割效果。CRF是一种基于底层图像的像素强度进行的平滑分割的图模型,原理是相似强度的像素更可能标记为同一类别。
主要贡献:
1. 为语义分割引入了端到端的全卷积网络。
2. 利用ImageNet的预训练网络做语义分割。
3. 使用反卷积层(取代线性插值)进行上采样。
4. 引入少量跳跃连接改善上采样粗糙的像素定位。
主要贡献:
使用编码-解码架构。并且将池化结果应用到译码的过程,使用的是Pooling indices(记录位置信息)而不是简单地复制特征。其实没有跳跃连接,更节省内存。
U-Net的结构更规整,是FCN的延伸,通过将编码器的每层结果拼接到译码器中得到更好的结果。
移去了VGG网络的最后两层池化层,并且后续的卷积层都采用带孔卷积。还训练了一个模块,输入卷积结果,级联了不同孔大小的带孔卷积层。
主要贡献:
1. 通过带孔卷积提取和聚合多尺度的信息。
2. 提出context mole来聚合多尺度的信息。
主要贡献:
1. 采用了带孔卷积。
2. 提出了金字塔形的空洞池化(Atrous Spatial Pyramid Pooling, ASPP)。
3. 采用了全连接的CRF。
由于带孔卷积需要大量的高分辨率特征图,对计算和内存的消耗很大,因此无法利用高分辨率的精细预测。
该文章采用编码解码结构。编码器是ResNet-101,解码器是RefineNet模块,用于连接编码器中高分辨率特征和先前RefineNet中低分辨率的特征。
每一个RefineNet都有两个组件,一个组件通过对低分辨率特征的上采样操作融合不同的分辨率特征,另一个组件利用窗口为5*5且步长为1的池化层来获取背景信息。这些组件都遵循恒等映射(identity mapping)思想,采用残差连接设计。
主要贡献:
1. 精心设计了译码模块。
2. 所有模块遵循残差连接设计。
金字塔池化模块通过使用大窗口的池化层来提高感受野。使用带孔卷积来修改ResNet网络,并增加了金字塔池化模块。金字塔池化模块对ResNet输出的特征进行不同规模的池化操作,并作上采样后,拼接起来,最后得到结果。
金字塔池化模块简单来说是将DeepLab(不完全一样)ASPP之前的feature map池化了四种尺度之后,将五种feature map拼接到一起,经过卷积,最后进行预测的过程。
在ResNet的第四个阶段之后(即输入到金字塔池化模块的阶段),在主分支损失之外增加辅助损失(其他论文称为中间监督)。
主要贡献:
1. 提出了金字塔池化模块来聚合图片上下文信息。
2. 使用附加的辅助损失函数。
理论上更深的ResNet能有很大的感受野,但研究表明实际上网络更适合收集较小区域(有效感受野)内的信息,因此使用大核来扩大感受野。但是核越大,计算量越大,因此将 k x k 的卷积近似转换为 1 x k + k x 1 和 k x 1 + 1 x k 卷积的和。本文称为GCN。
编码器使用ResNet(无带孔卷积),解码器由GCNs和反卷积构成。此外还用到了边界精调(Boundary Refinement, BR)的简单残差块。
主要贡献:提出具有大卷积核的编码-解码架构。
主要贡献:
1. 改进ASPP。将不同孔率的带孔卷积的结果拼接起来(DeepLab v2使用的是求和),并使用了BN。
2. 串行部署ASPP的模块。直接对中间的特征图进行带孔卷积(Dilated Convolutions(2015) 是在最后做)。
⑦ 用于语义分割的分层多尺度注意力
https://arxiv.org/abs/2005.10821
https://github.com/NVIDIA/semantic-segmentation
1.5k星
21 May 2020
最近开源了: https://paperswithcode.com/paper/hierarchical-multi-scale-attention-for#code
摘要: 多尺度推理常用于改善语义分割结果。将图像缩放到多个不同尺度,再输入给同一个网络,再将结果取平均或最大池化。本文提出一个基于注意力的方法来组合多尺度预测。我们表明,某些尺度下的预测更能处理特定的故障情况,而网络学会了在这种特定情况下更倾向于这些尺度,以便输出更好的结果。我们的注意力机制是分层的,这使得它的内存效率比其他最近的方法快4倍。这样除了能够训练地更快以外,还能让我们使用更大的裁剪尺寸训练,从而使得模型准确度更高。我们在Cityscapes和Mapillary Vistas两个数据集上验证我们的方法。对于具有大量弱标注图像的Cityscapes数据集,我们还利用自动标注改进泛化能力。我们的方法在Cityscapes数据集(85.1 IOU test)和Mapillary Vistas数据集(61.1 IOU val)上都取得最先进水平。
关键词:语义分割、注意力、自动标注
1.引言
语义分割的任务是给图像中所有像素打上多个类别中的一个的标签。该任务有个折中,就是某些情况下的预测在低分辨率下推理得更好,而另一些情况下的预测在高分辨率下推理得更好。在放大的图像尺寸下,精细的细节,例如物体边缘或者细长的结构,会推理得更好。同时,缩小的图像尺寸下,对需要更多的全局上下文信息的大物体会推理得更好,因为网络的感受野可以观察到更多的必要的上下文信息。我们将后一种问题称为类别混淆(class confusion)。两种情况的例子如图1所示。
多尺度推理是这一问题的常见解决办法。图像缩放到多个不同尺度,再输入给同一个网络,再将结果取平均或最大池化。取平均来组合多个尺度的预测通常可提高结果,但存在将最佳预测和最差预测结合的问题。煮个栗子,对于某像素,最佳预测来自2×尺度,其0.5×尺度的预测要差很多,取平均的话会将这两者结合起来,得到一个次优的输出。另一方面,最大池化是选择该像素在多个尺度预测中的一个,而最优结果可能是多个尺度预测的加权组合。
为了解决这个问题,我们提出一种使用注意力机制来将某像素的多个尺度预测结合在一起的办法,类似于Chen[1]。我们提出一种层次化的注意力机制,学习预测相邻尺度之间的关系权重,由于它是层次化的,所以我们只需要增加一个额外的尺度的训练pipeline,而其它的方法,例如[1],则需要在训练阶段显示地增加每一个额外的推理尺度。例如,当多尺度推理为{0.5,1.0,2.0}时,其它的注意力方法要求网络在所有这些尺度上训练,导致额外的 倍的训练成本。我们的方法只需要再增加0.5×尺度的训练,导致增加 倍的训练成本。此外,我们提出的层次化机制还可使推理时具有选择额外的尺度的灵活性,而以往的方法在推理的时候只能使用训练时候的尺度。为了在Cityscapes上取得最先进水平,我们还使用了一种对粗标注图像的自动标注策略,以增加数据集中的方差,以提高泛化能力。我们的自标注方法是受一些最近的工作的启发,包括[2,3,4]。和典型的软标签不同,我们使用硬标注,这样标签存储内存就更小,可以降低磁盘IO成本,提高训练速度。
1.1 贡献
一种高效地层次化注意力机制,使网络可以学习如何最好地组合多个尺度的推理,能解决类别混淆和细节的问题。
一种基于硬-阈值的自动标注策略,利用未标记图像来提升IOU。
在Cityscapes数据集(85.1 IOU test)和Mapillary Vistas数据集(61.1 IOU val)上取得最先进水平。
2 相关工作
多尺度上下文 最先进的语义分割网络使用低输出步长的主干网络,这可以更好地分割细节,但是感受野也较小。小的感受野会导致网络难以预测大物体。金字塔池化可通过组合多个尺度的上下文来解决感受野较小的问题。PSPNet[5]使用一个空间金字塔池化模块,使用主干网络的最后一层的特征,用一些列卷积和池化来组合多个尺度的特征。DeepLab[6]使用Atrous Spatial Pyramid Pooling(ASPP),用不同扩张率的扩张卷积,以建立比PSPNet更加稠密的特征。最近ZigZagNet[7]和ACNet[8]使用中间层特征,而不仅仅是最后层特征,来创建多尺度上下文。
关系上下文 实际上金字塔池化关注的是固定的方形上下文区域,因为池化和扩张通常都是对称的。此外这些方法是固定的,不是可学习的。关系上下文通过关注像素之间的关系来构建上下文,而不是固定的方向区域。关系上下文的可学习特性使得上下文的构建可基于图像的各个分区。该方法能够对非正方形的物体区域构建更合适的上下文,例如长火车和细高的灯柱。OCRNet[9]、DANET[10]、CFNet[11]、OCNet[12]和其他相关工作[13,14,15,16,17,18,19,20]利用这些关系来构建更好的上下文。
多尺度推理 一些关系上下文和多尺度上下文方法都使用了多尺度推理来达到最好的结果,例如[21,22,23,9]。多尺度推理有两种常见方法:取平均和最大池化,取平均要更常见些。然而,取平均对不同尺度的输出是等权重的,这样的结果可能是次优的。为了解决这个问题,[1,24]使用注意力组合多个尺度。[1]使用网络的最后层特征来训练一个建模各个尺度间关系的注意力头。[24]组合不同层的特征来构建更好的上下文信息。然而,这两种方法有共同的确定,网络和注意力头是用一组固定尺度训练的,推理时只能使用这些尺度,否则网络要重新训练。我们提出一种层次化的注意力机制,它对推理时用多少个尺度是无关的。我们方法不仅比取平均的性能更好,而且,更进一步地,我们的方法可用于可视化、诊断不同尺度分别对不同物体类别和场景的重要性。此外,我们的方法和其它的注意力方法和金字塔池化方法是正交的,例如[22,25,26,9,27,10,28],因为这些方法使用单个尺度,并使用注意力来更好地组合不同层级的特征,以生成高分辨率的预测。
自动标注 很多在Cityscapes上的语义分割工作都使用了大约2w张的粗标注图像以达到最先进水平[12,29]。然而,由于标签是粗标注的,图像中相当一部分是未标记的。为了在Cityscapes上取得最先进水平,我们提出一种自动标注策略,我们的灵感是来自于NoisyStudent[2],以及其他语义分割半监督自训练方法[30,31,32,33,34],以及其他基于伪标注方法[4,35,36,3]。我们为Cityscapes的粗标注图像生成稠密标注。我们生成的标签只有很少的未标注区域,这样我们就能够充分利用粗标注数据的全部图像内容。
虽然大多数图像分类的自标注方法使用软标签,但为了提高存储效率和训练速度,我们用的是被阈值过的硬标签。软标签在语义分割中是指,教师网络为图像的每个像素上都提供分别属于每个类别的概率。而硬标签是用阈值从各个类别的概率中选出最大的。类似于[37,4],我们为Cityscapes粗标注图像生成稠密的硬标签。图4是一些例子。不同于NoisyStudent[2],我们对生成的伪标签不做迭代的调精。相反,我们使用默认的粗标注数据和精细标注数据,对教师模型进行一次完整的训练。在联合训练之后,对粗标注图像进行自动标注,在将这些自动标注数据替换我们教师模型用的粗标注数据,以获得最好的测试结果。使用我们的伪硬标注和层次化注意力,我们能获得在Cityscapes上的最先进水平。
3.层次多尺度注意力
我们的注意机制在概念上与[1](Attention to scale)非常相似,在[1]中,在每个尺度下都学习,得到dense mask,并通过在对mask执行像素级乘法,然后在不同尺度之间进行像素级求和,来组合这些多尺度预测,以获得最终结果,见图2。我们称陈的方法为 显式方法 。使用我们的 分层方法 ,我们学习相邻尺度之间的相对注意mask,而不是学习每个尺度的所有注意mask。在训练网络时,我们只使用相邻的尺度对(adjacent scale pairs)进行训练。如图2所示,给定一组来自单个(较低)尺度的图像特征,我们预测两个图像尺度之间的像素级的密集的相对注意力权重(dense pixel-wise the relative attention)。实际上,为了获得一对缩放图像,我们获取一个输入图像并将其缩小2倍,这样我们就剩下1倍缩放输入和0.5倍缩放输入,尽管可以选择任何缩小比率。需要注意的是,网络输入本身是原始训练图像的重新缩放版本(re-scaled version),因为我们在训练时使用图像缩放增强。这允许网络学习预测一个范围内(a range of)的图像尺度的相对注意力。在进行推理时,我们可以分层地应用所学的注意力,将N个预测尺度组合在一起,形成一个计算链,如图所示,并由下面的等式描述。我们优先考虑较低的尺度,并努力向更高的尺度发展,我们的想法是,它们有更多的全局上下文,可以选择哪些区域是需要通过更高尺度的预测来refine的。
更正式地,在训练期间,给定的输入图像缩放因子 ,r=0.5表示下采样两倍,r=2.0表示上采样2倍,r=1表示不进行操作。对于我们的训练,我们选择r=0.5和r=1.0。然后,r=1和r=0.5的两个图像通过一个共同的网络块(the shared network trunk),该网络块输出各个尺度下的semantic logits 和注意力掩码 ,该掩码 用来组合不同尺度下的logits 。因此,如果训练和推理都使用2个尺度的话,令 表示双线性上采样,∗ 和+分别为逐像素乘法和加法,公式可形式化为:
使用我们提出的方法有两个优势:
• 在推理时,我们现在可以灵活地选择不同的尺度,因此,通过我们提出的分层式注意力机制链,对于在0.5x和1.0x尺度下训练的模型,我们在推理时可以添加新的尺度例如如0.25x或2.0x。这不同于先前提出的方法,先前的方法训练时使用哪些尺度,在推理时就得用哪些尺度。
• 与显式方法相比,这种层次结构使我们能够提高训练效率。使用显式方法,如果使用0.5、1.0、2.0尺度,相对于单量表训练,训练成本为0.5^2+1.0^2+2.0^2=5.25。采用我们的分层方法,训练成本仅为0.5^2+1.02=1.25。
3.1 架构
主干: 对于本节中的消融研究,我们使用ResNet-50[38](配置为输出步幅8)作为我们网络的trunk。为了获得最先进的结果,我们使用了更大、功能更强大的主干HRNet OCR[9]。
语义头: 语义预测由一个专用的全卷积头执行,该卷积头包括(3x3 conv)→ (BN)→ (ReLU)→ (3x3卷积)→ (BN)→ (ReLU)→ (1x1 conv)。最后的卷积输出num_classes个通道。
注意头:
注意力预测是使用一个单独的头部来完成的,该头部在结构上与语义头部相同,除了最终的卷积输出,它输出一个通道。当使用ResNet-50作为主干时,语义头和注意头会收到ResNet-50最后阶段的特征。当使用HRNet OCR时,语义和注意头会收到OCR块中的特征。使用HRNet OCR的时候,还存在一个 辅助语义头 ,在OCR之前直接从HRNet主干获取其特征。该头部包括(1x1 conv)→ (BN)→ (ReLU)→ (1x1 conv)。在将注意力应用于语义logits之后,使用双线性上采样将预测上采样到目标图像大小。
3.2 分析
为了评估我们的多尺度注意力方法的有效性,我们使用DeepLab V3+架构和ResNet50主干训练网络。在表1中,我们表明,与基线平均法(49.4)或显式法(51.4)相比,我们的分层注意法具有更好的准确性(51.6)。我们还观察到,当添加0.25倍尺度时,我们的方法的结果明显更好。与显式方法不同,当使用额外的0.25倍尺度时,我们的方法不需要重新训练网络。这种 推理时的灵活性 是我们方法的一个主要优点。我们可以训练一次,但可以灵活地用不同的尺度进行评估。
此外,我们还观察到,对于基线平均多尺度方法,简单地添加0.25倍尺度对精度有害,因为它会导致IOU减少0.7,而对于我们的方法,添加额外的0.25倍尺度会将精度再提高0.6个IOU。使用基线平均法,0.25倍的预测是如此粗糙,以至于当与到其他尺度平均时,我们观察到诸如车道标记、人洞、电话亭、路灯、交通灯和交通标志(前后)、自行车架等类别下降1.5 IOU。预测的粗糙度损害了边缘和细节。然而,在我们提出的注意方法中,添加0.25倍的比例将我们的结果提高了0.6,因为我们的网络能够以最合适的方式应用0.25倍的预测,避免在边缘使用它。这方面的例子可以在图3中观察到,其中对于左侧图像中的fine posts,0.5x预测很少关注posts,但2.0x尺度中存在非常强的注意信号。相反,对于右侧非常大的区域,注意机制学习到最大程度地利用较低的尺度(0.5倍),很少利用错误的2.0倍预测。
3.2.1单尺度与双尺度特征
虽然我们确定的架构只从两个相邻图像尺度中较低的一个尺度的特征输入给注意力头(见图2),但我们也尝试用两个相邻尺度的特征训练注意力头。我们没有观察到准确度上的显着差异,所以我们选择了单个尺度的特征。
4.Cityscapes上的自动标注
受最近的在图像分类上任务上的自动标注工作[2,39]的启发,我们在Cityscapes数据集上使用自动标注来提升有效数据集的大小和标注的质量。Cityscapes有2w张粗标注图像和3500张精细标注图像。粗标注图像的标注非常一般,有大量像素是无标签的,如图4所示。通过我们的自动标注方法,我们可以提高标签质量,这反过来又有助于提升模型的IOU。
图像分类中常用的是软标签,或者称为连续标签。在语义分割中,软标签是为每一像素标上所属各个类别的概率,这样很占磁盘空间,训练速度会很慢,标签会占大约3.2TB的磁盘:20000×2048×1024×19×4B=3.2TB。训练期间读取这些标签会大大降低训练速度。
因此,我们用硬标签,即对每个像素,选择教师网络输出的最大类别概率。我们对教师网络输出的概率标签进行阈值化。超过阈值的概率视为标签,否则该像素被视为忽略类。实践中,我们使用0.9的阈值。
5 结果
5.1 实施协议
在本节中,我们将详细描述我们的实现协议。
训练详情
我们的模型在Nvidia DGX服务器上使用Pyrotch[40]进行训练,每个节点包含8个GPU,具有混合精度、分布式数据并行训练和同步批处理规范化。我们的优化器使用随机梯度下降(SGD),每GPU的批量大小为1,动量为0.9,重量衰减为5e−4.在训练中。我们采用“多项式”学习率策略[41]。在默认设置下,我们使用RMI[42]作为主要损失函数,并使用交叉熵作为辅助损失函数。对于城市景观,我们使用2.0的多指数,初始学习率为0.01,并在2个DGX节点上训练175个历元。对于Mapillary,我们使用1.0的多边形指数、0.02的初始学习率,并在4个DGX节点上训练200个历元。如[29]中所述,我们在数据加载器中使用类均匀采样,从每个类中平均采样,这有助于在数据分布不均匀时改进结果。
数据增强:
在训练过程中,我们对输入图像采用高斯模糊、颜色增强、随机水平翻转和随机缩放(0.5x-2.0x)来增强数据集。城市景观的裁剪尺寸为2048x1024,Mapillary Vistas为1856x1024。
5.1.1城市景观结果
Cityscapes[43]是一个大型数据集,在5000幅高分辨率图像上标记了19个语义类。对于城市景观,我们使用HRNet OCR作为主干,并提出了多尺度注意方法。我们使用RMI作为主分割头的损失,但对于辅助分割头,我们使用交叉熵,因为我们发现使用RMI损失会导致深入训练的训练精度降低。我们的最佳效果是首先在较大的Mapillary Vistas数据集上进行预训练,然后在城市景观上进行训练。对于Mapillary预训练任务,我们不会使用注意力机制进行训练。除了自动标记的粗略图像外,我们还使用train+val图像实现了最先进的城市景观配方。我们从train+val集合中用50%的概率采样,另外我们从自动标记的图像池中采样。在推断时,我们使用scales={0.5,1.0,2.0}和图像翻转。
我们对城市景观验证集进行了消融研究,如表2所示。多尺度注意力产生的IOU比基线HRNet OCR架构平均池高0.5%。自动标签比基线提高了1.1%的IOU。将这两种技术结合在一起可获得1.4%IOU的总增益。
最后,在表3中,我们展示了我们的方法与Cityscapes测试集中其他性能最好的方法相比的结果。我们的方法得分为85.1,这是所有方法中报告的最佳城市景观测试分数,比之前的最佳分数高0.6 IOU。此外,我们的方法在除三个类别外的所有类别中都拥有最高的每班分数。图5显示了一些结果。
5.1.2 Mapillary Vistas远景的结果
Mapillary Vistas[45]是一个大型数据集,包含25000个高分辨率图像,注释为66个对象类别。对于Mapillary,我们使用HRNet OCR作为主干,并提出了多尺度注意方法。因为Mapillary Vistas图像可以具有非常高且不同的分辨率,所以我们调整图像的大小,使长边为2177,如[23]中所述。我们使用在ImageNet分类上训练的HRNet的权重初始化模型的HRNet部分。由于Mapillary中66个类需要更大的内存,我们将裁剪大小减少到1856 x 1024。在表4中,我们展示了我们的方法在Mapillary验证集上的结果。我们单个模型达到61.1,比下一个最接近的方法Panopoptic Deeplab[23]高2.4,后者使用模型集成实现58.7。
6 结论
在这项工作中,我们提出了一种分层的多尺度注意语义分割方法。我们的方法在提高分割精度的同时,也提高了内存和计算效率,这两者都是实际问题。训练效率限制了研究的速度,而GPU内存效率限制了裁剪网络的训练尺度,这也限制了网络的准确性。我们的经验表明,使用我们提出的方法可以持续改善城市景观和Mapillary Vistas。
致谢:我们要感谢Sanja Fidler、Kevin Shih、Tommi Koivisto和Timo Roman的有益讨论。