语义分割

FCN

FCN对图像像素级的分类,从而解决了语义级别的图像分割问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全连接层+softmax)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样,使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生一个预测,同时保留了原始输入图像中空间信息,最后在上次采样的特征图上进行逐像素分类。

反卷积层

upsampling可以看成是反卷积,卷积运算的参数和CNN的参数一样是在训练FCN模型的过程中通过反向传播算法学习得到的。


反卷积

跳级结构

对CNN的结果做处理,得到了dense prediction,得到的结果比较粗糙,加入更多前层的细节信息,也就是把倒数第几层的输出和最后的输出做一个fusion,实际上是做加和。


跳级结构

FCN的缺点:

  • 得到的结果还不够精细,进行8倍上采样虽然比32倍的效果好很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感。
  • 对各个像素进行分类,没有充分考虑像素与像素之间的关系。忽略了在通常的基于像素分类的分割方法中使用的空间规整步骤,缺乏空间一致性。

U-Net

U-net

1)使用全卷积网络
2)左边的网络是收缩路劲:使用卷积和maxpooling
3)右边的网络是扩张路劲:使用上采样产生的特征图与左侧收缩路径对应层产生的特征图进行concatenate操作。这样做是因为pooling丢失的图像信息和降低图像分辨率且是不可逆的操作,这样做的话就相当于在高分辨率和更抽象特征中做一个折中,因为随着卷积次数增多,提取的特征也更加有效、更加抽象,上采样的图片是经历多次卷积后的图片,肯定是比较高效的抽象的图片,然后把它与左边不怎么抽象更高分辨率的特征图片进行连接。
4)最后再进过两次反卷积操作,生成特征图,再用两个1*1的卷积做分类得到最后的heatmap,然后作为softmax函数的输入,算出概率比较大的softmax类。

Segnet

Segnet

可训练的图像分割引擎,包括一个encoder网络,一个对应的decoder网络,衔接像素级分类层,encoder与VGG16的13层卷积层相同,decoder将低分辨率的编码特征图映射到全分辨率的特征图。使用最大池化层的池化索引进行非线性上采样,上采样过程不需要学习。

你可能感兴趣的:(语义分割)