文章目录
1 摘要
本文针对场景解析提出一种使用金字塔池化模块的PSPNet,能够聚合不同区域的上下文信息,在场景解析中达到非常好的效果,该结构在各个数据集中均有很好的表现,其中在PASCAL VOC 2012和Cityscapes中刷新了mIoU的记录,分别获得85.4%和80.2%的准确率。
2 亮点
2.1 PSPNet
2.1.1 PSPNet总体结构的解释
在使用FCN的时候,可能会出现以下三种情况:
如上图:
① 类别关系识别错误。当在外形较为相似的情况下,FCN会把船屋旁边的船识别成为车辆,说明FCN并没有很好利用各个语义之间的联系,例如在这个例子中,船出现在湖泊中和船屋旁边的概率肯定会比车辆大。
② 类别发生融合。在外形相似的情况下如建筑和摩天大楼,FCN在第二栏中把一个物体识别成为一部分为建筑一部分为摩天大楼。但是这个物体应该只能为二者的其中之一。
③ 忽略小尺寸的物体。如在第三行中,FCN就把枕头忽略掉了,这是由于一大片床单上放置一个颜色跟床单较为相似的枕头,而FCN关注全局特征信息的时候就忽略了局部信息。
出现上面的根本原因是:对于同一张图,FCN总是采取同一个尺度的池化层,也就是总是考虑的是全局信息而有可能忽略了局部信息以及局部信息之间的联系,为此,作者提出需要进行多尺度处理一张特征图然后再进行特征拼接,利用各个局部信息与全局信息来获得一个更可靠的结果,提出了PSPNet,如下图:
在图中,一张输入图像先经过一个CNN(这里使用ResNet网络)网络进行特征提取获得特征图(变为原来的1/8),然后在特征图的后面分别同时采用1x1,2x2,3x3和6x6四个不同级别的池化模块进行池化操作,池化操作后面接一个将通道数变成原来1/4的1x1卷积(目的是为了后面这四个通道数的拼接)。其实到了这一步,一张特征图就相当于分成了四个尺度,每个尺度都有各自最擅长识别的尺度范围,例如可能小尺度的更擅长识别到小尺寸物体,大尺度的擅长识别整体特征。然后使用双线性插值法分别对四个等级的特征图进行上采样成为同一尺寸。最后对这些不同尺度的特征图进行拼接然后进行卷积处理得到输出结果。输出的结果就相当于融合了不同的尺度特征,考虑了各尺度之间物体之间的特征联系。
2.1.2 PSPNet上下文信息的解释
融合局部特征和全局特征是如何使得语义之间存在联系的呢?纵看整个网络并没有引入概率模型去对船还是车进行估计。我的理解是:在训练的过程中,在大量的训练集中,船和船屋和池塘经常出现在一起,而车与船屋和池塘同时出现的图片就较少,所以在学习过程中,CNN本身就认为船和船屋和池塘之间存在一定的联系了,如果池塘上出现了一个形状上和船跟车一样的东西,它就会大概率把这个东西判定为船。为何FCN中又把它误判为车了呢?我觉得主要原因是FCN中只使用了一个尺度去提取全局特征,像一个放大镜放大倍数小时只对全局进行观看,并没有关注到船和船屋和池塘的关系。而PSPNet中,调整不同的尺度,就像一个放大镜把倍数调成不同的倍数,那么在不同倍数中就能观察到局部物体之间的联系,比如船和池塘和船屋的关系,就会认为池塘上的是船。所以在进行不同尺度的融合以后,PSPNet认为它是船的概率就比车大。同理,建筑和摩天大楼;床上的枕头都可以使用尺度方面进行解释。
2.2 ResNet的辅助loss
由于PSPNet的CNN部分使用的是ResNet网络,因此作者提出一种辅助loss的方法在训练的时候使ResNet更快地进行收敛,如下图:
在倒数第4个残差块中加入了一个辅助loss,目的是辅助整个ResNet网络的优化(具体怎么优化尚未搞懂)。
3 部分效果
上图为各个网络结构在PASCAL VOC 2012上的表现,PSPNet表现更佳。
上表为各个网络结构在Cityscapes中对各个类别识别概率的对比。
4 结论
总的来说,这篇文章的池化模块类似于DeepLab中的ASPP,都是为了在尺度方面整合各尺度语义的联系,提升语义分割的准确率。
5 参考文献
(1)Pyramid Scene Parsing Network
(2)Pyramid Scene Parsing Network
(3)深度学习之PSPnet用于语义分割