Semantic_segmentation_overview

语义分割是近年来出现的基本问题之一,因此成为计算机视觉和机器学习领域的热门话题。

通用语义分割图像集
  • PASCAL Visual Object Classes (VOC)
  • Common Objects in Context (COCO)
    With 200K labelled images, 1.5 million object instances, and 80
    object categories
  • Other General Purpose Semantic Segmentation Image Sets
  • YouTube-Objects
  • SIFT-flow
    Urban Street Semantic Segmentation Image Sets
  • Cityscapes
  • CamVid
  • KITTI
  • SYNTHIA

    Before Fully Convolutional Networks

    Pre-Deep Learning Approaches

    传统图像分割与语义分割的区别在于语义特征在图像分割过程中的应用。传统的图像分割方法,如阈值、聚类和区域增长等(有关传统图像分割技术的调查,请参阅[29])使用手工制作的低级特征(即在图像中定位物体的边界。因此,在需要图像语义信息进行像素级分割的情况下,例如在相似物体相互遮挡的情况下,这些方法是必要的。
    关于深度CNNs流行之前的语义分割工作,有多种方法[30,31,
    32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42]使用的图形模型,如马尔可夫随机域(MRF),条件
    随机场(CRF)或基于森林(有时被称为“整体”)的方法,以便在像素级找到场景标签。其主要思想是通过观察相邻像素之间的依赖关系来找到一个推论。换句话说,这些方法将图像的语义建模为相邻像素之间的一种“先验”信息。
    另一组研究,有时被称为“分层模型”[44,45,46],使用一个预先训练的和独立的对象探测器的组合,以便从图像中提取语义信息。由于单个的对象检测器未能正确地对区域进行分类,或者由于这些方法受到“手工选择”的检测器库所提供的对象类的有限数量的限制,因此与当今最先进的方法相比,它们的性能相对较低。
    虽然上述的前深度学习时代的方法不再是首选的分割方法,一些图形模型,特别是CRFs,目前正在使用的最先进的方法作为后处理(细化)层,目的是提高语义分割的性能,具体细节将在下一节中讨论

    Refinement Methods

    深度神经网络具有很强的局部特征提取能力。然而,它们缺乏利用全局上下文信息的能力,因此无法对相邻像素预测之间的交互进行建模。另一方面,前深度学习时代流行的分割方法,图形模型,非常适合这类任务。这就是为什么它们目前被用作许多深度基于cnn的语义分割架构的细化层。
    正如在前一节中提到的,使用图形模型进行分割背后的思想是通过观察相邻像素之间的低层次关系来寻找一个推论。在图2中,可以看到使用基于图形模型的细分对分割结果的影响。分类器(见图2.b)不能正确分割不同类标签相邻的像素。在本例中,我们使用基于crf的细分[42]来改进像素级的分割结果。基于crf的方法被广泛用于深度语义分割方法的细化
    CRFs[50]是一种有区别的无向概率图形模型。它们被用来对观测之间已知的关系进行编码,并构建一致的解释。它们用作细化层的原因是,与不考虑相邻像素相似性的离散分类器不同,CRF可以利用这些信息。与其他图形化模型(如隐马尔科夫模型)相比,CRFs的主要优点是它们的条件性质和避免标签偏差[50]问题的能力。尽管有相当数量的方法(见表1)使用CRFs进行细化,但这些模型在相对较新的方法中开始变得不受欢迎,因为它们的速度非常慢,而且非常难以优化。

    Early Deep Learning Approaches

    FCN在2014年出现,使用tanh 相较于proposal of a ReLU layer 很难去区分,因此,训练这样的系统被认为是不适合计算的,甚至对大规模数据是不可行的。然而,第一个成熟的方法只是简单地尝试转换分类网络,如AlexNet和VGG通过微调全连接层来细分网络。他们在训练阶段遭受了过度拟合和完全连接层的时间限制。此外,使用的CNNs不够深,无法创建抽象的特征,这与图像的语义有关。在一些早期的深度学习研究中,研究人员拒绝使用完全连接的层来进行决策,而是使用不同的结构,如周期性的架构[57]或使用来自一个单独计算的分段家族的标记。通过提出全连接层FCN这样的结构的必要性的第一个迹象,不出所料,它们被FCN取代。
    由于他们的分割结果被认为是不令人满意的,这些研究通常使用一个细化的过程,要么作为一个后处理层[52,53,54,56],或作为一个替代架构,以完全连接的决策层
    Refinement methods varied such as Markov random fields,nearest neighbour-based approach,使用校准层[54],使用超级像素[55,56],或普通CNNs的递归网络。细化层仍然被后fcn方法所使用,其目的是提高类交叉区域的像素级标记性能。
    tips: 4FCN [11] ] was officially published in 2017. However the same group first shared the idea online as pre-printed literature in 014 [51].

Fully Convolutional Networks for Semantic Segmentation

1
FCN(2017) 提出了从CNNs (DCNN)中拆除全连通层的设想.‘FCN-32s’, ‘FCN16s’, and ‘FCN8s’ all transfer-learnt using the VGG architecture
FCN架构在很多方面都被认为是革命性的,

  1. FCN不包括全连接层
  2. 该结构允许为任何分辨率的图像生成分割图。使用反卷积层,可以将粗深卷积层输出提升到任意分辨率的稠密像素。
  3. 提出了DCNNs的skip架构。跳过架构(或连接)在DCNNs中提供不相邻层之间的链接。仅仅通过对未连接层的输出进行求和或连接,这些连接就可以使信息流动,否则,由于体系结构的选择(如最大池化层或辍学),这些信息就会丢失。最常见的做法是在max-pooling层之前使用skip连接,它通过选择特定区域的最大值对层输出进行采样。池化层有助于架构创建特性层次,但也会导致局部信息的丢失,而这些局部信息对于语义分割是有价值的,特别是在对象边界。跳过连接通过绕过池化层来保存这些信息并将其转发到更深层。实际上,在[11]中使用跳转连接被认为是相当原始的。“FCN-8s”和“FCN-16s”网络在不同的层包含这些跳过连接。对于相同的架构,即“FCN-4s”和“更密集的跳过连接”。“FCN-2s”也被用于各种应用[61,62]。这一思想最终演变为用于语义分割的编码器-解码器结构[63,27],下文将对此进行介绍。

    Post-FCN Approaches

    drawbacks of FCNs: 特性层次结构中标签本地化的低效丢失、无法处理全局上下文知识以及缺乏多尺度处理机制。我们还讨论了语义分割上下文中的尺度不变性,最后讨论了基于对象检测的方法,这是一种新的解决方案,旨在解决同时检测对象实例的语义分割问题。

    Techniques for Fine-grained Localisation

    根据定义,语义分割是一个密集的过程,因此它需要在像素级对类标签进行细粒度的本地化。例如,在机器人手术中,语义分割中的像素错误可能会导致生存或死亡的情况。层次特性创建的池(即。,最大池)层可以部分失去本地化。此外,由于他们FCNs完全是卷积性质的,它本身并不具备在图像中对全局上下文信息建模的能力,这在类标签本地化方面也非常有效。因此,这两个问题在本质上和本质上是相互交织的下面我们将讨论旨在克服这些问题和提供更好的本地化的不同方法类的标签。
    Encoder-Decoder Architecture
    ed
    编译码器, 类似U-net,具有开创新的研究。编码器使用池化层逐渐缩减输入数据的空间维度,而解码器通过反卷积层等网络层逐步恢复目标的细节和相应的空间维度。从编码器到解码器之间,通常存在直接的信息连接,来帮助解码器更好地恢复目标细节。
    U-Net,Seg-Net 都是非常出名的网络。在这种结构中,由编码器部分相邻的低分辨率特征映射提供的强相关语义信息必须经过额外的中间层才能到达相同的译码层。这通常会导致一定程度的信息衰减。
    然而,U-Net架构已经被证明对于不同应用的分割非常有用,例如卫星图像。
    Spatial Pyramid Pooling(空间金字塔池化)
    spp
    Beyond bags of features: Spatial pyramid matching for recognizing natural scene categories. 在2006年首次被提出, 为的是解决单词袋系统失去了特征之间的空间关系。首次应用在深度学习是2015年的SPPNet这篇文章。无论输入大小如何,都可以在空间金字塔汇聚网络中创建深度特征的空间金字塔表示。SPP-Net最重要的贡献是它允许输入不同大小的数据。不同大小的图像输入到卷积层中,不可避免地会产生不同大小的特征图。然而,如果池化层刚好在决策层之前,具有与输入大小成比例的步长值,则创建特征映射这一层将被固定。CNN中的SPP层构建了不同层次特征之间的关系。因此,它与ED结构中的跳过连接非常相似,后者也允许特性层次结构之间的信息流。:SPP层用于语义分割最常见的用法是在[67]中提出的,比如SPP层被附加到最后一个卷积层,并反馈给像素级分类器。
    Feature Concatenation(特征连接)
    这个想法是基于融合从不同来源提取的特征。
    Dilated Convolution(扩张卷积,空洞卷积)
    dc
    扩展卷积的思想实际上很简单:使用连续的卷积滤波器,一个有效的接收域只能随层线性增长;然而,如果使用在滤波器中有间隙的膨胀卷积(见图4.c),有效接受域将增长得更快[70]。因此,在没有池或子采样的情况下,创建了卷积层的矩形棱镜。扩张卷积是一种非常有效和强大的方法来详细保存特征图分辨率。缺点在于对GPU存储和计算的要求更高,因为特征图分辨率不会在特征层次结构中缩小。
    Conditional Random Fields(条件随机场)
    cnn自然缺乏特别的‘关注’类交叉区域的机制。在这些区域周围,通过观察CNN层的相邻feature maps之间的低层关系,使用图形化模型进行推理。因此,图形模型(主要是crf)被用作深度语义分割架构的细化层。与在[72]中一样,CRFs将低级交互与来自多类交互的输出连接起来,并以这种方式构建全局上下文知识。
    CRFs作为一种细化层,目前存在多种利用CRFs对CNNs进行深度处理的方法,如卷积CRFs[47]、稠密CRF[42]、CRN-as-RNN等[73]。尽管CRFs有助于构建上下文知识,从而在类标签中更好地本地化,表1显示了在“CRF模型”选项卡下分类的CRFs,以便将它们与实际的CNN架构扩展区分开。
    Recurrent Approaches
    递归神经网络处理时间信息的能力有助于提高分割精度。例如,[74]使用ConvLSTM层来改进图像序列中的语义分割结果。
    然而,也有一些方法在静态图像上使用循环结构。在[13]中,研究人员利用LSTMchains来缠绕多个尺度,从而得到像素级的分割改进。也有将CNNs和RNNs融合的混合方法。这方面的一个很好的例子是所谓的ReSeg模型[75],其中,输入图像被馈送到一个类似于vgg的CNN编码器,然后通过递归层(即ReNet架构)进行处理,以便更好地定位像素标签。据我们所知,语义分割不存在单纯的递归结构,这主要是因为语义分割需要一个初步的基于cnn的特征编码方案。
    目前,有一种特定类型的RNN,即“注意模块”,有增长的趋势。在这些模块中,RNN在技术上融合了注意力[76],在预测输出序列的某个部分时,将注意力集中在输入的某个区域。因此,它们也被用于语义分割[77,78,79]。

Scale-Invariance(尺度变化)

根据定义,尺度不变性是指一个方法处理输入时不依赖于相对尺度的能力。或图像分辨率。尽管它对于某些应用程序来说是极其重要的,但是这种能力通常被忽视,或者与方法包含多尺度信息的能力相混淆。一种方法可以使用多尺度信息来提高其像素级分割能力,但仍然依赖于尺度或分辨率。

文献: A SURVEY ON DEEP LEARNING-BASED ARCHITECTURES FOR SEMANTIC SEGMENTATION ON 2D IMAGES

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Semantic SLAM是一种基于语义分割技术的同时定位与建图方法。它结合了ORB-SLAM2和八叉树地图,并通过使用语义分割技术来增强SLAM系统的感知能力。Semantic SLAM的GitHub地址是https://github.com/floatlazer/semantic_slam 。 在开始使用semantic_slam包之前,您需要先安装一些依赖项。根据引用提供的信息,安装过程中可能会出现一个错误,提示无法解析rosdep定义。这意味着可能需要检查您的系统中是否安装了catkin,因为semantic_slam依赖于catkin。确保您已正确安装catkin后,您可以继续安装semantic_slam包。 安装完依赖项后,您可以启动semantic_mapping.launch文件来启动Semantic SLAM系统。根据引用提供的信息,您可以使用以下命令启动launch文件:roslaunch semantic_slam semantic_mapping.launch。 启动后,semantic_mapping.launch文件将开始执行Semantic SLAM算法,同时定位与建图,并将语义信息与地图进行关联,从而提高系统的感知能力。 总结起来,Semantic SLAM是一种基于语义分割的同时定位与建图方法,它结合了ORB-SLAM2和八叉树地图。您可以从GitHub地址https://github.com/floatlazer/semantic_slam获取该方法的实现代码。在使用semantic_slam包之前,您需要安装catkin作为依赖项,并确保已成功安装并配置相关的依赖项后,您可以使用roslaunch命令启动semantic_mapping.launch文件来启动Semantic SLAM系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值