• 语义分割综述


     前言

    本文对语义分割相关重要论文进行了简要概述,介绍了它们的主要改进方法和改进效果,并提供了这些论文的下载方式。

    本文来自公众号CV技术指南的技术总结系列

    欢迎关注CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

    语义分割 (Semantic segmentation) 是指将图像中的每个像素链接到类标签的过程。这些标签可能包括人、车、花、家具等。

    我们可以将语义分割视为像素级别的图像分类。例如,在有很多汽车的图像中,分割会将所有对象标记为汽车对象。然而,称为实例分割 (instance segmentation) 的单独类别的模型能够标记对象出现在图像中的单独实例。这种分割在用于计算目标数量的应用中非常有用,例如计算商场中的人流量。

    它的一些主要应用是自动驾驶汽车、人机交互、机器人技术和照片编辑/创意工具。例如,语义分割在自动驾驶汽车和机器人技术中非常重要,因为模型理解其运行环境中的上下文非常重要。

    "Two men riding on a bike in front of a building on the road. And there is a car."

    本文将介绍一些关于构建语义分割模型的最新方法的研究论文,即:

    • Weakly- and Semi-Supervised Learning of a Deep Convolutional Network for Semantic Image Segmentation

    • Fully Convolutional Networks for Semantic Segmentation

    • U-Net: Convolutional Networks for Biomedical Image Segmentation

    • The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation

    • Multi-Scale Context Aggregation by Dilated Convolutions

    • DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs

    • Rethinking Atrous Convolution for Semantic Image Segmentation

    • Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation

    • FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation

    • Improving Semantic Segmentation via Video Propagation and Label Relaxation

    • Gated-SCNN: Gated Shape CNNs for Semantic Segmentation

    文末附以上论文的下载方式

     

    用于语义图像分割的深度卷积网络的弱监督和半监督学习

    论文:Weakly- and Semi-Supervised Learning of a Deep Convolutional Network for Semantic Image Segmentation (ICCV, 2015)

    代码:https: //bitbucket.org/deeplab/deeplab-public

    本文针对在深度卷积神经网络 (CNN) 中处理弱标记数据以及标记良好的数据和未正确标记的数据的组合提出了一种解决方案。

    在论文中,应用了深度 CNN 与全连接条件随机场的组合。

    在 PASCAL VOC 分割基准上,该模型给出了高于 70% 的平均交并比 (mean intersection-over-union, IOU) 分数。这种模型面临的主要挑战之一是它需要在训练期间在像素级别进行注释的图像。

    本文的主要贡献是:

    • 引入可应用于弱监督和半监督设置的边界框或图像级训练的期望最大化算法。

    • 证明结合弱注释和强注释可以提高性能。在合并来自 MS-COCO 数据集和 PASCAL 数据集的注释后,本文作者在 PASCAL VOC 2012 上达到了 73.9% 的 IOU 性能。

    • 证明他们的方法通过合并少量像素级注释图像和大量边界框或图像级注释图像来实现更高的性能。

     

    用于语义分割的全卷积网络

    论文:Fully Convolutional Networks for Semantic Segmentation(PAMI,2016)

    代码:http://fcn.berkeleyvision.org

    本文提出的模型在 PASCAL VOC 2012 上实现了 67.2% 平均 IU 的性能。

    全连接网络获取任意大小的图像并生成相应空间维度的输出。在这个模型中,ILSVRC 分类器被投射到完全连接的网络中,并使用像素级损失和网络内上采样来增强密集预测。然后通过微调完成分割训练。微调是通过在整个网络上的反向传播来完成的。

    U-Net:用于生物医学图像分割的卷积网络

    论文:U-Net: Convolutional Networks for Biomedical Image Segmentation (MICCAI, 2015)

    代码:http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net

    在生物医学图像处理中,为图像中的每个细胞获得一个类别标签是非常重要的。生物医学任务中最大的挑战是难以获取数千张用于训练的图像。

    本文建立在完全卷积层的基础上并对其进行修改以处理一些训练图像并产生更精确的分割。

    由于可用的训练数据很少,因此该模型通过对可用数据应用弹性变形来使用数据增强。如上图 1 所示,网络架构由左侧的收缩路径和右侧的扩展路径组成。

    收缩路径由两个 3x3 卷积组成。每个卷积之后是一个整流线性单元和一个用于下采样的 2x2 最大池化操作。每个下采样阶段都会使特征通道的数量增加一倍。扩展路径步骤包括特征通道的上采样。接着是 2x2 上卷积,将特征通道的数量减半。最后一层是 1x1 卷积,用于将组件特征向量映射到所需数量的类。

    在这个模型中,训练是使用输入图像、它们的分割图和 Caffe 的随机梯度下降实现来完成的。当使用很少的训练数据时,数据增强用于教导网络所需的鲁棒性和不变性。该模型在其中一项实验中取得了 92% 的平均 IOU 分数。

     

    一百层Tiramisu:用于语义分割的全卷积 DenseNets

    论文:The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation (2017)

    代码:https://github.com/SimJeg/FC-DenseNet

    DenseNets 背后的想法是让每一层以前馈方式连接到每一层,使网络更容易训练和更准确。

    该模型的架构建立在密集的下采样和上采样路径块中。下采样路径有 2 个向下转换 (TD),而上采样路径有 2 个向上转换 (TU)。圆圈和箭头代表网络内的连接模式。

    本文的主要贡献是:

    • 将 DenseNet 架构扩展到完全卷积网络,用于语义分割。

    • 从密集网络中提出比其他上采样路径表现更好的上采样路径。

    • 证明该网络可以在标准基准测试中产生SOTA结果。

    • 该模型在 CamVid 数据集上实现了 88% 的全局准确率。

    通过扩张卷积进行多尺度上下文聚合

    论文:Multi-Scale Context Aggregation by Dilated Convolutions (ICLR, 2016)

    代码:https://github.com/fyu/dilation

    在本文中,开发了一种融合多尺度上下文信息而不损失分辨率的卷积网络模块。然后可以将该模块插入到任何分辨率的现有架构中。该模块基于扩张卷积。

    该模块在 Pascal VOC 2012 数据集上进行了测试。它证明向现有语义分割架构添加上下文模块可以提高其准确性。

    在实验中训练的前端模块在 VOC-2012 验证集上实现了 69.8% 的平均 IoU,在测试集上实现了 71.3% 的平均 IoU。该模型对不同物体的预测精度如下图

     

    DeepLab:使用深度卷积网络、Atrous 卷积和全连接 CRF 进行语义图像分割

    论文:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs (TPAMI, 2017)

    代码:https://github.com/tensorflow/models (非官方)

    在本文中,作者对深度学习的语义分割任务做出了以下贡献:

    • 用于密集预测任务的带有上采样滤波器的卷积

    • 用于多尺度分割目标的多孔空间金字塔池化 (ASPP)

    • 通过使用 DCNN 改进对象边界的定位。

    论文提出的 DeepLab 系统在 PASCAL VOC-2012 语义图像分割任务上实现了 79.7% mIOU。

    该论文解决了在语义分割中使用深度 CNN 的主要挑战,其中包括:

    • 重复组合最大池化和下采样导致的特征分辨率降低。

    • 多尺度目标的存在。

    • 由于以目标为中心的分类器需要空间变换的不变性,因此 DCNN 的不变性导致定位精度降低。

    Atrous 卷积是通过插入零对滤波器进行上采样或对输入特征图进行稀疏采样来应用的。第二种方法需要对输入特征图进行一个等于多孔卷积率 r 的子采样,并对其进行去隔行扫描以生成 r^2 个降低分辨率的图,每个 r×r 可能的移位一个。在此之后,标准卷积应用于直接特征图,将它们与图像的原始分辨率交错。

     

    重新思考语义图像分割的 Atrous 卷积

    论文:Rethinking Atrous Convolution for Semantic Image Segmentation (2017)

    代码:https://github.com/pytorch/vision (非官方)

    本文解决了使用 DCNN 进行语义分割的两个挑战(前面提到过);应用连续池化操作和多个尺度对象的存在时发生的特征分辨率降低。

    为了解决第一个问题,论文建议使用atrous卷积,也称为扩张卷积。它提出使用多孔卷积来扩大视野并因此包括多尺度上下文来解决第二个问题。

    该论文的“DeepLabv3”在没有 DenseCRF 后处理的 PASCAL VOC 2012 测试集上实现了 85.7% 的性能。

     

    用于语义图像分割的具有 Atrous 可分离卷积的编码器-解码器

    论文:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation (ECCV, 2018)

    代码:https://github.com/tensorflow/models

    本文的方法“DeepLabv3+”在没有对 PASCAL VOC 2012 和 Cityscapes 数据集进行任何后处理的情况下实现了 89.0% 和 82.1% 的测试集性能。该模型是 DeepLabv3 的扩展,通过添加一个简单的解码器模块来细化分割结果。

    该论文实现了两种类型的神经网络,它们使用空间金字塔池化模块进行语义分割。一种通过汇集不同分辨率的特征来捕获上下文信息,而另一种则获得清晰的对象边界。

    FastFCN:重新思考语义分割主干中的扩张卷积

    论文:FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation (2019)

    代码:https://github.com/wuhuikai/FastFCN

    本文提出了一个名为Joint Pyramid Upsampling(JPU)的联合上采样模块来代替消耗大量时间和内存的扩张卷积。它的工作原理是将提取高分辨率地图的功能制定为联合上采样问题。

    该方法在 Pascal Context 数据集上实现了 53.13% 的 mIoU 性能,并且运行速度提高了 3 倍。

    该方法实现了一个全连接网络(FCN)作为主干,同时应用 JPU 对低分辨率的最终特征图进行上采样,从而产生高分辨率的特征图。用 JPU 替换扩张卷积不会导致任何性能损失。

    联合采样使用低分辨率目标图像和高分辨率引导图像。然后通过传输引导图像的结构和细节来生成高分辨率的目标图像。

     

    通过视频传播和标签松弛改进语义分割

    论文:FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation (2019)

    代码:https://github.com/NVIDIA/semantic-segmentation

    本文提出了一种基于视频的方法,通过合成新的训练样本来扩展训练集。这旨在提高语义分割网络的准确性。它探索了视频预测模型预测未来帧以预测未来标签的能力。

    该论文表明,在来自合成数据的数据集上训练分割网络可以提高预测精度。本文提出的方法在 Cityscapes 上实现了 83.5% 的 mIoU,在 CamVid 上实现了 82.9%。

    论文提出了两种预测未来标签的方法:

    • 标签传播 (Label Propagation, LP) 通过将传播的标签与原始未来帧配对来创建新的训练样本

    • 联合图像标签传播 (Joint image-label Propagation, JP) 通过将传播标签与相应的传播图像配对来创建新的训练样本

    该论文有三个主要命题;利用视频预测模型将标签传播到直接相邻帧,引入联合图像标签传播来处理未对齐问题,并通过最大化沿边界的类概率并集的可能性来放松单热标签训练。

    Gated-SCNN:用于语义分割的门控形状 CNN

    论文:Gated-SCNN: Gated Shape CNNs for Semantic Segmentation (2019)

    代码:https://nv-tlabs.github.io/GSCNN/

    这篇论文是语义分割块上的最新成果。作者提出了一种双流 CNN 架构。在此架构中,形状信息作为单独的分支进行处理。此形状流仅处理与边界相关的信息。这是由模型的门控卷积层 (GCL) 和本地监督强制执行的。

    该模型在 mIoU 上比 DeepLab-v3+ 高 1.5%,在 F 边界得分上高出 4%。该模型已使用 Cityscapes 基准进行评估。在更小更薄的物体上,该模型在 IoU 上实现了 7% 的改进。

    下表显示了 Gated-SCNN 与其他模型相比的性能。

    结论

    我们现在应该掌握一些最常见的——以及一些最近的——技术,用于在各种上下文中执行语义分割。

    以上所有论文获取方式:公众号CV技术指南后台回复关键字“0009”可获取

    作者:Derrick Mwiti

    编译:CV技术指南

    原文链接:https://heartbeat.comet.ml/a-2019-guide-to-semantic-segmentation-ca8242f5a7fc

      欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

     在公众号中回复关键字 “技术总结”可获取公众号原创技术总结文章的汇总pdf。

    其它文章

    CV技术指南--精华文章汇总分类

    Pytorch高效训练的十条建议

    提高机器学习模型性能的常用策略

    Softmax 函数和它的误解

    资源分享 | SAHI:超大图片中对小目标检测的切片辅助超推理库

    计算机视觉中的图像标注工具总结

    Batch Size对神经网络训练的影响

    PyTorch 中的 ModuleList 和 Sequential: 区别和使用场景

    神经网络超参数的调参方法总结

    使用 Ray 将 PyTorch 模型加载速度提高 340 倍

    计算机视觉中的图像标注工具总结

    ICCV2021 | MicroNet:以极低的 FLOPs 改进图像识别

    CVPR2021 | 重新思考BatchNorm中的Batch

    ICCV2021 | 重新思考视觉transformers的空间维度

    CVPR2021 | Transformer用于End-to-End视频实例分割

    卷积神经网络的复杂度分析

    2021年小目标检测最新研究综述

    经典论文系列--胶囊网络:新的深度学习网络

    经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷

    CVPR2021 | 开放世界的目标检测

    欠拟合与过拟合技术总结

    归一化方法总结

    论文创新的常见思路总结

    CV方向的高效阅读英文文献方法总结

    计算机视觉中的特征金字塔技术总结

    计算机视觉中的注意力机制技术总结

    文字识别OCR开源框架的对比--Tesseract vs EasyOCR

    计算机视觉专业术语总结(一)构建计算机视觉的知识体系

    计算机视觉中的小样本学习综述

    损失函数技术总结

    经典论文系列 | 重新思考在ImageNet上的预训练

  • 相关阅读:
    hdu 4503(湫湫系列故事——植树节)
    JAVA里面如何让一个线程死亡或结束
    c 语言static
    TUXEDO与ORACLE数据库的互连
    关于使用PRO*C编程的一些简单说明和例子
    atoi函数
    我的顶级Java工具名单
    Tuxedo动态配置命令 tmconfig用法总结
    main(argc,argv) 中的参数
    pro c中varchar类型变量的arr函数是做什么用?
  • 原文地址:https://www.cnblogs.com/wxkang/p/15356143.html
Copyright © 2020-2023  润新知