论文地址: https://arxiv.org/pdf/1612.01105.pdf
发表日期:2017年
场景解析对于不受限制的开放词汇表和多样化的场景来说很具有挑战性。在本文中,我们通过金字塔池模块和提出的金字塔场景解析网络(PSPNet),利用基于不同区域的上下文聚合的全局上下文信息的能力。我们的全局先验表示可以有效地在场景解析任务上产生良好质量的结果,而PSPNet为像素级预测提供了一个优越的框架。该方法在各种数据集上取得了最先进的性能。它在2016年ImageNet场景解析挑战、pascal VOC2012基准和城市景观基准中获得第一名。PSPNet对pascal VOC2012的mIoU准确率为85.4%,对城市景观的准确率为80.2%。
1. INTRODUCTION
基于语义分割的场景解析是计算机视觉中的一个基本课题。目标是为图像中的每个像素分配一个类别标签。场景解析提供了对场景的完整理解。它可以预测每个元素的标签、位置和形状。这一课题对自动驾驶、机器人传感等潜在应用有着广泛的兴趣。
场景解析的难度与场景和标签的多样性密切相关。先锋场景解析任务[23]是在LMO数据集[22]上对2688张图像的33个场景进行分类。最近的t PASCAL VOC语义分割和PASCAL上下文数据集[8,29]包含了更多具有类似上下文的标签,如椅子和沙发、马和牛等。新的ADE20K数据集[43]是最具挑战性的一个,具有一个大的和不受限制的开放词汇表和更多的场景类。一些有代表性的图像如图1所示。要为这些数据集开发一个有效的算法,就需要克服一些困难。
最先进的场景解析框架大多基于全卷积网络(FCN)[26]。基于深度卷积神经网络(CNN)的方法提高了动态对象的理解,但考虑不同场景和无限制词汇仍然面临挑战。图2的第一行显示了一个例子,其中一艘船被误认为是汽车。这些错误是由于物体的外观相似而造成的。但是,当查看之前关于场景被描述为河附近的船屋的背景的图像时,应该得出正确的预测。
为了实现精确的场景感知,知识图依赖于场景上下文的先验信息。我们发现,目前基于FCN的模型的主要问题是缺乏合适的策略来利用全局场景类别线索。对于典型的复杂场景理解,以前为了获得全局图像级特征,空间金字塔池[18]被广泛使用,其中空间统计为整体场景解释提供了一个很好的描述符。空间金字塔池化网络[12]进一步增强了其能力。
与这些方法不同的是,为了结合合适的全局特征,我们提出了金字塔场景解析网络(PSPNet)。除了传统的扩展FCN[3,40]用于像素预测外,我们还将像素级特征扩展到专门设计的全局金字塔池特征。局部和全球的线索一起使最终的预测更加可靠。我们还提出了一种具有深度监督损失的优化策略。我们给出了所有的实现细节,这是本文中良好性能的关键,并使代码和训练过的模型公开。
我们的方法在所有可用的数据集上实现了最先进的性能。它是ImageNet场景解析挑战2016[43]的冠军,在PASCAL VOC2012语义分割基准[8]获得第一名,在城市场景城市景观数据[6]第一名。他们表明,PSPNet为像素级预测任务提供了一个很有前途的方向,这甚至可能有利于基于cnn的立体匹配、光流、深度估计等。在后续的工作中。我们的主要贡献有三点:
- 我们提出了一种金字塔场景解析网络,将困难的场景上下文特征嵌入到一个基于FCN的像素预测框架中。
- 我们开发了一种基于深度监督损失的深度ResNet[13]优化策略。
- 我们构建了一个针对最先进的场景解析和语义分割的实用系统,其中包含了所有关键的实现细节。
2. Related Work
下面,我们将回顾在场景解析和语义分割任务方面的最新进展。在强大的深度神经网络[17,33,34,13]的驱动下,场景解析和语义分割等像素级预测任务用卷积层[26]取代了分类中的全连接层,取得了很大的进展。为了扩大神经网络的接受域,[3,40]的方法采用了扩张卷积。Noh等人[30]提出了一种带有deconvolution网络的从粗到细的结构来学习分割掩模。我们的基线网络是FCN和dilated网络[26,3]。
其他的工作主要是在两个方向上进行的。其中一行[26,3,5,39,11]具有多尺度特征集成。由于在深度网络中,高级特征包含更多的语义意义,而更少的位置信息。结合多尺度特性可以提高性能。
另一个方向是基于结构预测。早期的工作[3]使用条件随机场(CRF)作为后处理来细化分割结果。以下方法是[25,41,1]通过端到端建模来细化网络。这两个方向都提高了场景解析的定位能力,其中预测的语义边界适合对象。然而,在复杂的场景中,仍有很大的空间来利用必要的信息。
在目标检测框架下[35],Liu等[24]证明了使用FCN的全局平均池可以提高语义分割结果。然而,我们的实验表明,这些全局描述符对于具有挑战性的ADE20K数据不够具有代表性。因此,与[24]中的全局池化不同,我们通过金字塔场景解析网络,通过基于不同区域的上下文聚合来利用全局上下文信息的能力。
3. Pyramid Scene Parsing Network
在应用FCN方法进行场景解析时,我们首先对有代表性的失败案例进行了观察和分析。它们激励了我们的金字塔池模块作为有效的全局背景之前的提议。然后描述了图3中所示的金字塔场景解析网络(PSPNet),以提高复杂场景解析中开放词汇表对象和材料识别的性能。
3.1. Important Observations
新的ADE20K数据集[43]包含150个东西/对象类别标签(例如,墙壁、天空和树)和1038个图像立面场景描述符(例如,机场航站楼、卧室和街道)。因此,大量的标签和大量的场景分布出现了。通过检查[43]中提供的FCN基线的预测结果,我们总结了复杂场景解析的几个常见问题。
Mismatched Relationship 语境关系是普遍的和重要的,尤其是对于复杂的场景理解。存在着共存的视觉模式。例如,一架飞机很可能是在跑道上或在空中飞行,而不是在道路上。对于图2中的第一行示例,FCN根据其外观预测黄色框中的船为“车”。但众所周知,汽车很少会过河。由于缺乏收集上下文信息的能力,增加了错误分类的机会。
Confusion Categories 在ADE20K数据集[43]中有许多类标签对在分类中令人混淆。例如,田野和土;山脉和斜坡;墙、房屋、建筑和摩天大楼。它们的外观都很相似。专家标记整个数据集,仍然有17.60%的像素误差,如[43]中所述。在图2的第二行,FCN预测盒子中的物体为摩天大楼的一部分和建筑的一部分。这些结果应该被排除,以便整个物体要么是摩天大楼,要么是建筑,而不是两者。这个问题可以通过利用类别之间的关系来解决。
Inconspicuous Classes 场景包含任意大小的对象/东西。一些小尺寸的东西,如路灯和招牌,很难找到,但它们可能非常重要。相反,大的物体或物质可能会超过FCN的接受域,从而导致不连续的预测。如图2第三行所示,枕头与床单外观相似。忽略全局场景类别可能无法分析枕头。为了提高对于非常小或非常大的对象的性能,人们应该非常注意包含不显眼类别内容的不同子区域。
综上所述,许多错误部分或完全与不同接受域的上下文关系和全局信息有关。因此,一个具有合适的全局场景级先验的深度网络可以大大提高场景解析的性能。
3.2. Pyramid Pooling Module
在上述分析中,我们引入了金字塔池模块,通过经验证明它是一个有效的全局上下文先验。
在深度神经网络中,接受野的大小可以大致表明我们使用上下文信息的数量。虽然理论上ResNet[13]的接受域已经大于输入图像,但Zhou等人[42]表明,CNN的经验接受域比理论接受域要小得多,特别是在高层。这使得许多网络之前没有充分融入重要的全球景观。我们通过提出一个有效的全局先验表示来解决这个问题。
全局平均池化是一种很好的全局上下文先验基线模型,常用于图像分类任务[34,13]中。在[24]中,它被成功地应用于语义分割。但是对于ADE20K[43]中的复杂场景图像,这种策略并不足以覆盖必要的信息。这些场景图像中的像素都针对许多东西和对象进行了注释。直接将它们融合形成一个单一的向量,可能会失去空间关系,造成歧义。全局上下文信息和次区域上下文在这方面有助于区分各种类别。一个更强大的特征表示可以是将来自不同子区域的信息与这些感受视野融合。在场景/图像分类的经典作品[18,12]中也得出了类似的结论。
在[12]中,由金字塔池生成的不同层次的特征图最终被扁平并连接起来,并被输入到一个完全连接的层中进行分类。该全局先验旨在消除CNN对图像分类的固定大小约束。为了进一步减少不同子区域之间的上下文信息损失,我们提出了一种分层的全局先验方法,它包含了不同尺度和不同子区域之间变化的信息。我们称之为金字塔池化模块,在深度神经网络的最终层特征图上进行全局场景先验构造,如图3的©部分所示。
金字塔池化模块在四个不同的金字塔尺度下融合特征。用红色突出显示的最粗级别是单个输出的全局池化。下面的金字塔层将特征图划分为不同的子区域,并形成不同位置的集合表示。金字塔池模块中不同级别的输出包含不同大小的特征图。为了保持全局特征的权重,如果金字塔的水平大小为N,我们在每个金字塔水平后使用1层×1卷积层,将上下文表示的维数降低为原始表示的1/N。然后,我们直接采样低维特征地图得到相同大小的特征作为原始特征地图通过双线性插值。最后,将不同层次的特征连接为最终的金字塔池全局特征。
请注意到,金字塔级别的数量和每个级别的大小都可以被修改。它们与输入到金字塔池化层的特征映射的大小有关。该结构通过采用不同大小的池化内核来抽象不同的子区域。因此,多阶段的内核应该在表示上保持一个合理的差距。我们的金字塔池模块是一个四级模块,bin大小分别为1×1、2×2、3×3和6×6。对于maxpool和meanpool之间的池化操作类型,我们进行了广泛的实验来显示第5.2节中的差异。
3.3. Network Architecture
利用金字塔池化模块,我们提出了金字塔场景解析网络(PSPNet),如图3所示。给定图3(a)中的输入图像,我们使用预先训练的ResNet[13]模型和扩张网络策略[3,40]来提取特征图。最终的特征图大小为输入图像的1/8,如图3(b)所示。在map的顶部,我们使用©中显示的金字塔池模块来收集上下文信息。使用我们的4级金字塔,池化内核覆盖了图像的整个、一半和一小部分。它们被融合为全球的先验。然后我们将©.的最后一部分与原始特征图连接起来然后是一个卷积层,在(d).中生成最终的预测图。
为了解释我们的结构,PSPNet为像素级场景解析提供了一个有效的全局上下文先验。金字塔池模块可以收集信息级别,比全局池[24]更具有代表性。在计算成本方面,我们的PSPNet与原始扩展的FCN网络相比并没有有太多的增加。在端到学习中,可以同时优化全局金字塔池模块和局部FCN特性。
- Deep Supervision for ResNet-Based FCN
使用深度预训练模型会有良好的性能[17,33,13]。然而,网络深度的增加可能会增加额外的优化难度,如图像分类的[32,19]所示。ResNet通过在每个块中的跳过连接解决了这个问题。深度ResNet的后一层主要是学习一个残差。
相反,我们建议通过具有额外损失的监督来生成初始结果,然后学习具有最终损失的残差。因此,将深度网络的优化分解为两个,每一个都更容易求解。
我们的深度监督ResNet101[13]模型的一个例子如图4所示。除了使用softmax损失训练最终分类器的主分支外,在第四阶段后还应用另一个分类器,即res4b22残差块。与中继反向传播[32]阻止多个浅层的反向辅助损耗不同,我们让这两个loss函数通过之前的所有层。辅助损失有助于优化学习过程,而主分支损失承担的责任最大。我们增加了weight来平衡辅助损失。
在测试阶段,我们放弃了这个辅助分支,只使用优化良好的主分支进行最终预测。这种基于ResNet的FCN的深度监督训练策略在不同的实验设置下广泛有用,并与预先训练的ResNet模型一起工作。这表明了这种学习策略的普遍性。更多细节见第5.2节。
5. Experiments
我们提出的方法在场景解析和语义分割的挑战上是成功的。我们在本节中对三个不同的数据集进行了评估,包括ImageNet场景解析挑战2016[43]、帕斯卡尔VOC2012语义分割[8]和城市场景理解数据集城市景观[6]。
5.1. Implementation Details
对于一个实用的深度学习系统,关键总是在细节中。我们的实现是基于公共平台Caffe[15]。受[4]的启发,我们使用“poly”学习率策略,其中当前学习速率等于基1乘以 ( 1 − i t e r m a x _ t i e r p o w e r ) (1-\frac{iter}{max\_tier}^{power}) (1−max_tieriterpower)。我们设置基础学习率为0.01,power为0.9。通过增加迭代次数(iter)可以提高性能,ImageNet的iter为150K,PSDVSL VOC为30K,Cityscapes为90K。Momentum和weight decay分别设置为0.9和0.0001。对于数据增强,我们对所有数据集采用随机镜像和随机调整大小,并在-10-10度之间添加随机旋转,对ImageNet和pascalVOC添加随机高斯模糊。这种综合的数据增强方案使网络能够抵抗过拟合。我们的网络使用了[4]扩展卷积(dilated convolution)。
在实验过程中,我们注意到一个适当的大的“cropsize”可以产生良好的性能,而在 batch normalization[14]层中的“batchsize”是非常重要的。由于GPU卡上的物理内存有限,我们在训练期间将“batchsize”设置为16。为了实现这一点,我们修改了来自[37]Caffe的分支[4],并使其支持基于OpenMPI从多个gpu收集的数据的批处理规范化。对于辅助损失,我们在实验中将权重设为0.4。
5.2. ImageNet Scene Parsing Challenge 2016
Dataset and Evaluation Metrics ADE20K数据集[43]用于ImageNet场景解析挑战2016。与其他数据集不同,ADE20K对于多达150个类和共有1038个图像级标签的不同场景来说更具有挑战性。将挑战数据划分为20K/2K/3K图像进行训练、验证和测试。此外,它需要同时解析场景中的对象和东西,这使得它比其他数据集更困难。对于评估,两个像素级精度(像素elacc)并使用了并集上的类级交集的平均值(平均IoU)
Ablation Study for PSPNet 为了评估PSPNet,我们进行了几种设置的实验,包括maxpool和meanpool,只有一个全局特征或四级特征,在池操作之后和连接之前是否降维。如表1所示,在所有设置中,meanpool都比maxpool的效果更好。使用金字塔解析的pool性能优于使用全局pool。随着降维,性能进一步提高。与我们提出的PSPNet,最佳设置产生的结果41.68%的平均IOU和80.04%像素Acc。超过了Liu等人[24]提出的全局平均池化(iou/acc=>40.07/79.52)越1.61/0.52。与基线相比,PSPNet在绝对改进方面比它高出4.45/2.03,11.95/2.60的相对差异。
Ablation Study for Auxiliary Loss 引入的辅助损失有助于优化学习过程。我们实验将辅助损失重量α设置在0到1之间,结果如表2所示。基线使用基于resnet50的FCN,利用主分支的softmax loss进行优化。添加辅助损失分支,α=0.4会产生最好的性能。它在平均IoU和像素Acc方面优于基线,提高了1.41/0.94(%)。我们相信,考虑到新的增强的辅助损失,更深层次的网络将受益更多。
Ablation Study for Pre-trained Model 在以前的工作中,更深层次的神经网络已经被证明有利于大规模的数据分类。为了进一步分析PSPNet,我们对不同深度的预训练ResNet进行了实验。我们测试了四个深度的{50,101,152,269}。如图5所示,在相同的设置下,将ResNet的深度从50增加到269可以提高平均IoU与Pixel Acc的得分,从60.86%上升到62.35%,绝对改善幅度为1.49。表3列出了从不同深度ResNet模型预训练的PSPNet的详细分数。
More Detailed Performance Analysis 我们在表4中展示了我们对ADE20K验证集的更详细的分析。除了最后一行外,我们所有的结果都使用单尺度检验。“ResNet269+DA+AL+PSP+MS”使用了多尺度测试。我们的基线来自于具有扩张网络的ResNet50,它产生了Mean IoU:34.28和Pixel Acc:76.35.由于强大的ResNet[13],它的性能已经优于其他之前的系统。
与基线相比,我们提出的架构进行了进一步的改进。使用数据增强,我们的结果超过基线1.54/0.72,并达到35.82/77.07。使用辅助损耗可进一步提高1.41/0.94,达到37.23/78.01。通过PSPNet,我们注意到4.45/2.03的改进取得了相对更显著的进展。结果达到41.68/80.04。与基线结果在绝对改善方面的差异为7.40/3.69,在相对性方面的差异为21.59/4.83(%)。更深的ResNet269网络产生更高的性能高达43.81/80.88。最后,多尺度测试方案将分数转移到44.94/81.69。
Results in Challenge 使用所提议的架构,我们的团队在2016年ImageNet场景解析挑战中获得了第一名。表5显示了本次比赛的一些结果。我们的集成提交在测试集上的得分为57.21%。我们的单模型生成的得分为55.38%,这甚至高于其他一些多模型集成提交。这个分数低于验证集上的分数,可能是由于验证集和测试集之间的数据分布的差异。如图2的(d)列所示,PSPNet解决了FCN中常见的问题。图6显示了对ADE20K验证集的另一些解析结果。与基线相比,我们的结果包含了更准确和详细的结构。
5.3. PASCAL VOC 2012
我们的PSPNet在语义分割方面也工作得令人满意。我们在pascal VOC 2012分割数据集[8]上进行了实验,该数据集包含20个对象类别和一个背景类。按照[26,7,31,3]的程序,我们使用带有[10]注释的增强数据,得到10582、1449和1456张图像进行训练、验证和测试。结果如表6所示,我们将PSPNet与之前在测试集上的最佳性能方法进行了比较,即对MS-COCO数据集[21]进行了预训练。用MS-COCO预先训练的方法被标记为“†”。为了与当前基于ResNet的场景解析/语义分割任务的框架[38,9,4]进行公平的比较,我们构建了基于ResNet101的架构,而没有像CRF那样的后处理。我们使用分级输入评估PSPNet,并使用[3,24]之后的平均结果。
如表6所示,PSPNet在这两种设置上都优于之前的方法。仅使用VOC2012数据进行训练,我们达到了82.6%的准确率2——我们在所有20个类上获得了最高的准确率。当PSPNet使用MS-COCO数据集进行预训练时,它的准确率达到85.4%3,20个类中有19个获得最高的准确率。有趣的是,我们仅使用VOC2012数据训练的PSPNet优于使用MS-COCO预训练模型训练的现有方法。
有人可能会说,自从最近提出ResNet以来,我们的基础分类模型比之前的几种方法更强大。为了展示我们独特的贡献,我们展示了我们的方法也优于使用相同模型的最先进的框架,包括FCRNs[38]、LRR[9]和DeepLab[4]。在这个过程中,我们甚至不使用耗时但有效的后处理,如CRF。
图7中显示了几个例子。对于第一行的“牛”,我们的基线模型将其视为“马”和“狗”,而PSPNet则纠正了这些错误。对于第二行和第三行的“飞机”和“表格”,PSPNet找到缺失的部分。对于以下几行中的“人”、“瓶子”和“植物”,与基线模型相比,PSPNet在图像中的这些小尺寸对象类上表现良好。图9中包含了PSPNet和其他方法之间更多的可视化比较。
5.4. Cityscapes
Cityscapes [6] [6]是最近发布的一个用于城市语义场景理解的数据集。它包含了从50个不同季节收集的5000张高质量像素级的精细注释图像。这些图像被分成数字为2975500和1525的集合,用于训练、验证和测试。它定义了19个同时包含东西和对象的类别。此外,还为两种比较设置提供了20,000张粗糙注释的图像,即只使用精细数据或同时使用精细数据和粗数据进行训练。使用细数据和粗数据训练的方法被标记为“‡”。详细的结果列于表7中。我们的基本模型是ResNet101,如在DeepLab[4]中进行公平比较,测试程序遵循第5.3节。
表7中的统计数据显示,PSPNet优于其他方法,具有显著的优势。使用精细和粗数据进行训练可以使我们的方法产生80.2的精度。图8中显示了几个例子。测试集的详细结果如表8所示。
6. Concluding Remarks
我们提出了一种有效的金字塔场景解析网络。全局金字塔池特性提供了额外的上下文信息。我们还为基于resnet的FCN网络提供了一种有深度监督的优化策略。我们希望公开的实现细节可以帮助社区采用这些有用的策略来进行场景解析和语义分割,并推进相关技术。
转载:https://blog.csdn.net/a486259/article/details/125810356