图像分割——Multi-Scale and Pyramid Network Based Models( PSPN)理解和代码分析
Multi-Scale and Pyramid Network Based Models 简介: 多尺度分析(Multi-scale analysis)是一个比较古老的算法,他的主要思想是,通过自适应输入图片的尺度,产生一系列不同size的特征图,然后将这些特征图进行并行计算(对于多尺度分析的细致讲解.) 。最经典的多尺度分析算法,是由 Lin等人在2017年 IEEE上提出的Feature Pyramid Network (FPN),算法最初被应用于目标检测( object detection),不过之后也被用作图像分割。 FPN的工作原理和传统的Encoder-Decoder Based Models类似,都是通过一个bottom-up 过程,一个 top-down 过程,同时经过lateral connections,最终产生分割结果。
PSPN的背景: 随着人们对于图像分割的不断探索,越来越多的图像分割数据集也被提出。然而,人们在新数据集上使用原本的分割模型时,却发现了越来越多的问题: 1、新数据集中包含了很多相似类别的物体,传统模型对于相似物体的分割往往会出现问题。 2、新数据集中包含了更多的场景信息,传统模型不能很好的使用这些信息。 因此,为了克服这些问题,在2017年,香港大学Hengshuang Zhao等人提出了一个新的算法——Pyramid Scene Parsing Network(PSPN)。 PSPN是由基于ResNet的FNC网络框架修改得到,使用金字塔场景分析网络,来提取图片不同尺度的特征,并将其结合,从而可以提取图片上下文信息。同时,根据ResNet网络的特性,作者提出了一种新的深度监督损失。PSPN的训练是在 ADE20K数据集上进行的,相比较于之前的数据集,它包含150种label和1,038种图片等级的场景描述,因此可以充分看出PSPN相比于传统算法的优势。
想法和方法: 为了更好的提取图片的上下文信息,PSPN根据以往经验,引入了pyramid pooling module。 首先PSPN在第一步,使用ResNet和空洞卷积提取feature map。之后,这些特征图会被输入一个pyramid pooling module中,pooling成4个不同size的特征图,其中第一行红色是最粗糙的特征–全局池化生成单个bin输出,后面三行是不同尺度的池化特征。在pyramid pooling module的过程中,对每一个不同size的特征图,引入了一个1 x 1的卷积,目的是将其维度降低。在这之后,我们得到了4个不同size的、低维度的特征图。我们将这4个特征图up-sampled到原来的大小之后,和初始的特征图进行合并,由此,我们新的特征图包含了local context information(初始特征图提供)和global context information(pyramid pooling特征图提供)。最后,再通过一个卷积层,获得像素级分割。
优点: 1、PSPN最大的有点,也是这篇文章最大的卖点,就是第一次使用pyramid pooling,完成了全局上下文信息的提取。 2、由于pyramid pooling的存在,可以去除CNN固定大小的图像分类约束,减少不同区域之间的信息损失。
缺点: 1、pyramid pooling的固有问题——计算量相比于传统网络会大很多,且池化特征图越多,计算量越大。