Adaptive Pyramid Context Network for Semantic Segmentation
拟解决问题:
为了提高语义分割的效果,有很多工作引入了图像的上下文特征来帮助完成语义分割任务。其具体是在预测某个像素点的类型时需要整合与其相关的像素点或相关区域的特征,之前的方法均是将给这些特征以相同的权重并累加之后得到一个图像上下文特征,这种方法限制了上下文特征的作用,因为在针对每个像素而言,上下文特征中对其有用的信息是有限的。所以直接累加得到的上下文特征并没有将其作用发挥到极致。
为了解决上面的问题作者提出了APCNet模型。在介绍具体的模型结构之前,先介绍一下作者总结了在语义分割任务中上下文特征中必须的三个特点。
多尺度(Multi-scale):由于物体通常具有不同的大小与位置,因此有必要获取不同尺度下的特征来构建多尺度特征,论文中给与了实验来证明出没有使用多尺度上下文的方法会丢失一些细节。
自适应(Adaptive):并不是输入图像中的所有区域对给定像素的语义标签都有同等的作用。区域中包含相关物体的能够产生有用的信息,而其他区域就只能贡献很少的信息。在实际中,与给定像素点相关的区域或者像素点既可能在该点附近,也有可能与该点相距较远,这和输入图片的内容及其分布有关。因此,自适应地识别这些重要因素非常重要。
Global-guided Local Affinity(GLA):为了构建有效的上下文向量,需要聚合来自相关像素或区域的特征。在实际中,可以通过加权方式来整合其特征。因此,存在整合的每个体征的权重分配问题。这些权重可以认为每个相关区域对预测像素的语义标签所贡献信息的多少。之前的工作大都使用局部上下文,而忽略了全局上下文信息的重要性。作者通过实验也表明了全局上下文对分割任务的重要性。
然后作者对比了之前的工作表明只有该方法可以满足上述的三个要素,比较的结果如下:
下面将详细的介绍作者的提出的方法,首先作者设计的模型框架如下:
上图中的左边是输入的原始图像,最右边输出的是语义分割的结果。当原始图像输入到模型中后首先会利用CNN抽取图像的特征分布图,作者在实验部分提到抽取后的特征图的大小为原始图像的1/8,中间部分作者将得到的特征图分别输入到不同的ACM模块中,其中每个ACM模块的作用是获取某个尺度下的特征表示,最后将不同尺度下的特征拼接后在于原始特征图拼接,得到了完整的特征表示图,将其在降维后得到了语义分割结果。
---------上面介绍了APCNet模型的大体流程,下面详细介绍里面的细节------
ACM模块是该论文中最重要的核心,其主要作用是为了获取图像特征图在某个尺度下的特征表示。例如图中显示的ACM(S=2),表示的是在2*2这个尺度下的图像特征表示,其基本思想与使用2*2的卷积核抽取特征是相同的。不同的尺度表明这个卷积核的大小是不同的。
下图是在s*s尺度下的ACM模块的流程图:
通过上图可以看处每个ACM模块是由两个分支组成的,其中上面的分支是为了计算亲和参数(affinity coefficients)的,这个亲和参数可以认为是在某个单一尺度下每个像素点对这个尺度特征的贡献度。下面的分支是为了计算得到单一尺度下的特征表示。最后将亲和参数矩阵与该尺度下的特征表示矩阵相乘就得到了这个尺度下最终的表征矩阵。下面以尺度为s*s的ACM来介绍:
针对第一个分支:1、对CNN模型处理后的特征图进行降维得到了一个h*w*512的张量x;2、利用空间全局平均池化操作,得到一个全局特征信息表示g(x)其维度为1*1*512;3、将得到的全局特征信息表示g(x)整合到张量x中的每一个像素点中;4、使用1*1的卷积核对新整合的张量进行降维,得到一个h*w*s2的亲和张量5、最后将其reshape成hw*s2的亲和参数矩阵。
第二个分支中对经过CNN模块得到的特征图进行adaptive average pooling操作(针对这个操作我认为可能是在s*s的范围框内进行平均池化),然后使用1*1的卷积核获取到s*s*512大小的特征表示,然后将其reshape成s2*512的特征表示矩阵。
最后将第一个分支得到的亲和矩阵与第二个分支得到的特征矩阵相乘,其维度大小为hw*512,然后将去reshape为h*w*512的张量。最后作者采用了残差的思想将最终的特征与降维后得到的h*w*512张量表示相整合最终得到了在s*s尺度下的特征表示。
多个ACM模块并行抽取不同尺度下的特征表示,最后将这些特征拼接,在于原本经过CNN模型得到的特征拼接就得到了最终想要的融合多尺度上下文信息的语义特征表示。其过程图如下:
Experiments
实验阶段中作者主要侧重在PASCAL VOC 2012数据集下进行了实验。然后在Pascal-Context、ADE20K数据集上与其他方法进行对比。
首先作者设计实验验证金字塔尺度对于模型性能有所提升,并找出最优的尺度空间分布,其结果如下:
随后作者验证了GLA的存在是否对于传统模型性能有所提高,结果如下:
之后后测试了不同的设置对模型的影响,包括Deep supervision、数据增强、多尺度、微调模型,结果如下:
最后在另外两个数据集下与其他的方法进行了性能对比实验,其结果如下: