前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DLA:一种深度网络特征融合方法

DLA:一种深度网络特征融合方法

作者头像
CV君
发布2021-04-20 11:09:24
1.7K0
发布2021-04-20 11:09:24
举报

本文回顾一篇CVPR 2018 的论文 Deep Layer Aggregation,一种网络特征融合方法,谷歌学术显示目前该文已有398次引用,希望对研究网络基础结构设计的同学有启发。

论文:https://arxiv.org/pdf/1707.06484.pdf

代码:https://github.com/ucbdrive/dla

0.动机

CNN为多种计算机视觉任务提供了很好的解决方案。随着视觉任务对高性能算法更严格的追求,Backbone的设计成为了一个很重要的主题。

更多的非线性操作、更大的网络往往能提高模型性能,bottleneck、residual block、concatenative connection等模块的出现,进一步增强了网络的性能和可实现性,网络架构也从最初的串行连接逐渐演变成包含skip connection的形式。

作者认为当前流行的skip connection结构过于单一,因此设计了IDA(Iterative Deep Aggregation)和HDA(Hierarchical Deep Aggregation)两个结构,作为对skip connection的扩展,能够更好地融合语义和空间特征。

1.IDA(Iterative Deep Aggregation)

为便于叙述,作者将CNN架构进行模块化拆分,1个CNN由多个stage组成,1个stage由多个block组成,每个block包含多个layer,用下面的图标表示block和stage:

传统的串行连接的CNN如下图所示:

为了融合浅层的底层信息和深层的语义信息,引入从浅层向深层的skip connection,如下图所示:

在此基础上,作者提出了IDA(Iterative Deep Aggregation)模块,结构如下:

上图中绿色的方块称作“Aggregation Node”,Aggregation Node在特征由浅到深传播的同时聚集特征。

使用如下公式表示上图:

I\left(\mathbf{x}_{1}, \ldots, \mathbf{x}_{n}\right)=\left\{\begin{array}{ll} \mathbf{x}_{1} & \text { if } n=1 \\ I\left(N\left(\mathbf{x}_{1}, \mathbf{x}_{2}\right), \ldots, \mathbf{x}_{n}\right) & \text { otherwise } \end{array}\right.

在上面的公式中,表示整个IDA模块,表示Aggregation Node。例如表示一个输入为和的Aggregation Node,即图中最左侧的绿色方块。

从上图中也可以看出,IDA以stage为基本单位,IDA结构在多个stage外部增加连接和Aggregation Node。

2.HDA (Hierarchical Deep Aggregation)

IDA能够有效融合多个stage的特征,但是没有对stage内部多个block的特征进行融合。作者提出了HDA(Hierarchical Deep Aggregation)结构增强stage内部多个block的融合,如下图所示:

在上图结构的基础上,为了进一步对特征进行聚合,将Aggregation Node中的特征引回到Backbone中,使得当前block将前面聚合后的特征作为输入,如下图所示:

为提高计算效率,将上图中同一深度的Aggregation Node进行融合,融合后的结构如下图所示:

3.Aggregation Node

根据上文内容可以看出,在IDA结构中,Aggregation Node的输入为2个;在HDA结构中,Aggregation Node的输入为2个或更多。Aggregation Node将多个输入的特征进行融合,形成单一特征并输出。

可以使用任意网络结构构造Aggregation Node,为减少计算量,作者使用单个“卷积-BN-激活函数”结构来构造Aggregation Node,一般情况下使用卷积,表达式为:

上式中表示非线性激活函数,和表示卷积中的weight和bias。

此外,作者尝试在Aggregation Node中加入residual connection,表示如下:

4.Deep Layer Aggregation

将上述的IDA和HDA结合,形成下图所示的DLA(Deep Layer Aggregation)结构:

上图中每个红色框可以看作1个stage,使用IDA连接多个不同的stage,使用HDA融合stage内部的特征,IDA和HDA共享Aggregation Node。上图中包含4个stage,与ResNet类似,每个stage之间会进行降采样操作。这里使用kernel size为2、步长为2的max pooling进行降采样。

5.使用DLA构造CNN

DLA是一个通用的架构,可以很方便地融合到现有的CNN结构中来完成多种计算机视觉任务。

5.1 分类

使用类似ResNet的结构,以DLA为基础构造网络完成分类任务。作者构造了包含6个stage的CNN,除第1个stage外,每个stage都会对输入特征进行降采样操作,整个网络对输入图像进行32倍的降采样操作,CNN的最后是用于分类的global average pooling和softmax层。

为了和ResNet系列网络做性能对比,作者分别构造了与ResNet-34、ResNet-50和ResNet-101层数大致相等的多个网络结构,如下表所示:

上表中的Stage1和Stage2对应的数字表示feature map的通道数,Stage3-Stage6对应的2个数字分别代表aggregation depth和feature map通道数。名称包含“-C”的网络代表用于移动端部署的小网络,它们的参数只有1M个左右。

在ImageNet训练集上使用SGD方法训练上表中的网络和ResNet系列网络,在训练时对DLA和ResNet系列网络使用了同样的数据增强方法。

在ImageNet验证集上对训练好的网络进行评估,将图像resize,使得短边有256个像素,然后进行的central crop,作为网络输入。

测试结果如下图所示:

从上图可以看出,同等配置的DLA优于ResNet,同等配置的DLA-X优于ResNeXt。

将DLA系列中的小网络与SqueezeNet进行对比,实验结果如下:

上表中的FMAs表示fused multiply-adds。从上表中可以看出,同等参数量的DLA比SqueezeNet有更高的性能和更少的计算量。

5.2 语义分割

将DLA结构用于语义分割,需要在原来结构的基础上加入上采样模块。在传统上采样模块的基础上,加入IDA结构以提高性能,这里IDA中的Aggregation Node使用卷积。加入IDA后的上采样模块结构如下:

在上采样模块中,IDA融合了不同分辨率的特征。

使用Cityscapes训练集训练网络,使用random rotating和random scaling方法进行数据增强。训练完成后在Cityscapes验证集和测试集上进行测试,结果如下表所示:

从表中可以看出,DLA结构在语义分割任务中也有很好的性能。

6.总结

  • 提出了IDA和HDA,用来融合不同block和不同stage的特征,并将IDA和HDA融合为DLA模块,以DLA为基础构造CNN;
  • 通过实验证明了在分类和语义分割任务中,相比于同等规模的网络,使用DLA结构有明显的性能提升。

仅用于学习交流!

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我爱计算机视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.动机
  • 1.IDA(Iterative Deep Aggregation)
  • 2.HDA (Hierarchical Deep Aggregation)
  • 3.Aggregation Node
  • 4.Deep Layer Aggregation
  • 5.使用DLA构造CNN
  • 5.1 分类
  • 5.2 语义分割
  • 6.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档