DenseNet的应用--语义分割--(DenseASPP )

简介: 转载自:https://blog.csdn.net/u011974639DenseASPPDenseASPP for Semantic Segmentation in Street Scenes原文地址:DenseASPP收录:CVPR2018(IEEE Conference on Computer Vision and Pattern Recognition)代码:PyTorch简介:将DeepLab系列中的ASPP和DenseNet中的密集连接相结合,构成了DenseASPP。

转载自:https://blog.csdn.net/u011974639

DenseASPP

DenseASPP for Semantic Segmentation in Street Scenes

原文地址:DenseASPP

收录:CVPR2018(IEEE Conference on Computer Vision and Pattern Recognition)

代码:

简介:

将DeepLab系列中的ASPP和DenseNet中的密集连接相结合,构成了DenseASPP。新的模块具有更大的接收野和更密集的采样点。在CityScapes上获得了state-of-the-art的标签。

关于扩张卷积和DenseNet的相关文章解读:


Abstract

使用扩张卷积(Atrous Convolution)能够在不牺牲特征空间分辨率的同时扩大特征接收野,DeepLab系列工作结合多尺度信息和扩张卷积的特点提出了ASPP模块,将不同扩张率的扩张卷积特征结合到一起。但论文认为ASPP模块在尺度轴上特征分辨率还不够密集,获取的接收野还不够大,为此提出了DenseASPP(Densely connected ASPP),以更密集的方式连接一组扩张卷积,获得了更大的范围的扩张率,并且更加密集。在没有显著增加模型大小的情况下,DenseASPP在CityScapes上达到了State-of-the-art的表现。


Introduction

ASPP模块

扩张卷积用于解决特征图分辨率和接收野之间的矛盾,ASPP利用了多尺度信息进一步强化了分割效果。DeepLabv2中的ASPP模块如下:

这里写图片描述

但是在自动驾驶等领域有高分辨率的输入,ASPP为了获取足够大的感受野需要足够大的扩张率,但随着扩张率增加(d>24),扩张卷积的衰退衰减无效了(DeepLabv3中分析过这个问题)。

DenseNet

DenseNet中用密集连接获得更加的性能:

这里写图片描述

但因为密集连接,特征的通道数会急速上升,DenseNet中使用1×11×1的卷积用于降低通道数,限制了模型大小和计算量,同样的,在本文中也使用了多个1×11×1卷积用于降低参数,限制计算量。

DenseASPP

论文提出的DenseASPP用于解决街道场景的尺度挑战,DenseASPP包含了一个基础网络,后面接了一个多级的扩张卷积层,如下图所示:

这里写图片描述

使用密集连接的方式将每个扩张卷积输出结合到一起,论文使用了较合理的扩张率(d<24),通过一系列的扩张卷积组合级联,后面的神经元会获得越来越大的感受野,同步也避免了过大扩张率的卷积导致的卷积退化。

并且通过一系列的扩张卷积组合,特征图上的神经元对多个尺度的语义信息做编码,不同的中间特征图对来自不同尺度的信息做编码,DenseASPP的最终输出特征不仅覆盖了大范围的语义信息,并且还以非常密集的方式覆盖了做了信息编码。

总结,论文的主要贡献在于:

  • DenseASPP能够生成覆盖非常大的范围的接收野特征
  • DenseASPP能够以非常密集的方式生成的特征

需要注意的是,上述两个特性不能通过简单的并行或级联堆叠扩张卷积实现。

Related Work

深度卷积神经网络为了获取更大感受野的特征会使用下采样(或池化),但这会降低特征的分辨率,虽然获得特征的内部不变性但丢失了很多细节。DeepLab系列使用了扩张卷积获取更大感受野的同时保持图像的分辨率,并进一步提出了ASPP模块结合了多尺度信息,与此类似有PSPNet结合了不同尺度的池化信息。论文提出的DenseASPP结合了平行和级联的扩张卷积优点,在更大范围内生成更多尺度的特征。

DenseASPP是DenseNet的特例,可以看做是所有扩张率设置为1,这分享了DenseNet的优点,包括缓解了梯度消失的问题和大幅度减少参数。


Dense Atrous Spatial Pyramid Pooling

在城市交通道路环境中,存在不同尺度的目标物,这需要捕获不同尺度的特征,DeepLabv3给出了两个策略:

  • backbone:级联的扩张卷积(这和DRN,HDC是一个思想),逐渐获取到大的感受野特征
  • ASPP:同一输入上并行的扩张卷积组合,将输出级联到一起

论文使用HK,d(x)HK,d(x)表示一个扩张卷积,ASPP表示如下: 

 
y=H3,6(x)+H3,12(x)+H3,18(x)+H3,24(x)y=H3,6(x)+H3,12(x)+H3,18(x)+H3,24(x)

 

Denser feature pyramid and larger receptive field

DenseASPP的结构如下:

这里写图片描述

可以看到扩张卷积级联起来,并且扩张率逐渐的增加,前面的层扩张率较低,后面的层扩张率较大。这和DenseNet的连接非常相似,DenseASPP的最终输出是由多扩张率、多尺度的扩张卷积生成的特征组成。可以将DenseASPP用如下公式表示: 

 
yl=HK,,dl([yl1,yl2,...,y0])yl=HK,,dl([yl−1,yl−2,...,y0])


其中dldl表示ll层的扩张率,[...][...]表示级联concat操作。[yl1,yl2,...,y0][yl−1,yl−2,...,y0]表示连接来自前面所有层的输出。与原先的ASPP模块相比,DenseASPP堆叠了所有扩张卷积并做了密集连接。这主要能带来2个收益:

 

  • 密集的特征金字塔(denser feature pyramid)
  • 更大的接收野(larger receptive field.)

Denser feature pyramid

扩张卷积能够增加卷积核的接收野,对于一个扩张率dd,卷积核大小为KK,接收野为: 

 
R=(d1)×(K1)+KR=(d−1)×(K−1)+K

例如一个3×33×3的卷积扩张卷积,扩张率为d=3d=3,则对应的接收野为7。

 

堆叠两个扩张卷积能够得到更大的接收野,假设我们有两个卷积大小为K1,K2K1,K2,则感受野为: 

 
K=K1+K21K=K1+K2−1

例如,一个尺寸为7和尺寸为13的卷积堆叠到一起,构成为接收野为19.

 

DenseASPP由包含扩张率为3,6,12,183,6,12,18的扩张卷积,每组数字的表示扩张率的组合,长度表示等效的卷积核大小,kk表示实际的接收野,如下所示:

这里写图片描述

  • K=3,d=3(31)×(31)+3=7(3−1)×(3−1)+3=7
  • K=3,d=6(61)×(31)+3=13(6−1)×(3−1)+3=13
  • K=3,d=3,d=6
    • 第一个扩张卷积:(31)×(31)+3=7(3−1)×(3−1)+3=7
    • 第二个扩张卷积:(61)×(31)+3=13(6−1)×(3−1)+3=13
    • 组合:7+131=197+13−1=19
  • K=3,d=12(121)×(31)+3=25(12−1)×(3−1)+3=25
  • K=3,d=3,127+251=317+25−1=31
  • K=3,d=3,6,127+13+252=437+13+25−2=43
  • K=3,d=3,6,12,187+13+25+373=797+13+25+37−3=79

显然,堆叠的扩张卷积下的DenseASPP的接收野是ASPP的一个超集(super set)。

更密集的采样

下图(a)显示了一个传统的一维扩张卷积,扩张率为6,接收野为13:

这里写图片描述

这么大的接收野条件下,只有3个像素被采样了用于计算,这样的情况下二维的情况下会更严重,虽然得到了更大的接收野,但是在计算的过程中丢弃了大量的信息。

上图(b)是扩张率3和扩张率为6的组合,和原先的扩张率为6的卷积(a)相比,(b)有7个像素参与了计算,计算更加密集。这在二维的情况下(c)有49个像素有助于计算。较大扩张率的卷积可从较小扩张率卷积中获得帮助,使得采样更为密集。

Larger receptive field

原先的ASPP是四个分支并行处理前馈,而DenseASPP模块通过了跳层共享了连接信息,大和小扩张率的卷积相互依赖,不仅构成了密集的特征金字塔,同时也获得了更大的接收野。

我们用RmaxRmax表示特征金字塔的最大接收野,函数RK,dRK,d表示卷积核大小为KK的扩张率为dd,则ASPP(6,12,18,24)的最大接收野为: 

 
Rmax=max[R3,6,R3,12,R3,18,R3,24]$=R3,24=51Rmax=max[R3,6,R3,12,R3,18,R3,24]$=R3,24=51

 

而相对的DenseASPP(6,12,18,24)的最大接收野为: 

 
Rmax=R3,6+R3,12+R3,18+R3,243=122Rmax=R3,6+R3,12+R3,18+R3,24−3=122


这样大的感受野能够为大型目标提供全局信息。

 

Model size control

和DenseNet类似,DenseASPP也在扩张卷积之前使用了1×11×1卷积用于减少特征图数,假设每个扩张卷积输出nn的特征图,DenseASPP有c0c0个特征图作为输入,在第ll的1×11×1的卷积之前的第ll个扩张卷积有clcl个输入特征图,则: 

 
cl=c0+n×(l1)cl=c0+n×(l−1)


在扩张卷积之前的1×11×1卷积将通道数降低为c0/2c0/2个通道,论文对DenseASPP中所有的扩张卷积层设置了n=c0/8n=c0/8。DenseASPP中所有参数可计算为:

 

 

 
S=l=1L[cl×12×c02+c02×K2×n]=l=1L[c02(c0+(l1)×c08)+c02×K2×c08]=c208(15+L+2K2)LS=∑l=1L[cl×12×c02+c02×K2×n]=∑l=1L[c02(c0+(l−1)×c08)+c02×K2×c08]=c028(15+L+2K2)L

 

其中LL表示扩张卷积的层数,KK表示卷积核大小。例如DenseNet121有512个通道,则nn设置为64。又因为每个扩张卷积之前都会有一个1×11×1的卷积层用于减少通道数到256。因此,DenseASPP输出具有832个通道,参数比相应的DenseNet121要小很多。


Experiment

论文在CityScapes上测试,评价标准为mIoU.

实现细节

论文在PyTorch上实现,基本主干是在ImageNet上预训练,论文移除了后面两个池化层和分类层,对后面的层使用可扩张率为2和4的扩张卷积(这和DRN的处理方式一样)。修改后的ConvNet的输出是原输入的1818,后面接DenseASPP然后上采样与ground truth做cross entropy。

项目 配置
平台 PyTorch
优化器 Adam
权重衰减 0.00001
学习率 初始是0.0003,采用的时poly策略,1epochmaxepoch0.91−epochmaxepoch0.9
数据增强 随机翻转,随机放缩[0.5,2][0.5,2],随机亮度抖动[-10,10],以及随机的512×512512×512的随机裁剪

所有的模型使用batch=8,跑了80个epoch,每轮的BN参数是统一更新的。

DenseASPP

论文使用了ResNet101为主干,配合DenseASPP(6,12,18,24)模块,在验证集上的结果如下,可以看到DenseASPP显著的提升了结果:

这里写图片描述

部分的可视化结果如下:

这里写图片描述

Detailed study on DenseASPP components

不同的DenseASPP设置得到的结果如下:

这里写图片描述

可以看到大概的趋势是随着接收野的增大,性能也提升。直到接收野到128后逐渐下降。

Comparing with state-of-the-art

论文在DenseNet161的基础上在精标签的数据上做训练,使用了多尺度{0.5,0.8,1.0,1.2,1.5,2.0}{0.5,0.8,1.0,1.2,1.5,2.0},与现有的先进模型对比,最终的结果如下:

这里写图片描述

各个分类结果如下:

这里写图片描述

Ablation Studies

论文研究了接收野大小和尺度/像素的采样率。

Feature similarities

可以看到下面两个例子,有足够的上下问才能够准确分类:

这里写图片描述

Visualization of receptive field

配合的移除后续池化层的可视化结果:

这里写图片描述

DenseASPP和ASPP对比的接收野如下:

这里写图片描述


Conclusion

DenseASPP能够以更密集的方式连接一组扩张卷积,可以在很大范围内有效的生成密集的空间采样和特征,在CityScapes上测试得到了state-of-the-art的结果。

目录
相关文章
|
机器学习/深度学习 Go 计算机视觉
YOLOv8改进 | Neck篇 | 利用ASF-YOLO改进特征融合层(适用于分割和目标检测)
YOLOv8改进 | Neck篇 | 利用ASF-YOLO改进特征融合层(适用于分割和目标检测)
917 1
|
计算机视觉
如何理解focal loss/GIOU(yolo改进损失函数)
如何理解focal loss/GIOU(yolo改进损失函数)
overleaf 插入图片,引用图片,图标标题Fig与文章引用Figure不一致解决
overleaf 插入图片,引用图片,图标标题Fig与文章引用Figure不一致解决
9185 0
|
12月前
|
机器学习/深度学习 数据可视化 测试技术
YOLO11实战:新颖的多尺度卷积注意力(MSCA)加在网络不同位置的涨点情况 | 创新点如何在自己数据集上高效涨点,解决不涨点掉点等问题
本文探讨了创新点在自定义数据集上表现不稳定的问题,分析了不同数据集和网络位置对创新效果的影响。通过在YOLO11的不同位置引入MSCAAttention模块,展示了三种不同的改进方案及其效果。实验结果显示,改进方案在mAP50指标上分别提升了至0.788、0.792和0.775。建议多尝试不同配置,找到最适合特定数据集的解决方案。
2623 0
|
机器学习/深度学习 数据可视化 Swift
CAS-ViT:用于高效移动应用的卷积加法自注意力视觉Transformer
这是8月份再arxiv上发布的新论文,我们下面一起来介绍这篇论文的重要贡献
533 10
CAS-ViT:用于高效移动应用的卷积加法自注意力视觉Transformer
|
机器学习/深度学习 编解码 计算机视觉
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)
2745 0
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)
|
机器学习/深度学习 计算机视觉 文件存储
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
5814 0
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
|
计算机视觉 网络架构
【YOLOv8改进 - 卷积Conv】DWRSeg:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
YOLO目标检测专栏探讨了YOLO的创新改进,如多尺度特征提取的DWRSeg网络。该网络通过区域残差化和语义残差化提升效率,使用DWR和SIR模块优化高层和低层特征。DWRSeg在Cityscapes和CamVid数据集上表现优秀,速度与准确性兼备。论文和代码已公开。核心代码展示了一个包含DWR模块的卷积层。更多配置详情见相关链接。
|
机器学习/深度学习 测试技术 网络架构
【YOLOv10改进-注意力机制】MSCAAttention多尺度卷积注意力
YOLOv10专栏介绍了一种新的卷积网络架构SegNeXt,它在语义分割任务中展现出优于Transformer模型的效率和效果。SegNeXt通过名为Multi-Scale Convolutional Attention (MSCA)的组件,结合局部信息聚合、多尺度上下文捕获和通道关系模拟,提升了性能。在多个数据集上,SegNeXt以较少参数实现了超过现有SOTA的性能,特别是在Pascal VOC 2012上,以1/10的参数量达到90.6%的mIoU。YOLOv10引入了MSCA模块,用于增强目标检测的上下文关注。相关代码和配置详情可在链接中找到。
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】EMA(Efficient Multi-Scale Attention):基于跨空间学习的高效多尺度注意力 (论文笔记+引入代码)
YOLO目标检测专栏介绍了创新的多尺度注意力模块EMA,它强化通道和空间信息处理,同时降低计算负担。EMA模块通过通道重塑和并行子网络优化特征表示,增强长距离依赖建模,在保持效率的同时提升模型性能。适用于图像分类和目标检测任务,尤其在YOLOv8中表现出色。代码实现和详细配置可在文中链接找到。