- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
。
【深度学习】 总目录 。
DeepLab系列是谷歌团队提出的一系列语义分割算法。DeepLab v1于2014年推出,随后2017到2018年又相继推出了DeepLab v2,DeepLab v3以及DeepLab v3+.
空洞卷积 也叫扩张卷积或者膨胀卷积,简单来说就是在卷积核元素之间 加入一些空格(零)来扩大卷积核 的过程。相同kernel size的空洞卷积和标准卷积的 权重shape是一样的 ,二者的差异在于空洞卷积改变了输入的采样方法, 标准卷积是连续地、不间隔地采样,而空洞卷积是跳跃式地采样,跳跃的步长就是dilation(r)。当r=1时,空洞卷积和普通卷积一样。当r=2时,如下图所示,空洞卷积的感受野大小为7x7,r=3时,感受野大小为15x15.
输入图像经过多层卷积下采样后会导致分辨率大幅下降,这使得像素的位置信息丢失,导致还原图像尺寸的过程pixel的定位有偏失,体现为pixel-wise的最终预测结果不准确,这最主要表现在物体的边缘位置。为了解决这个问题作者采用了 fully-connected CRF 方法,将网络的输出作为CRF的输入,利用不同位置的像素类别信息关系,通过建立概率图的方式,有效缓解了边缘定位不准确的问题。在DeepLab V3中移除了.
(1)使用 VGG16 作为backbone,和FCN网络一样将全连接层的权重转成了卷积层的权重,构成 全卷积网络 。第一个全连接层的改空洞卷积,通道数为1024,卷积核大小为3×3(FCN中是7×7),dilate rate设为12时(LargeFOV)效果比设为4时好。对于第二个全连接层(FC2)卷积核个数也由4096采样成1024.
(2) Maxpool 略有不同,VGG论文中是 kernel=2,stride=2 ,但在DeepLabV1中是 kernel=3,stride=2,padding=1 .
(3) skip subsampling :将最后两个Maxpool层的stride全部设置成1,不再下采样。并且最后三个3×3卷积采用了 空洞卷积 ,系数 r=2 .
下表为在PASCAL VOC2012验证集上,改变第一个全连接层kernel size和空洞卷积rate后网络的性能和训练速度.
。
上图(a)为 DeepLab- LargeFOV主干网络 VGG16 最后的全连接改卷积的部分,图(b)将Pool5输出的特征层 并联4个分支 ,每个分支分别通过一个3x3的空洞卷积层,1x1的卷积层,1x1的卷积层(卷积核的个数等于 num_classes )。最后将四个分支的结果进行 Add融合 即可。 如右图 所示,为了对中心像素(橙色)进行分类,ASPP通过使用具有不同rate的多个空洞卷积来获得多尺度特征。不同颜色的框表示中心像素在不同rate下的感受野。如果是以 ResNet101 做为Backbone的话,每个分支只有一个3x3的膨胀卷积层,卷积核的个数等于 num_classes.
在论文中有给出两个ASPP的配置, ASPP-S (四个分支膨胀系数分别为2,4,8,12)和 ASPP-L (四个分支膨胀系数分别为6,12,18,24),下表是对比LargeFOV、ASPP-S以及ASPP-L的效果。这里只看CRF之前的(before CRF)对比, ASPP-L优于ASPP-S优于LargeFOV .
(1) 以ResNet101作为backbone ,将Layer3中的Bottleneck1的3×3卷积(stride=2)的stride设置为1,即 不在进行下采样 ,同时3x3卷积层全部 采用空洞卷积 ,系数为2。在Layer4中也是一样,取消了下采样,所有的3x3卷积层全部采用空洞卷积,系数为4.
(2)在backbone输出的Feature Map上 并联四个分支 ,每个分支的第一层都是使用的空洞卷积,但 不同的分支使用的膨胀系数不同 (即每个分支的感受野不同,从而具有解决目标多尺度的问题)。当以ResNet101为Backbone时,每个分支只有一个3x3的空洞卷积层,卷积核的个数等于 num_classes.
使用ResNet-101取代VGG16作为backbone后,mIOU由65.76%提升到68.72。MSC提升了2.55%,COCO预训练提升了2.01%,数据增强提升了1.6%,LargeFOV(3×3空洞卷积,rate=12)提升了0.6%,池化金字塔提升了0.8%,利用CRF后处理后达到了77.69%.
文中有给出两个模型,分别是 cascaded model 和 ASPP model ,在cascaded model中是没有使用ASPP模块的,在ASPP model中是没有使用cascaded blocks模块的。作者说ASPP model比cascaded model略好点。包括在Github上开源的一些代码,大部分也是用的ASPP model.
上图中,Block1,Block2,Block3,Block4是原始 ResNet 网络中的层结构,后面又 增加了额外的Block5,Block6,Block7 ,结构和Block4一样,即由三个残差结构构成。 如图(a)中所示,这么设计的原因是引入的stride使在更深的block中捕获long range information变得容易。比如图(a)中整个图像特征可以总结在最后一个小分辨率特征图中。但是连续的stride削弱细节信息,因此加入空洞卷积,并且根据output_stride调整空洞卷积的rate。 图(b)是论文中提出的 cascaded model ,但在Block4中将第一个残差结构里的3x3卷积层以及捷径分支上的1x1卷积层步距stride由2改成了1(即 不再进行下采样 ),并且所有残差结构里3x3的普通卷积层都 换成了空洞卷积层 .
从下表可以看出, 随着添加更多的block,模型性能会提高 ,但提高的幅度会变小。增加block7使得ResNet-50略微降低了性能,但仍提高了ResNet-101的性能.
下表为以ResNet-50为backbone使用7个block时不同output_stride下的mIOU。 当output_stride增大且应用空洞卷积时,mIOU从20.29%提升到75.18%,说明在语义分割中 使用更多block级联时空洞卷积是很有必要的 .
上面blocks中真正采用的膨胀系数应该是 图中的rate乘上这里的Multi-Grid参数 。下表是以cascaded model(ResNet101作为Backbone为例)为实验对象,研究采用不同数量的cascaded blocks模型以及cascaded blocks采用不同的Multi-Grid参数的效果。通过实验发现, 当采用三个额外的Block时(即额外添加Block5,Block6和Block7)将Multi-Grid设置成(1, 2, 1)效果最好.
。
虽然论文大篇幅的内容都在讲cascaded model以及对应的实验,但实际使用的最多的还是ASPP model,ASPP model结构如下图所示:
这里的ASPP结构有5个并行分支,分别是一个 1x1的卷积层 ,三个 3x3的膨胀卷积层 ,以及一个 全局平均池化层 (后面还跟有一个1x1的卷积层,然后通过双线性插值的方法还原回输入的W和H)。然后通过 Concat 的方式将这5个分支的输出进行拼接(沿着channels方向),最后在通过一个 1x1的卷积层进一步融合信息 .
在并行分支加入 image-level feature 是因为作者为了解决空洞卷积带来的一个问题:
随着空洞卷积的rate增大,卷积核 有效参数越来越少 。比如标准卷积conv3×3,rate=1,只有在feature map最外面一圈会有卷积核参数超出边界而无效,当rate变大,越来越多外圈的位置是有卷积核参数失效的,用极限思想思考一下,如果rate=size(feature map),那么每次卷积都是卷核中心对应的feature map像素点被计算了,卷积核参数也只有中心那个点没有失效, 退化成了1×1卷积核 .
为了解决这一问题,并且包含全局上下文信息,作者在并联结构中加入 image-level feature 。做法是先对输入的feature map全局平均池化(global average pooling),后接256通道的1×1卷积层,BN层,最后用户双线性插值的方法上采样到目标大小,即与ASPP输出的feature map尺寸相同.
下表是ASPP模型在output_stride=16的情况下,multi-grid和image-level features的效果。首先,在三个3×3卷积的并行分支中采用 rate=(6,12,18) ,然后block4中使用三种不同的multi-grid,可以看出 multi-grid= (1,2,4) 效果最好。 多加一个并行分支rate=24会使得mIOU 下降0.12% ,使用image-level features可以 提升0.63% .
ASPP模型的效果( 79.77% )好于Cascaded模型( 79.35% ),所以deeplab v3一般也是指ASPP的结构.
空间金字塔池化 模块网络能够通过不同空洞率的、具有不同感受野的空洞卷积或池化操作,编码多尺度上下文信息,而 编码器-解码器 结构可以通过逐步恢复空间信息来捕获更清晰的目标边界。deeplab v3+结合了这两种方法的优点。添加了解码器模块细化分割结果,特别是沿着对象边界。同时进一步探索了 Xception 模型,并将 深度可分离卷积 应用于空间空间金字塔池化和解码器模块,从而得到一个更快更强的编解码器网络.
。
上图中(a)是 深度卷积 ,单独的为每个channel进行卷积操作;(b)是 点卷积 用来融合channel间的信息。(a)和(b)就组成了 深度可分离卷积 。那如果将(a)中的标准卷积操作替换为 空洞卷积 ,如图(c)所示就实现了带有空洞卷积的深度可分离卷积,论文称之为 空洞可分离卷积 (atrous seperable convolution)。论文应用空洞可分离卷积极大的减少所提出模型的计算复杂度与此同时维持了与原模型相似或者更好的模型效果.
将Deeplab v3作为编码器模块,输出特征图包含256个通道数。DeepLab v3+以 Xception 作为骨干网络,并对其进行了微调(如下图所示):
DeepLabv3直接将特征上采样16倍, 无法成功地恢复目标分割的细节 。因此,作者提出了一个简单而有效的解码器模块,如下图红色框内。编码器特征首先提前上采样4倍,然后与网络主干中具有相同空间分辨率的相应低级特征连接。同时应用一个1×1的卷积调整通道数(256个),在连接之后,应用几个3×3卷积来细化特征,然后使用双线性插值,将特征上采样4倍.
评估decoder中1×1卷积的作用 。
使用resnet-101,Conv2的特征图和256个3×3卷积,分别将low level features减少到8,16,32,48,64通道数,其中 48通道效果更好 .
设计3×3卷积结构 。
concat特征图之后,利用 2个256通道的3×3卷积 效果比用1个和3个要好,减少通道数或者减小kernel size都会使得效果变差。下面的Conv3是指,将特征图上采样两倍和Conv3特征图concat,再与Conv2特征图concat.
当使用Xception作为DeepLabv3+的backbone时,为了比较精度和速度的变化,观察了mIOU以及Multiply-Adds。得益于空洞卷积,模型在训练时能够在不同分辨率下获取特征以及在模型验证时使用单一模型.
以resnet-101为骨干网络时mIOU为 80.57% ,相同策略下以Xception为骨干网络时为 81.63% ,Decoder提升了 0.29% .
。
。
参考 。
1. DeepLabV3网络简析 。
2. DeepLab系列(v1,v2,v3,v3+)总结 。
3. 我对DeepLab V3的理解(基于V1和V2) 。
4. DeepLab系列 。
5. DeepLabv3+ 。
最后此篇关于【论文笔记】DeepLab系列的文章就讲到这里了,如果你想了解更多关于【论文笔记】DeepLab系列的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
OkHttp的作用 OkHttp is an HTTP client。 如果是HTTP的方式想得到数据,就需要我们在页面上输入网址,如果网址没有问题,就有可能返回对应的String字符串,如果这个地址
Record 一个重要的字符串算法,这是第三次复习。 通过总结我认为之所以某个算法总是忘记,是因为大脑始终没有认可这种算法的逻辑(也就是脑回路)。 本篇主要讲解从KMP的应用场景,
SQL 注入基础 【若本文有问题请指正】 有回显 回显正常 基本步骤 1. 判断注入类型 数字型 or 字符型 数字型【示例】:
标签: #Prompt #LLM 创建时间:2023-04-28 17:05:45 链接: 课程(含JupyterNotebook) , 中文版 讲师: An
Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束。Swift采用了安全的编程模式和添加现代的功能来是的编程更加简单、灵活和有趣。界面则基于
红日靶机(一)笔记 概述 域渗透靶机,可以练习对域渗透的一些知识,主要还是要熟悉 powershell 语法,powershell 往往比 cmd 的命令行更加强大,而很多渗透开源的脚本都是 po
八大绩效域详细解析 18.1 干系人绩效域 跟干系人所有相关的活动. 一、预期目标 ①与干系人建立高效的工作关系 ②干系人认同项目目标 ③支持项目的干系人提高
18.3 开发方法和生命周期绩效域 跟开发方法,项目交付节奏和生命周期相关的活动和职能. 一、预期目标: ①开发方法与项目可交付物相符合; ②将项目交付与干系人价值紧密
18.7 度量绩效域 度量绩效域涉及评估项目绩效和采取应对措施相关的活动和职能度量是评估项目绩效,并采取适当的应对措施,以保持最佳项目绩效的过程。 一、 预期目标: ①对项目状况
pygraphviz 安装,windows系统: 正确的安装姿势: Prebuilt-Binaries/PyGraphviz at master · CristiFati/Prebuilt-Binar
今天给大家介绍IDEA开发工具如何配置devtools热加载工具。 1、devtools原理介绍 spring-boot-devtools是spring为开发者提供的热加载
一 什么是正则表达式 // 正则表达式(regular expression)是一个描述字符模式的对象; // JS定义RegExp类表示正则表达式; // String和RegExp都定义了使用
目前是2022-04-25 23:48:03,此篇博文分享到互联网上估计是1-2个月后的事了,此时的OpenCV3最新版是3.4.16 这里前提是gcc,g++,cmake都需要安装好。 没安装好的,
一、概述 1、Flink 是什么 Apache Flink is a framework and distributed processing engine for stateful comput
一、window 概述 Flink 通常处理流式、无限数据集的计算引擎,窗口是一种把无限流式数据集切割成有限的数据集进行计算。window窗口在Flink中极其重要。 二、window 类型 w
一、触发器(Trigger) 1.1、案例一 利用global window + trigger 计算单词出现三次统计一次(有点像CountWindow) 某台虚拟机或者mac 终端输入:nc -
一、时间语义 在Flink 中涉及到三个重要时间概念:EventTime、IngestionTime、ProcessingTime。 1.1、EventTime EventTime 表示日志事
一、概述 以wordcount为例,为什么每次输入数据,flink都能统计每个单词的总数呢?我们都没有显示保存每个单词的状态值,但是每来一条数据,都能计算单词的总数。事实上,flink在底层维护了每
一、概述 checkpoint机制是Flink可靠性的基石,可以保证Flink集群在某个算子因为某些原因(如 异常退出)出现故障时,能够将整个应用流图的状态恢复到故障之前的某一状态,保 证应用流图状
一、standalone 部署模式 1、下载安装包 下载安装包地址 有两种安装包类型: 第一种是带 Hadoop依赖的(整合YARN) 第二种是不带 Hadoop依赖的(Standalone模式)
我是一名优秀的程序员,十分优秀!