参考:http://www.sohu.com/a/270896638_633698

(1) 语义分割的概念

简单地说,分割就是抠图。语义分割,就是按图像中物体表达的含义进行抠图。

图像分割的历史:所有的发展都是漫长的技术积累,我们简单总结了图像分割的几个时期:

  • 2000年之前,数字图像处理时我们采用方法基于几类:阈值分割、区域分割、边缘分割、纹理特征、聚类等。
  • 2000年到2010年期间, 主要方法有四类:基于图论、聚类、分类以及聚类和分类结合。
  • 2010年至今,神经网络模型的崛起和深度学习的发展

(2) 端对端的概念:

    解决问题时,输入问题的原始数据,然后模型输出所需结果,中间过程我们不加以考虑,这应该就是端对端最通俗的解释。

  • 端对端的好处:通过缩减人工预处理和后续处理,尽可能使模型从原始输入到最终输出,给模型更多可以根据数据自动调节的空间,增加模型的整体契合度。
  • 端对端的坏处:通过大量模型的组合,增加了模型复杂度,降低了模型可解释性。

(3) 基于深度学习的语义分割的发展历程:

  1. 2014年 FCN 模型,主要贡献为在语义分割问题中推广使用端对端卷积神经网络,使用反卷积进行上采样
  2. 2015年 U-net 模型,构建了一套完整 的编码-解码器
  3. 2015年 SegNet 模型,将最大池化转换为解码器来提高分辨率
  4. 2015年 Dilated Convolutions(空洞卷积),更广范围内提高了内容的聚合并不降低分辨率
  5. 2016年 DeepLab v1&v2
  6. 2016年 RefineNet 使用残差连接,降低了内存使用量,提高了模块间的特征融合
  7. 2016年 PSPNet 模型
  8. 2017年 Large Kernel Matters
  9. 2017年 DeepLab 

   以上几种模型可以按照语义分割模型的独有方法进行分类,专门池化(PSPNet、DeepLab),编码器-解码器架构(U-net SegNet、E-Net),多尺度处理(DeepLab)、条件随机场(CRFRNN)、空洞卷积(DiatedNet、DeepLab)和跳跃连接(FCN)。

(4)FCN

全卷积神经网络主要使用了三种技术:

  1. 卷积化(Convolutional)
  2. 上采样(Upsample)
  3. 跳跃结构(Skip Layer)

简单的是就是将上述过程最后的 Fully Connected 换成了卷积,直接输出目标物体所属的像素范围

           语义分割

  • 卷积化

FCN 将传统 CNN 中的全连接层转化成卷积层,对应 CNN 网络 FCN 把最后三层全连接层转换成为三层卷积层(4096,4096,1000)。

虽然通过上面两个图观察,卷积核全连接数值没有变化,但是卷积核全连接概念不一样,所以表达的含义就截然不同。

我们不禁想问,将全连接层换成卷积有什么好处呢?

这里我们要理解一句比较专业的话:如果卷积核的 kernel_size 和输入 feature maps 的 size 一样,那么相当于该卷积核计算了全部 feature maps 的信息,则相当于是一个 kernel_size∗1 的全连接。

我们怎么去理解这句话?

大概意思为:当我们输入的图片大小和卷积核大小一致时,其实等价于建立全连接,但是还是有区别。

全连接的结构是固定的,当我们训练完时每个连接都是有权重的。而卷积过程我们其实为训练连接结构,学习了目标和那些像素之间有关系,权重较弱的像素我们可以忽略。

全连接不会学习过滤,会给每个连接分权重并不会修改连接关系。卷积则是会学习有用的关系,没用得到关系它会弱化或者直接 dropout。这样卷积块可以共用一套权重,减少重复计算,还可以降低模型复杂度。

  • 反卷积

          语义分割

a 是输入图像,b 是经过卷积得到的特征图,分辨率明显下降。经过上采样(反卷积)提升分辨率得到同时,还保证了特征所在区域的权重,最后将图片的分辨率提升原图一致后,权重高的区域则为目标所在区域

FCN 模型处理过程也是这样,通过卷积和反卷积我们基本能定位到目标区域,但是,我们会发现模型前期是通过卷积、池化、非线性**函数等作用输出了特征权重图像,经过反卷积等操作输出的图像实际是很粗糙的,毕竟丢了很多细节。因此需要找到一种方式填补丢失的细节数据,所以就有了跳跃结构。

 

  • 跳跃结构

我们通过回查学习过的知识,可以帮助理解当前的知识。这里的原理也有些许类似,我们正向过程的卷积、池化等操作都会输出每个层的特征,我们使用反卷积然后和历史中的池化和卷积数据结合,利用它们的数据填补我们缺失的数据

语义分割

总结

  • 卷积化:全连接层(6,7,8)都变成卷积层,适应任意尺寸输入,输出低分辨率的分割图片。
  • 反卷积:低分辨率的图像进行上采样,输出同分辨率的分割图片。
  • 跳层结构:结合上采样和上层卷积池化后数据,修复还原的图像。

FCN 的缺点

  1. 分割的结果不够精细。图像过于模糊或平滑,没有分割出目标图像的细节
  2. 因为模型是基于CNN改进而来,即便是用卷积替换了全连接,但是依然是独立像素进行分类,没有充分考虑像素与像素之间的关系
  3. 也是因为每个模型都有自己的不足,所以才会出现各式各样的模型来解决它们的问题。大家如果能分析出每个模型的缺点,那我们也可以构建新的模型去完善他们的模型,这其实就是创新的过程

相关文章: