当前位置:   article > 正文

语义分割经典论文泛泛泛读_语义分割顶刊论文

语义分割顶刊论文

因为现在做的任务需要用到语义分割,所以老师给了我如下十二篇语义分割方面的经典论文。为了省时高效,我只做了泛读,只了解精神不深究细节。

Efficient inference in fully connected CRFs with gaussian edge potentials-nips-2011

Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs-2015

Fully Convolutional Networks for Semantic Segmentation 2015CVPR

SegNet —— A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation-2015

Pyramid Scene Parsing Network-2016

Multi-Scale Context Aggregation by Dilated Convolutions-2016

DeepLab:Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs-2016

RefineNet_ Multi-Path Refinement Networks for High-Resolution Semantic Segmentation_CVPR_2017_paper

Rethinking Atrous Convolution for Semantic Image Segmentation-2017

Large Kernel Matters — Improve Semantic Segmentation by Global Convolutional Network_CVPR_2017_paper

ExFuse_ Enhancing Feature Fusion for Semantic Segmentation-arxiv-2018

Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation-2018-arxvi


Efficient inference in fully connected CRFs with gaussian edge potentials-nips-2011

CRFs:通过每一个像素点四周的一部分点来计算该像素点的语义。计算的方法采用CRF进行预测,计算的空间范围根据高斯核中的两个标准差原则确定。

CRF=条件随机场:每个位置的值只与相邻位置相关,且只有两个变量( P(Y|X)为该点在X下取Y取某一值的概率),在知道P的情况下,对于每个X都能求出Y的各个取值的概率

fully connected CRFs=全连接条件随机场:在本文语境下,将所有像素点都视为是“相邻的”

方法:对每一个像素点使用建立二元势函数的全连接CRF,求出CRF中P的近似解Q,通过最小化Q的KL-散度迭代更新Q直至收敛(训练过程),KL-散度是什么暂且不论,先把它当作一个黑盒loss来看。

自我救赎:因为对每个像素点都要建立CRF,而对每个CRF训练一个Q,这少不了像素点之间的两两比较(因为要计算loss,而CRF中认为每个像素都会被除自己外的所有像素影响到)。因此对于n个输入像素点,算法的时间复杂度是n的平方级的,又因为因为一张图片的像素点总是数以万计,所以该算法开销极大。因此用高维滤波来降低算法的时间复杂度。(可能就是因为算力的限制导致这个算法一直没有被实现,可见降低时间成本的必要)。

我们可以将跟每个像素计算Q之差的过程看作一个卷积操作,即“将消息传递这一步表达为一个在特种空间中使用高斯核的卷积过程”。而这个操作与卷积唯一的不同在于,卷积操作在最后需要进行相加,但我们这里不将原本的像素点算在其中,因此需要在卷积之后减去这个点的Q值。

为什么用高斯核:高斯核一开始是用于滤波操作的一类卷积核,它会根据高斯分布,以被计算区域的中心像素点为原点,将周围像素点代入高斯公式再求和。一般情况下不可能把所有像素点都纳入高斯核的计算,而我们也知道高斯函数的值随着离中心的距离的增加而变小。而在本文讨论的问题中,样本间的距离与标准差成正比,与高斯核的思想不谋而合。因此将超过两个标准差的值设为零,也就是两个标准差范围之内的空间就是卷积核所用空间,即卷积核的大小是固定的。这样模拟出来的计算,相当于“下采样-计算-上采样”的操作,省略了一部分的计算,将原本需要做n次的Q计算缩减到只在两个标准差大小的卷积核内做Q运算。从而使原先的n平方级别的复杂度变成C*n级,也就是O(n)的复杂度。

?:不知道“两个标准差”这里的标准差是咋算出来的

Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs-2015

DeepLab=DCNN+CRFs

传统cnn方法:将像素点周围的一块图片作为cnn输入,得到该像素的语义分割结果。缺点是1.感受野受选取图块大小限制,难以照顾全局。(空间不敏感)2.池化层有助于增大感受野,但是会丢失信息,这对追求像素精度的语义分割很不利。

对1,改用空洞卷积小步长进行特征提取,损失函数采用原图(下采样后使得原图与输出相同尺寸)和输出每个像素点的交叉熵总和。对2,在网络最后增加CRFs优化。

Fully Convolutional Networks for Semantic Segmentation 2015CVPR

FCN架构:将传统卷积网络最后的全连接层改为全卷积层(因为语义分割想要二维的结果,全卷积层的输出是二维的,全连接层则是一维的)。然后通过反卷积进行上采样操作,得到最终的结果(尺寸跟原图一样,实现像素级分类)。

传统dcnn方法进行语义分割有两大缺陷(与DeepLab提到的一样)对于1,采用将全连接层改为全卷积层,将整张图作为输入。对于2,用反卷积来进行上采样操作。最后得到n维热力图,取每个像素点在各维中最大值来得到结果。

其实也是Encoder-Decoder架构了

将RNN附加到FCN上并进行微调可以改善FCN的性能(SegNet文章提到的)

SegNet —— A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation-2015

SegNet:一种用于图像分割的深度卷积的Encoder-Decoder架构

用了预训练的VGG16中的卷积层(除全连接层外的前13层)全连接层直接丢弃(而不是换成全卷积,减少了大量参数)一个编码器(卷积层)配一个解码器(max-pooling indices:上采样时,将值放回原来的位置,其余置0。因此无需训练,省时省事,还能提升边缘刻画度。但要记住原来的位置),在最后一层之后加上softmax层来判断标签。

Pyramid Scene Parsing Network-2016

解决pooling带来的模糊问题

PsPNet:通过预训练ResNet101结合空洞卷积提取特征图(是原图1/8大小),送入金字塔池化得到多尺度信息,最终通过一个卷积层得到最终输出。

金字塔池化提取多尺度信息:针对感受野问题,也就是解决cnn没有获取全局信息的问题。全局平均池化可能导致失去空间关系并导致模糊。对输入分别进行不同尺度的池化并降维(1x1卷积)再通过双线性插值上采样到原图大小,与输入concat到一起。

Multi-Scale Context Aggregation by Dilated Convolutions-2016

解决pooling带来的模糊问题

1.VGG16前11层(去除后两层池化和三层全连接)

2.空洞卷积(正式提出)

3.对输入的特征图进行不同的扩张因子的空洞卷积来得到多尺度的信息(ASPP)

DeepLab:Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs-2016

解决特征图分辨率低(还是pooling带来的模糊问题)、目标尺度多样性(用多尺度的空洞卷积解决,形成idea闭环)、分割的精确性差(Hello CRFs,可见CRFs虽然是11年提出的手动方法,但是很管用)

#终于有新花样了

#完事之后发现就是上一篇+CRFs

DeepLabv2=DeepLab+ASPP

RefineNet_ Multi-Path Refinement Networks for High-Resolution Semantic Segmentation_CVPR_2017_paper

“论文提出一种多阶段的提炼网络(RefineNet),使用long-range 残差连接,能够有效的将下采样中缺失的信息融合进来,从而产生高分辨率的预测图像。用这种方法可以将粗糙的高层语义特征和细粒度的底层特征进行融合。”

解决pooling带来的模糊问题和感受野的问题

已有的方法中,反卷积恢复效果差、空洞卷积开销大、利用中间层信息则空间信息不足。

ResNet中的特征图融合到一起,接softmax,再接双线性插值输出

融合时先过残差网络的单元结构(RCU)再将所有尺寸的特征图通过一个卷积层(相通卷积核)化道最小的特征图的尺寸,上采样,加权相加。相加之后经过Chained residual pooling(链式残差池化),主要获得不同尺度下(上下文)背景信息。最后输出之前再过一遍RCU。

Rethinking Atrous Convolution for Semantic Image Segmentation-2017

DeepLabv3,提升了性能,重新思考了空洞卷积之于语义分割是怎么一回事。回过头来可以好好看看Deeplab是怎么通过小改动进化的。

Large Kernel Matters — Improve Semantic Segmentation by Global Convolutional Network_CVPR_2017_paper

GCN:在RefineNet的基础上使用大的卷积核和相应的分离卷积

虽然堆叠多个小的卷积核来代替大的卷积核有利于减少参数数量,且理论上两者有相同的感受野,但是堆叠小核对边缘的计算要比大核差。因此如果物体占据或贴近边缘,堆叠小核的办法实际的感受野则不足以覆盖物体。所以本文认为应使用大的卷积核。

大的卷积核的参数多,论文使用了对称的分离卷积来应对庞大的参数和巨额的计算量。即将卷积的矩阵相乘操作改为分别的行向量相乘和列向量相乘,然后相加。此外还增加了一个类似残差网络中的RCU的步骤来增加边缘信息。

ExFuse_ Enhancing Feature Fusion for Semantic Segmentation-arxiv-2018

论文认为,简单地将高低维特征融合(加权相加)效率比较低,因为语义层次和空间分辨率关联性不是很大。需要给低维特征引入更多语义信息或者给高维特征嵌入更多空间信息。

先验知识:越接近loss,特征图会编码更多的语义信息

给低维特征引入更多语义信息:

1.网络结构重排,对各级低残差单元个数重排,使排布更均匀(重排之后进行了预训练,分类性能无明显变化)

2.深度语义监督,训练时对低维特征提高监督,训练完之后去掉。

3.语义嵌入支路,高层上采样之后和低层融合(相乘)这之后跑GCN

高维特征嵌入更多空间信息

1.通道分辨率嵌入,假设池化时将池化核内的像素均分给各个通道,则通道分辨率嵌入就是这个操作的逆操作。

2.稠密领域预测,输出时,每隔几个通道增加一个通道,其值由前几个通道预测而得到,从而增加空间信息。

Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation-2018-arxvi

DeepLabv3+

提出了新的编码解码结构(将特征图过ASPP,跟从编码过程中的早期特征图(跟ASPP的尺寸一样,进行1x1卷积)融合再上采样、输出一条龙)、将Xception融入到DeepLab中(骨干网络不再用ResNet)

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号