[语义分割] DeepLab v1网络(语义分割、信号下采样、空间上的不敏感性、LargeFOV、膨胀卷积、空洞卷积、MSc、Multi-Scale)

Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
  • 论文地址:Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
  • 参考源码:https://github.com/TheLegendAli/DeepLab-Context

在这里插入图片描述

  • DeepLab v1 是一种用于语义分割的卷积神经网络模型,其核心思想是结合了全局上下文信息,以更好地理解图像中的语义内容
  • 2014 年发表于 CVPR

Abstract

深度卷积神经网络(DCNNs)最近在高级视觉任务中,如图像分类和目标检测方面,展现了最先进的性能。本研究将DCNNs和概率图模型的方法结合起来,用于解决像素级分类任务(也称为"语义图像分割")。我们发现,DCNNs在最后一层的响应对于准确的目标分割来说不够局部化。这是由于使得DCNNs在高级任务中表现出色的不变性特性。我们通过将最后一层DCNN的响应与全连接的条件随机场(CRF)相结合,克服了深度网络的这种较差的局部化特性。在定性上,我们的"DeepLab"系统能够以超越以往方法的准确性定位分割边界。定量上,在PASCAL VOC-2012语义图像分割任务中,我们的方法达到了71.6%的IOU准确度,创造了新的最先进结果。我们展示了如何高效地获得这些结果:仔细的网络重定向和波尔社区的“空洞”算法的新应用,使得在现代GPU上每秒8帧密集计算神经网络响应成为可能。

DCNNs是"Deep Convolutional Neural Networks"(深度卷积神经网络)的缩写。它是一种深度学习模型,是卷积神经网络(CNNs)的一种扩展形式。深度卷积神经网络是一类由多个卷积层和其他类型的层组成的神经网络。它们被广泛用于计算机视觉任务,如图像分类、目标检测、语义分割等。DCNNs之所以称为"深度"卷积神经网络,是因为它们通常由很多层组成,允许模型学习更复杂、抽象的特征表示。这些网络具有大量参数,能够从原始输入数据中学习到更高级别的特征,并在层层之间逐渐提取更高阶的特征,从而实现对复杂任务的有效建模。深度卷积神经网络的关键组件是卷积层,它们通过卷积运算对输入数据进行特征提取。此外,DCNNs通常还包括池化层、全连接层和激活函数等,以实现特征的降维、空间下采样和非线性变换。DCNNs在计算机视觉领域取得了显著的成功,并在各种图像处理任务中取得了优秀的性能。这些网络能够通过大规模的训练数据和反向传播算法来自动学习特征,并且在许多视觉任务中超越了传统的图像处理方法。

简单来说,DCNNs ↔ \leftrightarrow CNNs

1. 语义分割任务重存在的问题

There are two technical hurdles in the application of DCNNs to image labeling tasks: signal down-sampling, and spatial ‘insensitivity’ (invariance).

在将 DCNNs 应用于图像标注任务时,存在两个技术障碍:①信号下采样和②空间上的"不敏感性"(不变性)。

1.1 信号下采样

在 DCNN 中,通常通过池化层来进行信号下采样,这是为了减少特征图的尺寸和参数数量。然而,池化操作会导致特征图的空间分辨率降低,从而损失了一部分细节信息。在图像标注任务中,像素级的细节信息对于准确的标注非常重要,因此信号下采样可能会影响标注的质量

这里主要强调的是:下采样会导致图像的分辨率降低

1.2 空间上的"不敏感性"(不变性)

DCNNs 在高级视觉任务中表现出色的一个原因是它们具有一定程度的平移、旋转、缩放等空间不变性。然而,对于像素级标注任务(如语义分割或像素级分类),我们希望网络能够对每个像素点进行精细的标注,这就需要网络具有较高的空间敏感性。然而,DCNNs 的不变性特性可能导致在特征提取过程中丢失一些空间信息,使得网络对于像素级标注任务不够敏感。

CNNs 之所以具有一定程度的平移、旋转、缩放等空间不变性,原因有:①卷积层;②池化层;③权值共享;④数据增强。


Q:为什么说“CNNs 的不变性特性可能导致在特征提取过程中丢失一些空间信息”?
A:这主要是由于以下几个原因:

  1. 池化操作:CNN 中常用的池化层(如最大池化或平均池化)会减小特征图的空间尺寸,以减少计算量并增强空间不变性。然而,这种下采样的操作也导致了部分空间信息的丢失。当特征图被缩减时,原始图像中细微的空间结构和位置信息可能被模糊化或忽略,因此在一定程度上丢失了细粒度的空间信息

  2. 卷积核尺寸:在卷积操作中,使用的卷积核尺寸通常较小,只关注局部感受野内的特征。这意味着较大的空间结构可能在特征提取过程中被忽略。虽然通过堆叠多个卷积层可以逐渐扩大感受野,但仍然存在一定程度的局部性。

  3. 权值共享:虽然权值共享增强了模型的平移不变性,但这也导致了一些空间信息的丢失。由于卷积核在整个图像上是共享的,网络学习到的特征对于不同位置的相同特征可能具有相同的响应,但对于不同特征的位置信息的差异性较小

1.3 解决方案

为了克服这些技术障碍,在像素级标注任务中,可以采取一些策略,如:

  • 避免过度的信号下采样:可以适当减少池化层的使用,或者使用更少的步长来进行池化,以保留更多的空间信息。

  • 结合上采样技术:可以使用转置卷积或其他上采样技术来恢复特征图的空间分辨率,从而更好地处理像素级标注任务。

  • 结合多尺度特征:可以在网络中引入多尺度的特征表示,以捕获不同尺度的信息,并提高对不同大小目标的感知能力。

  • 使用适当的损失函数:对于像素级标注任务,可以使用适当的损失函数,如交叉熵损失或Dice损失,来优化网络并鼓励更准确的像素级标注结果。

通过综合利用这些策略,可以使DCNNs在像素级标注任务中取得更好的性能,克服信号下采样和空间"不敏感性"等技术障碍。


在这篇论文中,我们主要使用到的解决方案为:

  1. 'atrous'(with holes) algorithm:即空洞卷积 / 膨胀卷积 / 扩张卷积
  2. fully-connected CRF(Conditional Random Field):全连接条件随机场,用于对图像进行后处理以改善分割或标注的结果。它通常用于在图像分割任务中对神经网络的输出进行精炼和优化。

注意❗️:CRF 在当时(2014年)是语义分割领域非常常用的一种方法,但是 DeepLab 系列在 v3 之后就不再使用 CRF 了,因此 CRF 不需要过多注意。

2. DeepLab v1 网络的优势

相比之前的一些网络,本文提出的 DeepLab v1 网络具有以下优势:

  1. 速度更快
  2. 准确率更高
  3. 模型比较简单

2.1 速度更快

论文中说是因为采用了膨胀卷积的原因,但 fully-connected CRF 依然很耗时,网络推理大概需要 0.5s。

2.2 准确率更高

在这里插入图片描述

其中:

  • DeepLab:本文提出的语义分割模型
  • MSc:Multi-Scale,多尺度
  • CRF:全连接条件随机场,用于对图像进行后处理以改善分割或标注的结果。它通常用于在图像分割任务中对神经网络的输出进行精炼和优化。
  • LargeFOV:大视场,指的是相机或传感器能够捕捉到的广阔视野范围。在图像处理和计算机视觉任务中,拥有大视场的设备通常可以覆盖更多的场景,从而更全面地理解和分析图像中的内容。

从图中可以清晰的看到,DeepLab v1 相比之前最好的网络(TTI-Zoomout-16)在 mean IoU 指标上提升了约 7.2%。

2.3 模型比较简单

在这里插入图片描述

从图中可以看到,DeepLab v1 主要由 DCNN 和 CRF 联级构成。

这里的 DCNN 主要是指分类网络的Backbone

3. 网络结构详解

DeepLab v1 的 Backbone 使用的是 VGG16(Visual Geometry Group 16)作为主要的卷积神经网络架构。

VGG16 的结构包含 16 层卷积层和全连接层,其中包括 13 个卷积层和 3 个全连接层。该模型在 ImageNet 数据集上进行了训练,并在图像分类任务上取得了很好的性能。

DeepLab v1 使用了预训练的 VGG16 作为 Backbone,并在其基础上构建了卷积神经网络来进行语义分割任务。在 DeepLab v1 中,VGG16 的部分或全部全连接层被去除,而只保留卷积层,并通过空洞卷积(Atrous Convolution)来增大感受野,从而实现对图像的全局上下文信息的捕获。

3.1 LargeFOV(Field of View,感受野)

3.1.1 LargeFOV 概况

在 DeepLab v1 中,LargeFOV(Field of View)指的是采用空洞卷积(Atrous Convolution)来扩大感受野(receptive field)的操作。

在传统的卷积神经网络中,随着网络层数的增加,感受野也会随之增大。然而,随着感受野的增加,网络的计算和存储开销也会显著增加。为了增加感受野而不增加额外的计算和存储负担,DeepLab v1 引入了 LargeFOV(Field of View)的概念,即使用空洞卷积来增大感受野,帮助网络更好地理解整个图像的语义信息。

空洞卷积(膨胀卷积)详情见:空洞卷积(膨胀卷积)的相关知识以及使用建议(HDC原则)

通过采用 LargeFOV 的空洞卷积操作,DeepLab v1 能够在语义分割任务中取得较好的性能,对于识别和分割图像中的对象和场景起到了积极的作用。

DeepLab v1 作者提出 LargeFOV 的主要目的是:在保证 mean IoU 不下降的前提下,减少模型的参数量以加快模型速度。

3.1.2 LargeFOV 效果分析

After converting the network to a fully convolutional one, the first fully connected layer has 4,096 filters of large 7×7 spatial size and becomes the computational bottleneck in our dense score map computation. We have addressed this practical problem by spatially subsampling (by simple decimation) the first FC layer to 4×4 (or 3×3) spatial size.

将网络转换为全卷积网络后,原本的全连接层变成了卷积核大小为 7 × 7 7\times 7 7×7,卷积核个数(输出通道数)为 4,096 的卷积层。如果我们直接使用这个卷积层,那么它就会成为计算瓶颈。为了解决这个问题,作者对这个卷积层进行了空间上的下采样,卷积核的大小从原来的 7 × 7 7 \times 7 7×7 变为 4 × 4 4\times 4 4×4(或 3 × 3 3\times 3 3×3)的空间尺寸。

不说人话系列,这里说的卷积层下采样的意思就是将卷积核减小,比如从原来的 kernel_size = (7, 7) 变为 kernel_size = (4, 4)kernel_size = (3, 3)

我们可以看一下这样转换后的效果:

在这里插入图片描述

注意❗️

  1. 这里替换全连接层的卷积层并非普通卷积层,而是一个膨胀卷积,它有一个膨胀系数 r r r,可以扩大感受野。
  2. 图中的 input size 其实是膨胀系数 r r r

我们逐个分析:

  • DeepLab-CRF- 7 × 7 7 \times 7 7×7:简单使用膨胀系数 r=4 的膨胀卷积替换全连接层,得到一系列指标,作为 benchmark;
  • DeepLab-CRF:对卷积核参数进行下采样(卷积核大小从原来的 7 × 7 7 \times 7 7×7 变为 4 × 4 4\times 4 4×4)。因为卷积核大小变小了,所以感受野也变小了;此时模型参数数量几乎减半;mean IoU 有较大下降;模型训练速度翻倍 —— 这里 mean IoU 降低并不是作者期望的(我们之前说了,引入 FOV 的作用就是保持 mean IoU 并提升模型速度)
  • DeepLab-CRF- 4 × 4 4 \times 4 4×4:相比上一个,膨胀系数翻倍;模型感受野恢复到原来的水平;模型参数量减半;mean IoU 也快回复到原来的水平;模型速度不变 —— 说明对于语义分割任务而言,大的感受野是非常重要的!
  • DeepLab-CRF-LargeFOV:卷积核更小;膨胀系数更大;感受野不变;模型参数下降6倍;mean IoU 保持原有水平;速度提升 3 倍多 —— 说明使用膨胀卷积可以增加模型的感受野,并降低模型参数,提高模型速度,且对模型性能影响较少。

3.1.3 DeepLab v1-LargeFOV 模型架构

霹雳吧啦WZ 绘制了添加 LargeFOV 的 DeepLab v1模型,如下所示。

Backbone 和 FCN 一样,仍然为 VGG-16

在这里插入图片描述

DeepLab-LargeFOV

LargeFOV 本质上就是使用了膨胀卷积

通过分析发现虽然 Backbone 是 VGG-16 但所使用 Maxpool 略有不同,VGG论文中是 kernel=2,stride=2,但在 DeepLab v1 中是 kernel=3,stride=2,padding=1。接着就是最后两个 Maxpool 层的 stride 全部设置成了 1(这样下采样的倍率就从原来的 32 变成了 8)。最后三个 3 × 3 3\times 3 3×3 的卷积层采用了膨胀卷积,膨胀系数 r = 2 r=2 r=2

然后关于将全连接层卷积化过程中,对于第一个全连接层(FC1)在 FCN 网络中是直接转换成卷积核大小为 7 × 7 7\times 7 7×7,卷积核个数为 4096 4096 4096 的卷积层(普通卷积),但在 DeepLab v1 中作者说是对参数进行了下采样最终得到的是卷积核大小 3 × 3 3\times 3 3×3,卷积核个数为 1024 1024 1024 的卷积层(膨胀卷积)(这样不仅可以减少参数还可以减少计算量,详情可以看下论文中的 Table2),对于第二个全连接层(FC2)卷积核个数也由 4096 4096 4096 采样成 1024 1024 1024普通卷积)。

将 FC1 卷积化后,还设置了膨胀系数(膨胀卷积),论文 3.1 中说的是 r = 4 r=4 r=4 但在 Experimental Evaluation 中 Large of View 章节里设置的是 r = 12 r=12 r=12 对应 LargeFOV。对于 FC2 卷积化后就是卷积核 1 × 1 1\times 1 1×1,卷积核个数为 1024 1024 1024 的普通卷积层。接着再通过一个卷积核 1 × 1 1\times 1 1×1,卷积核个数为 num_classes(包含背景)的普通卷积层。最后通过 8 倍上采样还原回原图大小。

注意❗️采用的是双线性插值(Bilinear Interpolation)的策略来实现上采样。

双线性插值是一种常用的图像插值方法,它利用周围已知像素的值来估计目标像素的值。在上采样时,双线性插值会根据已有的特征图中的像素值,计算出目标位置上的像素值,从而将特征图的空间尺寸进行扩大。

具体来说,8 倍上采样意味着将特征图的高度和宽度分别扩大 8 倍。对于每个目标位置上的像素,双线性插值会考虑其周围 4 个最近的像素点,根据距离权重进行插值计算。这样可以有效地将特征图还原到原始输入图像的大小,使得网络的输出和输入在空间尺寸上保持一致。

3.2 MSc(Multi-Scale,多尺度(预测))

其实在论文的 4.3 中还提到了 Multi-Scale Prediction,即融合多个特征层的输出。关于 MSc(Multi-Scale) 的结构论文中是这么说的:

Specifically, we attach to the input image and the output of each of the first four max pooling layers a two-layer MLP (first layer: 128 3x3 convolutional filters, second layer: 128 1x1 convolutional filters) whose feature map is concatenated to the main network’s last layer feature map. The aggregate feature map fed into the softmax layer is thus enhanced by 5 * 128 = 640 channels.

具体来说,作者将两层的 MLP(第一层:具有 128 个 卷积核且大小为 3 × 3 3\times 3 3×3 的卷积,第二层:具有 128 个卷积核且大小为 1 × 1 1\times 1 1×1 的卷积)分别附加到输入图像和前四个最大池化层的输出上,然后将它们的特征图与主网络的最后一层特征图进行连接。因此,送入 Softmax 层的聚合特征图将增加 5 × 128 = 640 5 \times 128 = 640 5×128=640 个通道。

MLP 是多层感知器(Multilayer Perceptron)的缩写,也被称为前馈神经网络(Feedforward Neural Network)。它是一种常见的人工神经网络模型,用于解决各种机器学习任务,特别是在监督学习中广泛应用。

即 DeepLab v1 除了使用之前主分支上输出外,还融合了来自原图尺度以及前四个 Maxpool 层的输出,更详细的结构参考下图。

在这里插入图片描述

论文中说使用 MSc 大概能提升 1.5 个点,使用 fully-connected CRF 大概能提升 4 个点。但在源码中作者建议使用的是不带 MSc 的版本,以及看 github 上的一些开源实现都没有使用 MSc。猜测是因为 MSc 不仅费时而且很吃显存。

在这里插入图片描述

Table 1:(a) 我们提出的模型在PASCAL VOC 2012数据集的'val'集上的性能(在扩充的'train'集上进行了训练)。最佳性能是通过同时利用多尺度特征和大视场来实现的。(b) 我们提出的模型在PASCAL VOC 2012数据集的'test'集上(在扩充的'trainval'集上进行了训练)与其他最先进方法的性能对比。

知识来源

  1. https://www.bilibili.com/video/BV1SU4y1N7Ao
  2. https://blog.csdn.net/qq_37541097/article/details/121692445

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/47698.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ElementUI tabs标签页样式改造美化

今天针对ElementUI的Tabs标签页进行了样式修改,更改为如下图所属的样子。 在线运行地址:JSRUN项目-ElementUI tabs标签页样式改造 大家如果有需要可以拿来修改使用,下面我也简单的贴上代码,代码没有注释,很抱歉&#x…

React Native 0.72 版本,带来诸多更新

经过漫长的等待,React Native 终于迎来了0.72 版本,此处版本带来了Metro重要的功能更新、性能优化、开发人员体验的改进以及其他一些重要的变化。我们可以从下面的链接中获取此次版本更新的内容:0.72更新内容 一、Metro 新功能 众所周知,Metro 是 React Native 默认的 Jav…

TEE GP(Global Platform)功能认证实验室

TEE之GP(Global Platform)认证汇总 GP认证实验室主要面向功能认证、SE安全认证、TEE安全认证,对于TEE来说,则分为TEE功能认证和TEE安全认证。本文对功能认证相关实验室机构进行总结和介绍。 一、国内3家 二、国外3家 参考: GlobalPlatform …

从零开始学Docker(一):Docker的安装部署

前述:本次学习与整理来至B站【Python开发_老6哥】老师分享的课程,有兴趣的小伙伴可以去加油啦,附链接 Linux 环境:RockyLinux 9 版本管理 Docker引擎主要有两个版本:企业版(EE)和社区版&#…

go学习 4、复合数据类型

4、复合数据类型 数组、slice、map和结构体 如何使用结构体来解码和编码到对应JSON格式的数据,并且通过结合使用模板来生成HTML页面 数组和结构体是聚合类型;它们的值由许多元素或成员字段的值组成。数组是由同构的元素组成(每个数组元素都是完全相同的…

Nautilus Chain 即将治理通证 NAUT ,生态发展进程加速

独特且优势明显的 Nautilus Chain 目前,行业内首个模块化底层 Nautilus Chain 已经上线主网,并且即将有超过 70 个应用原生部署在 Nautilus Chain 上。Nautilus Chain 本身是一个以 Layer3 为定位的区块链系统,其通过 Celestia 模块化底层来…

监控和可观察性在 DevOps 中的作用!

在不断发展的DevOps世界中,深入了解系统行为、诊断问题和提高整体性能的能力是首要任务之一。监控和可观察性是促进这一过程的两个关键概念,为系统的健康状况和性能提供有价值的可见性。虽然这些术语经常互换使用,但它们代表了理解和管理复杂…

解决IDEA的git非常缓慢方法

解决IDEA的git非常缓慢方法 xxxx\IDEA2021.1.3\IntelliJ IDEA 2021.1.3\bin

如何使用 Flatpak 在 Linux 上安装 ONLYOFFICE 桌面编辑器?

Flatpak 是一款与 Linux 发行版无关的软件实用工具,可用于在 Linux 上构建和分发桌面端应用。其可帮助您安装第三方 Linux 应用程序,无需安装库或处理依赖。 ONLYOFFICE 桌面版是什么 ONLYOFFICE 编辑器桌面版是一款全面的办公工具,提供了文…

firefox笔记-Centos7离线安装firefox

目前(2023-03-22 16:41:35)Centos7自带的firefox已经很新了是2020年的。主要原因是有个web项目,用2020年的firefox打不开。 发到互联网上是2023-07-24。 报错是js有问题,估计是搞前端的只做了chrome适应,没做firefox…

618技术揭秘 - 大促弹窗搭投实践 | 京东云技术团队

背景 618 大促来了,对于业务团队来说,最重要的事情莫过于各种大促营销。如会场、直播带货、频道内营销等等。而弹窗作为一个极其重要的强触达营销工具,通常用来渲染大促氛围、引流主会场、以及通过频道活动来提升频道复访等。因此&#xff0…

【框架篇】Spring Boot 日志

Spring Boot 日志 一,日志用途 尽管一个项目在没有日志记录的情况下可能能够正常运行,但是日志记录对于我们来说却是至关重要的,它存在以下功能: 1,故障排查和调试:当项目出现异常或者故障时,…

钉钉返回:访问ip不在白名单之中,请参考FAQ

新版钉钉 在开发管理-服务器出口IP-配置返回错误信息返回给你的requestIp

Mysql sql优化

目录 目的 目标 explain 优化 避免使用select * 用union all代替union 小表驱动大表(in与exists) 批量操作 多使用limit in中值太多 不使用%前缀模糊查询 不在where子句中进行表达式操作 避免隐式类型转换 联合索引遵守最左前缀法则 inne…

平衡二叉树介绍

一、树的概念 1.1 空树和非空树 空树:结点数为0的树 非空树:有且仅有一个根节点。其中,没有后继的结点叫叶子结点,有后继的结点叫做分支结点。 如下图所示: 1.2树的属性 除了根结点外任何一个结点都有且仅有一个前…

【黑马头条之图片识别文字审核敏感词】

本笔记内容为黑马头条项目的图片识别文字审核敏感词部分 目录 一、需求分析 二、图片文字识别 三、Tess4j案例 四、管理敏感词和图片文字识别集成到文章审核 一、需求分析 产品经理召集开会,文章审核功能已经交付了,文章也能正常发布审核。对于上次…

组件间嵌套与父子组件通信

1.组件的嵌套 比如在App.vue内使用注册的ShowInfo组件,这就是组件嵌套,其中ShowInfo是子组件,App是父组件 ◼ 前面我们是将所有的逻辑放到一个App.vue中:  在之前的案例中,我们只是创建了一个组件App;  如果我们一个应用程序将所有的逻…

Ansible自动化运维学习——综合练习

目录 (一)练习一 1.新建一个role——app 2.创建文件 3.删除之前安装的httpd服务和apache用户 4.准备tasks任务 (1)创建组group.yml (2)创建用户user.yml (3)安装程序yum.yml (4)修改模板httpd.conf.j2 (5)编写templ.yml (6)编写start.yml (7)编写copyfile.yml (8…

TEE GP(Global Platform)技术委员会及中国任务小组

TEE之GP(Global Platform)认证汇总 一、TEE GP技术委员会 二、GP中国任务小组 参考: GlobalPlatform Certification - GlobalPlatform

基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章

最近在整理和编写基于C#的WinForm应用程序,然后碰到一个其他读者也可能碰到的问题,就是C#的Borderless无边框窗体的动画效果问题。 在Visual Studio 2022里,C#的WinForm程序提供了Borderless无边框窗体的样式效果,但是它没提供在无…