语意分割网络笔记

来源:互联网 发布:淘宝达人申请 编辑:程序博客网 时间:2024/06/01 09:41

语意分割最初流行的深度学习方法是图像块分类,利用像素周围的图像块对每一个像素进行独立的分类。使用图像块分类的主要原因是分类网络通常是全连接层,要求固定尺寸的图像。使用卷积神经网络进行语以分割存在的另一个大问题是尺化层不仅扩大感受野,聚合语境,而且造成位置信息的丢失。

编码-解码结构:编码器逐渐减少尺化层的空间维度,解码器逐步修复物体的细节和空间维度。编码器与解码器之间通常存在快捷连接,帮助解码器更好地修复目标的细节。

FCN与CNN

在一般的卷积神经网络,一般结构就是前几层是卷积层加尺化层,最后跟2-3层的全连接层。最后一层输出1000*1向量的全连接层,因为一共有1000类,向量中的每一维都代表当前类的概率。

在全卷积神经网络,没有全连接层,取而代之的是卷积层,最后一层的输出的是1000个二维数组,其中每一个数组可以可视化一张图像,图像中每一个像素点的灰度值都是当前像素点属于该类的概率。

FCN可以接受任意大小的输入图像,利用反卷积对最后一层的feature map 进行上采样,使它恢复到输入图像相同的尺寸,从而对每一个像素点进行预测,同时保留原始输入图像中空间信息,最后在上采样的特征图上进行逐像素分类。

 FCN语义分割

定位和分类:在前面几层,分辨率比较高,像素点的定位比较准确,后面几层卷积层,分辨率比较低,像素点比较低,像素点的分类比较准确,所以为了准确的分割,需要把前面高分辨率的特征和后面的低分辨特征结合起来。

conv+pool 5次操作,图像缩小为1/32,然后把CNN操作中的全连接变成卷积操作conv6,conv7,图像的feature map数量改变但是图像大小依然是原图的1/32,然后进行32倍的上采样可以得到原图大小:FCN-32s。在这个基础上fine-tune conv7 2倍上采样+pool4 进行16倍的上采样的到FCN-16s。

FCN的优点,能够end-to-end, pixels-to-pixels,而且相比于传统的基于cnn做分割的网络更加高效,因为避免了由于使用像素块而带来的重复存储和计算卷积的问题

FCN的缺点也很明显,首先是训练比较麻烦,需要训练三次才能够得到FCN-8s,而且得到的结果还是不精细,对图像的细节不够敏感,这是因为在进行decode,也就是恢复原图像大小的过程时,输入上采样层的label map太稀疏,而且上采样过程就是一个简单的deconvolution. 
其次是对各个像素进行分类,没有考虑到像素之间的关系.忽略了在通常的基于像素分类的分割方法中使用的空间规整步骤,缺乏空间一致性

  • 将端到端的卷积网络推广到语义分割中;
  • 重新将预训练好的Imagenet网络用于分割问题中;
  • 使用反卷积层进行上采样;
  • 提出了跳跃连接来改善上采样的粗糙程度

U-Net;下降部分conv+maxpool, 上升部分conv_transpose+conv

和FCN相比,结构上比较大改动是在上采样阶段,上采样层也包括很多层的特征

1*1卷积的作用:

1.降维:一张500*500且厚度为100的图片在20个filter上做1*1的卷积,那么结果的大小为500*500*20

2.加入非线性。卷积层之后经过激励层。1*1的卷积在前一层的学习表示上添加非线性激励,提升网络的表达能力。

SegNet

SegNet和FCN最大的不同就在于decoder的upsampling ,上图结构中,前面encoder每一个pooling indices保存,并且传递到后面对称的upsampling。进行upsamping过程:

将最大池化指数转移至解码器中,改善了分割分辨率,

在FCN网络中,通过上卷积层和一些跳跃连接产生了粗糙的分割图,为了提升效果而引入了更多的跳跃连接。

然而,FCN网络仅仅复制了编码器特征,而Segnet网络复制了最大池化指数。这使得在内存使用上,SegNet比FCN更为高效。

原创粉丝点击