目录
一、分割网络简介
二、语义分割
1. fcn
2. unet
3. segNet
4. dilatedNet
4. pspNet
5. deepLab
5.1 deepLabV1
5.2 deepLabV2
5.3 deepLabV3
5.3 deepLabV3++
总结
一、分割网络简介
把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。在这个过程中,图像中的每个像素都与一个对象类型相关联。图像分割主要有两种类型:语义分割和实例分割。语义分割不同的实现架构:
(1). 编码器-解码器的构架 (FCN、SegNet、U-Net)
编码器一般采用图像分类预训练得到的网络,采用不断的max pooling和strided convolution有利于获得长范围的语境信息从而得到更好的分类结果。然而在此过程中特征分辨率不断降低,图像细节信息丢失,对于分割任务而言具有巨大的挑战。因此在编码器之后需要利用解码器进行图像分辨率的恢复
(2). 语境模块 (Multi-scale context aggregation、DeepLab V1,V2和CRF-RNN等)
语境模块一般是级联在模型后面,以获得长距离的语境信息。以DenseCRF级联在DeepLab之后理解,DenseCRF能够对于任意长距离内像素之间的关系进行建模,因此改善逐项素分类得到的分割结果。
(3). 金字塔池化方法(PSPNet、DeepLab V2,V3,V3+等)
金字塔池化的方法作用在卷积特征上,能够以任意的尺度得到对应的语境信息。一般采用平行的多尺度空洞卷积(ASPP)或者多区域池化(PSPNet)得到对应尺度语境信息的特征,最后再将其融合形成综合多个尺度语境的特征向量。
本文包括如下网络: fcn, unet, segNet, dilatedNet, pspNet和deepLabs。
二、语义分割
1. fcn
FCN作为图像语义分割的先河,实现像素级别的分类(即end to end,pixel-wise),为后续使用CNN作为基础的图像语义分割模型提供重要基础。
(1). 第一个输出对应FCN-32s,第二输出对应FCN-16s,第三输出对应FCN-8s。
(2). 经过五次pooling后, 图像变为原先的32份之一, 即再经过32倍的upsampled prediction 图片变回到原先32x32的, 即输出FCN-32s。
(3). 原始图像pool4的大小是2x2,pool5的feature map即2*2,进行一个fuse操作,放大16倍就是32x32。这样最后图像大小也变为原来的大小,至此完成了一个16s的upsample。
2. unet
Unet网络非常简单,前半部分作用是特征提取,后半部分是上采样。在一些文献中也把这样的结构叫做编码器-解码器结构。由于此网络整体结构类似于大写的英文字母U,故得名U-net。
(1). U-net采用了完全不同的特征融合方式:拼接 A: 采用将特征在channel维度拼接在一起,形成更厚的特征。 B:FCN式的对应点相加tf.add()和UNet的tf.contract()。
(2). 上采样部分会融合特征提取部分的输出,这样做实际上是将多尺度特征融合在了一起.
A: 以最后一个上采样为例,它的特征既来自第一个卷积block的输出(同尺度特征),也来自上采样的输出。 B: 即采用跳跃 拼接 连接的架构,在每个阶段都允许解码器学习在编码器池化中丢失的相关特征。
3. segNet
(1): SegNet基于FCN,修改VGG-16网络得到的语义分割网络。
(2): 码器部分使用的是VGG16的前13层卷积网络,每个编码器层都对应一个解码器层,最终解码器的输出被送入soft-max分类器以独立的为每个像素产生类概率。
(1). 编码器中的每一个最大池化层的索引都被存储起来,用于之后在解码器中使用那些存储的索引来对相应的特征图进行反池化操作。
(2). Upsamping就是Pooling的逆过程 A:Upsamping使得图片变大2倍。但Pooling之后,每个filter会丢失了3个权重,这些权重是无法复原。 B:反卷积在用于填充缺失的内容,这有助于保持高频信息的完整性。
4. dilatedNet
(1). 常用的分割方式是对图像做卷积再pooling,降低图像分辨率的同时增大感受野。由于图像分割预测是逐像素的输出,所以要将pooling后较小的图像尺寸上采样到原始的图像尺寸进行预测。 A: pooling layer 参数不可学习 B: 内部数据结构丢失, 空间层级化信息丢失 C: 小物体信息无法重建, 有五个下采样32pixel理论上无法重建。 因此:是否真的需要下采样层
(2). 既然网络中加入pooling层会损失信息,降低精度。那么不加pooling层会使感受野变小,学不到全局的特征。如果我们的去掉pooling层、扩大卷积核的话,这样纯粹的扩大卷积核势必导致计算量的增大。
(3). Dilated卷积 A:空洞卷积能够整合多尺度的上下文信息,同时不丧失分辨率,也不需要分析重新放缩的图像。 B:空洞卷积没有pooling或其它下采样。空洞卷积支持感受野指数级的增长,同时还不损失分辨率
(a) 图对应3x3的扩张率为1的卷积,和普通的卷积操作一样
(b) 图对应3x3的扩张率为2的卷积,实际的卷积核还是3x3。也就是对于一个7x7的图像块,只有9个红色的点也就是3x3的卷积核发生卷积操作,其余的点略过, 即权值填写0。 虽然卷积核的大小只有3x3,但是这个卷积的感受野已经增大到了7x7。
(c) 图是4-dilated convolution操作, 能达到15x15的感受野.
空洞卷积适合用于密集预测,因为它能够在不损失分别率的情况下扩大感受野。 A: 感受野跳跃不连续的问题 B: 小尺度物体检测的问题
4. pspNet
CNN中感受野没有充分的获取全局信息 A: 用全局平均池化处理, 会失去空间关系并导致模糊 B: multi-scale feature ensembling 多尺度特征融合。因为在深度神经网络中,higher-layer包含更多的语义信息,较少的位置信息。多个尺度的特征融合有助于提高模型的效果。
(1). 基础层经过预训练的模型和空洞卷积策略提取feature map,提取后的feature map是输入的1/8大小
(2). feature map经过Pyramid Pooling Module得到融合的带有整体信息的feature,在上采样与池化前的feature map相concat
(3). 最后过一个卷积层得到最终输出。 即核心在于后面的金字塔池化,最后再进行concat融合
(4). 金字塔池化模块中不同层级输出不同尺度的特征图,为了保持全局特征的权重,我们在每个金字塔层级后使用1x1的卷积核,当某个层级维数为n时,即可将语境特征的维数降到原始特征的1/n。 D:通过双线性插值直接对低维特征图进行上采样,使其与原始特征图尺度相同。
5. deepLab
5.1 deepLabV1
最大池化层和带有步长的下采样不断重复组合造成的,在下采样的过程中会造成信号的丢失。深度卷积网络会抽取更加抽象的信息(hight-level),而丢失了精确的位置细节信息(low-level),这对需要精确位置细节信息的语义分割等低阶视觉任务来说是个很大的缺陷。
(1).使用空洞卷积(Dilated/Atrous Convolution)来抽取稠密的特征信息,而不是像CNN那样抽取稀疏的信息加强特征的抽象能力。扩大感受野同时不增加参数和计算量。通过设置不同的扩张率,可以捕捉多尺度信息。
(2). 用全连接条件随机场(Fully Connected / Dense CRF)恢复边界位置细节, CRF是一种稠密的全连接,将图像中的每个像素都看成一个节点,并且该像素的位置和颜色都影响这CRF的能量函数,这样就可以使得CRF感知长范围的关联信息
5.2 deepLabV2
物体是以多尺度存在的 下采样操作导致特征分辨率的下降 卷积神经网络的平移不变性降低了定位的准确率。
ASPP解决多尺度问题, 传统多尺度的做法是对原图进行不同尺度的缩放,然后传入到模型中,但这样会消耗大量的计算量。
对比了单独的rate左边结构有不小的提升,多尺度进行dilation conv。
5.3 deepLabV3
第一种方法使用图像金字塔来抽取每个尺度的特征,然后将所有尺度的图像放入CNN中得到不同尺度的分割结果,最后将不同分辨率的分割结果融合得到原始分辨率的分割结果。
第二种方法是编码器-解码器结构,从编码器结构中抽取多尺度信息,并在解码器结构中复原空间分辨率。因此可以在更深的编码器输出中抽取更长范围的信息。
第三种方法是在原有的网络结构的顶部接入额外的结构,用于捕捉长范围信息。一般会使用稠密CRF进行信息抽取。
第四种方法是空间池化金字塔,使用以多个不同大小和感受野的卷积核或池化层扫描输入图像,捕捉其中的多尺度信息。
使用多重网格法加深带有空洞卷积的神经网络
ASPP的改进, 在扩张值接近特征图大小的极端情况下,3x3滤波器不是捕获整个图像上下文,而是退化为简单的1x1滤波器,因为只有中间的滤波器权重是有效的。
A: 在模型的最后一层特征图上接入了全局平均池化。
B: 将得到的图像级特征传给大小为1x1的卷积层(后接BN层)。
C: 随后对其进行双线性插值上采样,恢复到想要的空间分辨率。
5.3 deepLabV3++
提出了一个新型的编码器-解码器模型: 使用DeepLab v3作为高效的编码器,接入一个简单但有效的解码器模块,以精修分割结果,特别是物体的边界信息。
主干网络改为Xception模型,加速模型的计算,减少其计算消耗。
在ASPP和解码器模型中引入深度可分离卷积,构建更快更高效的编码器-解码器模型。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。