PixelNet:Towards a General Pixel-Level Architecture

FCN是深度学习图像语义分割的开山之作,在卷积过程中利用了像素的空间冗余性,实现了很好的效果,但是,FCN也是有缺点的,尽管这种方法在计算上非常有效率,但是在数据统计上效率不高。空间冗余性限制了从相邻像素间学习到的信息。这篇文章填补了这个缺点,并且还志在展示一个比较通用的结构,来赶上或超越针对特殊任务设计的具体结构的效果。

由于像素之间有联系性,所以在每幅图片上只采样一小部分像素就足够用来学习。这种采样方式节省了时间和空间,使探索其他提高性能的方式成为了可能。

总的来说,PixelNet在以下几个方面做出了贡献:

1、虽然现有的大多数方法需要对原始图像像素网格的分辨率进行空间上采样粗预测(如反卷积或插值),但采样只需要对一组稀疏的采样特征进行随需应变的计算,因此在训练过程中节省了时间和空间。

2、使用了基于“超列”的按像素提取特征的预测器,采用非线性预测,极大提高准确率。

3、因为使用倾斜类标签分布的采样,使得模型更好地专注于稀有类别。

4、在边缘检测,语义分割,表面法线估计等任务上都有很好的表现。

结构:

多尺度特征(超列描述):

超列是什么呢,简单来说就是将输入图像某个像素在某些中间卷积层提取的特征图中对应的点提取出来,形成多尺度特征。

多尺度特征提取出来以后,输入学习到的一个非线性预测器:

这是个MLP(多层感知机),由ReLU与一系列全连接层构成。

以下是PixelNet结构图示:

PixelNet Architecture

在测试阶段,进行Dense Prediction,包括以下几个步骤:1、对所有层的卷积响应进行前向计算。2、对映射到每个原始像素分辨率的响应进行双线性插值,产生超列特征的稠密像素网格。3、这些像素网格按像素输入MLP进行处理。

在训练阶段,由于计算量的变化,必须进行Parse Prediction。考虑给定一张图片X,和一个像素位置的稀疏集,通过以下步骤产生对于这些像素预测的稀疏集:1、同上。2、为了计算这个集合,引入了一个新的多尺度采样层,它直接提取中最接近像素位置的4个离散位置对应的4个卷积特征,然后通过双线性插值“动态”计算,这就避免了计算超列特征的稠密网格。3、将超列向量重排列为一个矩阵,然后步骤三可以直接用矩阵向量相乘来实现。


黄色标注不怎么明白

采用Mini-Batch sampling,与FCN区分,FCN也是用Mini-Batch,但是采样一张图片上的所有像素,而PixelNet采样一张图片上的一少部分像素,但是一个batch中的图片数量更多。

与之前的方法如hypercolumns和FCN相比,PixelNet下采样超列特征没有任何上采样层,而下采样允许采用非线性MLP,这也就提高了结构的普适性。非线性MLP的好处还在于:如果采用线性MLP,会使得收敛变慢,而且需要normalization/scaling,以及对于不同任务都需要小心地手动调试(hand-tuning)。

实验:

这里主要看语义分割方面:在PASCAL-Context dataset上做测试。

与FNC比较:

分割效果直观与FCN-8s对比

可以看出,在全局结构以及细节上都比FCN要好。

对于MLP的fc层数目、fc层维度的实验结果如下:

对于Mini-batch样本数目的实验结果如下:

加上fc7层的分析以及多尺寸分析的实验结果如下:

以下是与FCN效率的比较:

你可能感兴趣的:(PixelNet:Towards a General Pixel-Level Architecture)