语义分割实现地表建筑物识别3 语义分割模型发展

语义分割实现地表建筑物识别3 语义分割模型发展

  • 理解语义分割模型构造过程,特别是最终概率值的输出
  • 理解FCN的网络模型结构和训练过程

FCN

原理

原理是图像经过卷积神经网络得到特征图,再对特征图经过反卷积层进行上采样,保留原图像的空间位置信息,最后对上采样特征图进行逐像素分类。

网络结构

  • 输入:任意尺寸彩色图像
  • 输出:与输入同尺寸,21类(20类目标+背景)

卷积运算的参数是在训练FCN模型的过程中通过BP算法学习得到的。
普通的池化会缩小图片尺寸,如VGG16经过5次池化后图片被缩小了32倍。为了得到和原图等大小的分割图,我们需要上采样、反卷积。
反卷积的前向和反向传播,只用颠倒卷积的前后向传播即可。

将不同池化层的结果进行上采样,然后结合这些结果优化输出,分为FCN-32s,FCN-16s,FCN-8s三种。
有意思

  • 卷积层提取特征图
  • FCN-32s指的是conv7经过32x unsampled prediction变回32x32的过程。反卷积后的大小为输入图像的32倍。假设这个卷积核大小为32,需要通过反馈训练32x32个权重即可让图像实现end to end,完成一个32s的unsample。
  • FCN-16s步骤包括2x conv7和16x unsampled prediction。其中2x conv7步骤是将conv7进行一个2x conv7从而增加一个卷积层,然后将pool4与2x conv7进行拼接;对拼接结果进行16x unsampled prediction,增加一个卷积层,卷积后的大小为输入图像的16倍,完成一个16s的unsample。
  • FCN-8s步骤包括4x conv7、2x pool4和8x unsampled prediction。其中4x conv7步骤是conv7经过一次4x unsample变成4x conv7(4x4);2x pool4步骤是pool4经过一次2x unsample变成2x pool4(4x4);接下来将4x conv7、2x pool4、pool3拼接;对拼接结果进行8x unsampled prediction,增加一个卷积层,卷积后的大小为pool3的8倍,完成一个8s的unsample。
  • 结合上述的FCN全卷积与unsample,在unsample最后加上softmax,就可以对不同类别的大小概率进行估计,实现end to end分类。

SegNet

核心组件是encoder网络 + decoder网络 + 一个像素级别的分类网络。

  • encoder网络:其结构与VGG16网络的前13层卷积层相似
  • decoder网络:将由encoder得到的低分辨率的feature maps进行映射得到与输入图像featuremap相同的分辨率,进而进行像素级别的分类。
  • decoder进行上采样的方式,直接利用与之对应的encoder阶段中进行max-pooling时的polling index进行非线性上采样。得到的feature maps是非常稀疏的,因此,需要进一步选择合适的卷积核得到dense featuremaps
  • softmax输出不同分类的最大值,得到最终分割图

Unet

核心组件是收缩路径和对称的扩张路径。其中收缩路径获取上下文信息,扩张路径精确定位分割边界。

  • Encoder:由两个3x3的卷积层(RELU)+2x2的max pooling层反复组成,每经过一次下采样,通道数翻倍;
  • Decoder:由一个2x2的上采样卷积层+拼接+2个3x3的卷积层反复构成
  • 1x1卷积将通道数变成期望的类别数。

模型优点:
以图像切块进行训练,从而增加了训练数据量,因此网络在少量样本的情况下能获得不变性和鲁棒性。

import segmentation_models_pytorch as smp

model = smp.Unet(
    encoder_name="resnet34",  # choose encoder, 
    encoder_weights="imagenet",  # use imagenet pre-trained weights for encoder initialization
    in_channels=1, # model input channels (1 for gray-scale images,3 for RGB,etc)
    classes=3,  # model output channels (number of classes in your dataset)
)

DeepLab

针对全卷积对称语义分割模型分割结果粗糙的问题,新的扩张卷积语义分割模型考虑了像素与像素间的空间一致性关系,可以在不增加数量的情况下增加感受野。

  • Deeplabv1是由深度卷积网络和概率图模型级联而成的语义分割模型。由于深度卷积网络
    1. 在重复最大池化和下采样的过程中丢失很多的细节信息,所以采用扩张卷积算法增加感受野以获得更多上下文信息。考虑到深度卷积网络
    2. 在图像标记任务中空间不敏感性限制了它的定位精度,采用了完全连接条件随机场来提高模型捕获细节的能力
  • Deeplabv2语义分割模型增加了ASPP结构,利用多个不同采样率的扩增卷积提取特征,再将特征融合以捕获不同大小的上下文信息。
  • Deeplabv3语义分割模型,在ASPP中加入了全局平均池化,同时在平行扩张卷积后添加批量归一化,有效地捕获了全局语义信息。
  • DeeplabV3+ 语义分割模型在Deeplabv3的基础上增加了编-解码模块和Xception主干网络,
    1. 增加编解码模块主要是为了恢复原始的像素信息,使得分割的细节信息能够更好的保留,同时编码丰富的上下文信息。
    2. Xception是为了采用深度卷积进一步提高算法的精度和速度。在该结构中,先对输入进行1x1卷积,之后将通道分组,分别使用不同的3x3卷积提取特征,最后将各组结果串联在一起作为输出。

RefineLab

RefineNet网络由独立的RefineNet模块组成,每个RefineNet模块由剩余卷积单元、多分辨率融合和链剩余池。其中:

  • 剩余卷积单元由一个自适应块组成卷积集,微调预训练的ResNet权重以应对分割问题。
  • 多分辨率融合层融合不同的激活物使用卷积上采样层来创建更高的分辨率地图。
  • 链剩余池层池中使用多种大小的内核用于从较大的图像区域捕获背景上下文。

模型优点:

  • 这种网络可以使用各个层级的features,使得语义分割更为精准。
  • 端对端的训练更加容易和高效:RefineNet中所有部分都利用resdiual connections(identity mappings),使得梯度更容易短向或者长向前传。
  • chained residual pooling模块可以从一个大的图像区域捕捉背景上下文信息。

PSPNet

pass

基于全卷积的GAN语义分割模型

pass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值