。。@[TOC]
概述
视觉任务理想的特征表示应该包含语义信息和空间信息,这样能更好地分类和定位。这样单独使用一层骨干网络特征层是明显不够的。已有多种网络模型使用组合、聚合的方式(FPN, DenseNet,…),但FPN结构会受浅层特征影响,DenseNet 增加内存消耗。本文关注于如何聚合不同阶段,不同块的特征得到更好的语义和空间信息,提出IDA迭代式深度聚合、HDA分层深度聚合,并在分类,语义分割、检测止比较分析其表现。
DLA 深层聚合
Iterative Deep Aggregation 迭代深度聚合
图a是没有聚合过程,图b是FPN结构 ,浅层特征对输出影响很大,相当于把网络输出“浅层化”了,这样相当于弱化深层特征的影响。图b是IDA聚合,特征从浅至深,逐渐聚合,相当于更改的FPN结构的Skip connect(不同块间连接)顺序。用公式表示 :
x
1
,
.
.
.
,
x
n
x_1,...,x_n
x1,...,xn是骨干网络各特征层。N表示 聚合块。
n
>
1
,
I
(
x
1
,
x
2
,
x
3
,
.
.
.
,
x
n
)
=
I
(
N
(
x
1
,
x
2
)
,
x
3
,
.
.
.
,
x
n
)
=
I
(
N
(
N
(
x
1
,
x
2
)
,
x
3
)
,
x
4
,
.
.
.
,
x
n
)
n > 1,I(x_1,x_2,x_3,...,x_n) = I(N(x_1,x_2),x_3,...,x_n) =I(N(N(x_1,x_2),x_3),x_4,...,x_n)
n>1,I(x1,x2,x3,...,xn)=I(N(x1,x2),x3,...,xn)=I(N(N(x1,x2),x3),x4,...,xn)从式中可以看到,聚合块是迭代使用骨干网络各特征层。
Hierarchical Deep aggregation 分层聚合
图d,e,f均是HDA聚合。IDA聚合了不同阶段的特征,但它还是序列的,HDA还聚合了不同层级特征信息,相当于IDA只是X轴方法上从浅到深聚合特征,而HDA增加了Y轴方向的层级聚合。图e相比图d,将图d骨干网络每两个断开,转而将前一个子树结构的输出下传至骨干网络,这样图d特征信息只能从下往上传播,而图e可以再将上层信息反馈至低层,另外,为了减少聚合节点,可以将同一深的聚合节点(图d蓝框)合并,这就变成图f结构。用公式表示 :
n表示深度,深度从图f左至右,从下至上。
HDA公式说明
n
=
1
,
T
1
(
x
)
=
N
(
L
1
1
(
x
)
,
L
2
1
(
x
)
n = 1,T_1(x) = N(L_1^1(x),L_2^1(x)
n=1,T1(x)=N(L11(x),L21(x)深度为1对应图f数字1下左边部分,对应网络输入和两个卷积块,网络输出则是聚合节点绿色块输出。
n
=
2
,
T
2
(
x
)
=
N
(
R
1
2
(
x
)
,
L
1
2
(
x
)
,
L
2
2
(
x
)
)
,
R
1
2
(
x
)
=
T
1
(
x
)
,
L
1
2
(
x
)
=
B
(
R
1
2
(
x
)
)
=
B
(
T
1
(
x
)
)
,
L
2
2
(
x
)
=
B
(
L
1
2
(
x
)
)
n = 2, T_2(x) = N(R_1^2(x),L_1^2(x),L_2^2(x)), R_1^2(x) = T_1(x),L_1^2(x) = B(R_1^2(x))=B( T_1(x)),L_2^2(x) = B(L_1^2(x))
n=2,T2(x)=N(R12(x),L12(x),L22(x)),R12(x)=T1(x),L12(x)=B(R12(x))=B(T1(x)),L22(x)=B(L12(x))
深度为2时,对应三个输入,前一个聚合节点输出
T
1
(
x
)
T_1(x)
T1(x)前一个聚合节点的卷积运算输出
L
1
2
(
x
)
=
B
(
R
1
2
(
x
)
)
=
B
(
T
1
(
x
)
)
L_1^2(x) = B(R_1^2(x))=B( T_1(x))
L12(x)=B(R12(x))=B(T1(x))和
L
2
2
(
x
)
L_2^2(x)
L22(x)。
n
=
3
,
T
3
(
x
)
=
N
(
R
2
3
(
x
)
,
R
1
3
(
x
)
,
L
1
3
(
x
)
,
L
2
3
(
x
)
)
,
R
2
3
(
x
)
=
T
2
(
x
)
n=3, T_3(x) = N(R_2^3(x),R_1^3(x),L_1^3(x), L_2^3(x)),R_2^3(x) = T_2(x)
n=3,T3(x)=N(R23(x),R13(x),L13(x),L23(x)),R23(x)=T2(x)
R
1
3
(
x
)
=
T
1
(
R
2
3
(
x
)
)
=
T
1
(
T
2
(
x
)
)
,
,
L
1
3
(
x
)
=
B
(
R
1
3
(
x
)
)
=
B
(
T
1
(
R
2
3
(
x
)
)
)
=
B
(
T
1
(
T
2
(
x
)
)
)
R_1^3(x) = T_1(R_2^3(x))=T_1(T_2(x)),,L_1^3(x)= B(R_1^3(x))=B(T_1(R_2^3(x)))=B(T_1(T_2(x)))
R13(x)=T1(R23(x))=T1(T2(x)),,L13(x)=B(R13(x))=B(T1(R23(x)))=B(T1(T2(x)))
深度为3时,网络有四个输入,对应关系如下图,红框是另一个 T 1 ( x ) T_1(x) T1(x)树。
只需找到对应深度树结构的输入与输出箭头应该就会明白了。
聚合节点
具体运算有两种
第二种有类似残差结构,论文指出当深度大于4时有帮助。
DLA
为分类任务和分割任务组合IDA,HDA设计了两个网络模型
上图红框是HDA结构,黄线IDA结构。
实验
只简单说明下分类网络表现
与ResNet相比,参数更少,性能更好。与ResneXt相比,表现相近,参数更少。与DenseNet 相比,内存消耗更少,因为DenseNet需要合并之前所有特征,而DLA输入块个数是卷积块个数的对数函数。