机器学习笔记 - 用于语义图像分割的空洞卷积DeepLabv3

一、什么是DeepLabv3?

        DeepLabv3 是用于语义分割任务的深度神经网络 (DNN) 架构。虽然不是比较新的网络模型,但是也是分割模型里的杰出代表之一,所以还是值得深入了解。

        它使用Atrous(Dilated)卷积来控制感受野和特征图分辨率,而不增加参数总数。另一个主要属性是所谓的“Atrous Spatial Pyramid Pooling”,它可以有效地提取包含有用分割信息的多尺度特征。一般来说,网络能够捕获具有丰富远程信息的密集特征图,可用于准确分割图像。

        深度和全卷积神经网络已被证明对于分割任务是有效的。通常,编码器用于将输入图像编码为压缩表示,而解码器用于将这些特征上采样到所需的分辨率。编码器和解码器之间通常存在跳过连接,以在整个网络中传递具有表达能力的高级信息。请参见下图的示例。

        编码器通常使用重复的最大池化和跨步操作来以显着降低的分辨率获得压缩表示。DeepLab 架构提出了一种不同的方法,其中使用空洞卷积块来获得更高分辨率的特征图,并使用双线性上采样来获得所需的分辨率。

二、空洞卷积

        Atrous Convolution(与 Dilated Convolution 相同)是 DeepLab 架构的基石。在空洞卷积中,我们只是将零插入到卷积核中以增加内核的大小,而不增加可学习参数的数量(因为我们不关心零)。

        在上图中,我们可以看到 3x3 的空洞核具有 5x5 的感受野。如果我们堆叠空洞卷积层,我们不仅会有一个大的感受野,而且会比常规卷积有更密集的特征图。参见下图。

        在上图的顶部,我们可以认识到 Atrous 卷积是常规卷积的推广,其中速率r决定了要插入的零的数量。在常规卷积中r = 1

        空洞卷积具有以下优点:

        1、能够在更深层次上提取更密集的特征

        2、允许通过速率控制感受野

        3、保留与常规卷积相同数量的可学习参数

        空洞卷积构建更深层次的网络,在不增加参数数量的情况下以更精细的分辨率保留更多高级信息。请参见下图,其中输出步幅定义为输入和输出图像之间的比率。具有更高输出步幅的网络将能够提取更好、更高分辨率的特征。

DeepLab 采用了一种称为多重网格方法的方法,其中不同的空洞卷积率应用于网络的不同块。请参见图底部,其中随着信息深入网络,速率会增加。

        在 Atrous 架构中,解码器不需要从极度精简的特征图中进行上采样。通过使用空洞卷积,我们正在构建一个可以提取高分辨率特征图的主干网。

        空洞卷积的缺点:空洞卷积可以在网络深处提取大型特征图,但代价是增加内存、显存消耗。另外推理时间也会更长,不过花费这样的代价是我们获得了一个强大的模型。

三、空洞空间金字塔池

        如果说空洞卷积是基石,那么空洞空间金字塔池化 (ASPP) 就是基础。

        空间金字塔池化(SPP)在多个尺度上对特征进行重新采样,然后将它们池化在一起(通常使用平均池化层)。

        在 ASPP 的情况下,特征尺度通过空洞卷积率来改变。需要注意的一件事是,当速率太大时,空洞卷积本质上会变成 1x1 卷积。在这种情况下,速率接近特征图的大小,并且无法捕获整个图像的上下文。为了克服这个问题,应用了 1x1 卷积,它保留了原始特征图形状,从而从整个特征图中获取信息。将输出连接起来,然后应用全局平均池。

四、整体架构

        现在组合在一起形成 DeepLabv3 架构的底层块。下图显示了 DeepLabv3 网络的基本架构,其中主要块只是主干和头部。每个主块都由子块组成。

虽然主干和头部是神经网络架构的常用术语,但子块名称不一定是通用的。重要的部分是理解底层概念,以便您可以将它们应用到任何深层架构中。

        整体主干将图像特征编码为丰富的高分辨率特征图。下采样主干网获取输入图像并提取浅层特征,而Atrous主干网以高分辨率编码深层特征而不增加参数总数。

         在网络的第二部分中,DeepLabv3 头应用于主干网的末端以产生输出。该头首先由一个 ASPP 块组成,该块对不同尺度的特征进行重新采样,并将它们汇集在一起​​,提供高质量的多尺度信息。在 ASPP 块之后,我们有一个附加块,它本质上将特征映射投影到所需数量的分割类。最后,使用双线性上采样来获得与输入图像相同分辨率的特征图。

四、网络实现

        主干网(有时称为编码器)通常是 ImageNet 模型的修改版本,例如 ResNet 或 MobileNet,但我们实际上可以使用任何类型的网络,只要我们将空洞卷积应用于最终层以获得精细分辨率特征地图。尽管我们通过扩大一些卷积来改变架构,但我们没有改变任何权重,因此我们仍然可以毫无问题地使用预先训练的权重。以与骨干网训练相同的方式准备输入也很重要。

        我们可以自己为 DeepLabv3 头编写代码,但如果你不想自己写,torchvision既有预先训练的主干,也有预先训练的头部,这里是文档的链接。

DeepLabV3 — Torchvision main documentationicon-default.png?t=N7T8https://pytorch.org/vision/master/models/deeplabv3.html        让我们看一个例子。

from torchvision.models.segmentation import deeplabv3_resnet50

deeplabv3 = deeplabv3_resnet50(
    weights='COCO_WITH_VOC_LABELS_V1', 
    weights_backbone='IMAGENET1K_V1'
)

# change outputs to desired number of classes
deeplabv3.classifier[4] = torch.nn.Conv2d(256, num_classes, kernel_size=(1, 1), stride=(1, 1))

        我们还可以使用分割模型 Pytorch,它支持各种预训练的主干/编码器,但分割头似乎没有经过预训练。

import segmentation_models_pytorch as smp

deeplabv3 = smp.DeepLabV3(
    encoder_name='timm-mobilenetv3_small_100',
    encoder_weights='imagenet',
    classes=num_classes
)

五、小结

        DeepLabv3 架构由两个主要模块组成:一个能够通过 Atrous Convolution 提供精细分辨率特征图的主干,以及一个能够以精细分辨率提取多尺度特征、将其投影到所需特征数量的DeepLabv3 Head。映射(分割类的数量),并将它们上采样到输入图像分辨率。

        由于 DeepLabv3 具有模块化架构,我们可以混合搭配不同的模块以获得所需的性能。例如,我们可以使用预先训练的 ResNet101 主干来获得高性能,或者我们可以为了速度而放弃一些准确性,而使用 MobileNet 主干。我们甚至可以添加多个头来执行多任务学习,例如同时执行分割和深度估计。

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

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

相关文章

房贷计算器,妥妥的数学计算

根据给出的公式,编写房贷计算器。妥妥的数学计算,把数学公式“翻译”成代码就好。 (笔记模板由python脚本于2024年01月06日 18:08:55创建,本篇笔记适合初具基本编程能力的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:http…

服务器GPU温度过高挂掉排查记录

服务器GPU挂掉 跑深度学习的代码的时候发现中断了。通过命令查看: nvidia-smi显示 Unable to determine the device handle for GPU 0000:01:00.0: Unknown Error。感觉很莫名其妙。通过重启大法之后,又能用一段时间。 shutdown -r now但是过了一个小…

遗传算法(GA)、模拟退火算法(SAA)、蚁群算法(ACO)、粒子群算法(PSO)优缺点汇总

遗传算法 优点: 与问题领域无关且快速随机的搜索能力,不会陷入局部最优解;搜索从群体出发,具有潜在的并行性,提高运行速度,鲁棒性高;搜索使用评价函数启发,过程简单;使…

基于Java实现全功能电子商城

🍅文末获取源码联系🍅 👇🏻 精彩项目推荐订阅👇🏻 不然下次找不到哟 基于SpringBoot的旅游网站 基于SpringBoot的MusiQ音乐网站 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及…

小游戏实战丨基于PyGame的俄罗斯方块小游戏

文章目录 写在前面PyGame五子棋注意事项系列文章写在后面 写在前面 本期内容:基于pygame的俄罗斯方块小游戏 下载地址:https://download.csdn.net/download/m0_68111267/88700182 实验环境 python3.11及以上pycharmtkinter PyGame Pygame是一个非常…

Java设计模式-模板方法模式

目录 一、豆浆制作问题 二、模板方法模式基本介绍 三、原理类图 四、模板方法模式解决豆浆制作问题 五、模板方法模式的钩子方法 六、模板方法模式在Spring框架应用的源码分析 七、注意事项和细节 一、豆浆制作问题 编写制作豆浆的程序,说明如下 : 1) 制作…

案例098:基于微信小程序的电子购物系统的设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

【大数据进阶第三阶段之Datax学习笔记】使用阿里云开源离线同步工具DataX 实现数据同步

【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax概述 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax快速入门 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax类图 【大数据进阶第三阶段之Datax学习笔记】使用…

RH850P1X芯片学习笔记-A/D Converter (ADCF)

文章目录 Features of RH850/P1x-C ADCFNumber of UnitsRegister Base AddressClock SupplyInterrupts and DMAHardware ResetExternal Input/Output SignalsVirtual Channel OverviewFunctional OverviewBlock DiagramPhysical Channels, Virtual Channels and Scan Groups Re…

SPRING BOOT发送邮件验证码(Gmail邮箱)

SPRING BOOT邮件发送验证码 一、Gmail邮箱配置 1、进入Gmail(https://mail.google.com) 2、打开谷歌右上角设置 3、启用POP/IMP 4、启用两步验证(https://myaccount.google.com/security) 5、建立应用程式密码 6、复制保存应用程式密码 二、代码 1、引入依赖 <d…

【LMM 012】TinyGPT-V:24G显存训练,8G显存推理的高效多模态大模型

论文标题&#xff1a;TinyGPT-V: Efficient Multimodal Large Language Model via Small Backbones 论文作者&#xff1a;Zhengqing Yuan, Zhaoxu Li, Lichao Sun 作者单位&#xff1a;Anhui Polytechnic University, Nanyang Technological University, Lehigh University 论文…

Window端口占用处理

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

C#编程-实现函数重载

考虑一个示例&#xff1a;您必须编写一个程序来实现计算器的功能。计算器执行各种运算&#xff0c;例如数字的加、减及乘等。可以对任何类型的数据执行这些运算。这是否意味着您必须定义单独的函数名&#xff08;如addInteger、addFloat和addDoublie&#xff09;对每种此类数字…

VMware VCP+VCAP持续通过

稳定通过&#xff0c;安全可靠

LOG滤波器原理探究---计算机视觉和特征检测

先来看几个滤波器公式&#xff1a; 高斯滤波器&#xff1a; G ( x , y ; σ ) 1 2 π σ 2 e − x 2 y 2 2 σ 2 G(x,y;\sigma) \frac{1}{2 \pi \sigma^2} e^{-\frac{x^2 y^2}{2\sigma^2}} G(x,y;σ)2πσ21​e−2σ2x2y2​ 图像的二阶导数&#xff1a; ∇ 2 f ∂ 2 f ∂…

看图识熊(二)

使用Tools for AI封装onnx模型并推理 进行这一步之前&#xff0c;请确保已正确安装配置了Visual Studio 2017 和 Microsoft Visual Studio Tools for AI环境。 项目的代码也可以在这里找到&#xff0c;下面的步骤是带着大家从头到尾做一遍。 界面设计 创建Windows窗体应用(…

ssm基于Java Web的怀旧唱片售卖系统论文

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装怀旧唱片售卖系统软件来发挥其高效地信息处理的作用&#x…

k8s集群部署Harbor镜像仓库

部署k8s集群参考 https://blog.csdn.net/m0_59933574/article/details/134936188?spm1001.2014.3001.5502https://blog.csdn.net/m0_59933574/article/details/134936188?spm1001.2014.3001.5502 安装Harbor 准备一台干净服务器&#xff0c;关闭防火墙与selinux 下载dock…

探索 2024 年:未来可能带来的新奇事物

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

XML技术分析02

一、XML——树形结构 <?xml version"1.0" encoding"ISO-8859-1"?><note><to>George</to><from>John</from><heading>Reminder</heading><body>Dont forget the meeting!</body> </note…