论文地址:链接

一、 介绍

由于输入图片的尺寸变化以及感兴趣目标的尺寸变化,有效感受野(ERF)根据不同任务进行调整是很重要的。即使在相同的任务中,对于一个具体的卷积层ERF的优化也是不同的,不同的有效的搜索算法适用于不同的任务。

目前大多数的方法直接在相对粗糙的搜索空间中对骨架网络架构进行搜索,忽略了膨胀卷积的精细内部结构,膨胀卷积的卷积核是一个用于调整不同任务ERF的高度有效的超参。

为此,作者提出了一个膨胀卷积的新变体Inception卷积,它包含了尽可能多的膨胀模式,如下图1。Inception卷积中,所有通道,卷积层,轴(维度)都被独立定义。

虽然Inception提供了密集的ERF搜索可能,但是如何进行搜索,还需要被讨论。这里作者首先参考了神经架构搜索(NAS)中的进行自动优化操作的增值工作DARTS和one-shot(SPOS)。但是这两个搜索方法并不适合本任务。

在DARTS中,一个块中的所有操作在训练时必须全部运用,以便相互注意从而找到最优值,但是在Inception卷积层(块)中,膨胀模式的数量太大,对于两个通道,如果有四个不同的选择,那么最终就会产生16中不同的结果,显然这对GPU和算力是一个巨大的要求。

SPOS训练时会对操作序列进行采样,但是在Inception卷积块中的搜索空间是及其巨大的,无法定义一个公平的采样策略满足操作。

为此作者提出了自己的搜索策略:有效膨胀优化算法EDO。EDO中,超网中的每一层都是一个标准的卷积操作,其卷积核包括所有的可能膨胀模式。对于超网进行预训练后,通过解决统计优化问题,为每个卷积层中的每个通道选择膨胀模式。对于每一层,通过最小化原始卷积层和用所选择的扩张模式裁剪出的扩张卷积的输出期望之间的L1误差,用预先训练的权值来解决选择问题。最终搜索代价几乎为0,唯一的计算量就是对训练好的权重的统计,相较于之前的两种搜索算法,该方法更加适用这个任务,实验也证明了其有效性。

二、 方法

首先谈一个神经架构搜索NAS技术,这是一个自定进行网络结构设计的过程。早期的搜索过程由于要计算每个候选可能,因此计算代价是昂贵的,目前以及有很多方法有所进展,包括在膨胀卷积方面的相关工作。但是由于搜索空间的局限性,无法处理一个卷积层中的极大量的可能操作。

1. 问题表述

一个Inception卷积层对于每个通道都有二维的独立膨胀参数,表示为:
d = { d x i , d y i ∣ d x i , d y i ∈ 1 , 2 , . . , d max  , i ∈ { 1 , 2 , … , C out  } } (1) \boldsymbol{d}=\left\{\boldsymbol{d}_{x}^{i}, \boldsymbol{d}_{y}^{i} \mid \boldsymbol{d}_{x}^{i}, \boldsymbol{d}_{y}^{i} \in 1,2, . ., d_{\text {max }}, i \in\left\{1,2, \ldots, C^{\text {out }}\right\}\right\} \tag{1} d={ dxi,dyidxi,dyi1,2,..,dmax ,i{ 1,2,,Cout }}(1)
d x i \boldsymbol{d}^i_x dxi d y i \boldsymbol{d}^i_y dyi是过滤器(卷积) x x x y y y轴在第 i i i个通道的扩张倍率,范围为1到 d m a x d_{max} dmax C o u t C_{out} Cout表示输出通道数。一个单独的Inception卷积层的候选结构数目为 d m a x 2 C o u t d_{max}^{2C_{out}} dmax2Cout。本论文的一个目的就是开发一个算法可以通道对集合 d \boldsymbol{d} d的搜索获得最佳感受野。

2. 解决

尽管NAS是在具体搜索空间中获得有效结构的一种方法,但是在Inception卷积块中存在 d m a x 2 d^2_{max} dmax2种膨胀模式和 d m a x 2 C o u t d_{max}^{2C_{out}} dmax2Cout个候选,显然NAS的两种主要方法DARTS和SPOS都不适合。

回想DARTS使用两个独立的数据集分别训练结构权重和操作权重,然后使用结构权重来表示相应的操作的重要程度,虽然所得到的体系结构权重可能在操作之间均匀分布,但以这种方式获得的操作仍然包含一个良好的网络,这显示在一个预训练的超网中的权重信息具有指导操作的选择的作用。

顺着这个思想,作者提出了EDO,将问题转变为一个基于预训练的超网的统计优化问题。

超网
给定一个网络体系结构和它需要适应的任务,超网会保留了它的体系结构,同时改变了内核的大小以覆盖所有候选的扩展模式。例如,一个卷积层的内核大小为 2 k + 1 2k+1 2k+1,在超网中就使用 2 k d m a x + 1 2kd_{max}+1 2kdmax+1作为所有候选膨胀模式的最大宽和高,超网在给定的任务上进行预训练。

PS:超网在任务上进行预训练的一个作用就是避免每次选择该子网加入到预测结构中时,仍需要重新训练参数。可以直接将预训练的参数一起加入到预测结构中,节约了重新训练的时间,加快网络搜索时间。但是虽然速度快,但是很难对所有模块进行充分的训练,因此不一定能获得真正的子网排序关系。

统计优化
对于每个卷积层的权重为 W ∈ R C o u t × C i n × ( 2 k d max ⁡ + 1 ) × ( 2 k d max ⁡ + 1 ) \boldsymbol{W} \in R^{C_{o u t} \times C_{i n} \times\left(2 k d_{\max }+1\right) \times\left(2 k d_{\max }+1\right)} WRCout×Cin×(2kdmax+1)×(2kdmax+1),定义 W i ∈ R C i n × ( 2 k d max ⁡ + 1 ) × ( 2 k d max ⁡ + 1 ) \boldsymbol{W^i} \in R^{C_{in} \times\left(2 k d_{\max }+1\right) \times\left(2 k d_{\max }+1\right)} WiRCin×(2kdmax+1)×(2kdmax+1)为在超网中扩展的第 i i i个卷积滤波器的权值。定义 W d x i , d y i i ∈ R C i n × ( 2 k + 1 ) × ( 2 k + 1 ) \boldsymbol{W}_{\boldsymbol{d}_{x}^{i}, \boldsymbol{d}_{y}^{i}}^{i} \in R^{C_{i n} \times(2 k+1) \times(2 k+1)} Wdxi,dyiiRCin×(2k+1)×(2k+1) 从 d x i 从d_x^i dxi d y i d_y^i dyi决定的在 W i \boldsymbol{W}^i Wi上的位置裁剪的膨胀卷积过滤器。大概如下图的意思。

将膨胀选择看作是一个优化问题,使得原本预训练获得的拓展权重 W \boldsymbol{W} W和裁剪获得的权重 W d \boldsymbol{W_d} Wd之间的 L 1 L_1 L1误差最小化: min ⁡ d ∥ E [ W X ] − E [ W d X ] ∥ 1 (2) \min _{\boldsymbol{d}}\left\|E[\boldsymbol{W} \boldsymbol{X}]-E\left[\boldsymbol{W}_{\boldsymbol{d}} \boldsymbol{X}\right]\right\|_{1}\tag{2} dminE[WX]E[WdX]1(2)

 s.t.  d x i , d y i ∈ { 0 , 1 , … , d max ⁡ } . (3) \text { s.t. } \boldsymbol{d}_{x}^{i}, \boldsymbol{d}_{y}^{i} \in\left\{0,1, \ldots, d_{\max }\right\} .\tag{3}  s.t. dxi,dyi{ 0,1,,dmax}.(3)
X ∈ R B × C i n × H × W \boldsymbol X\in R^{B\times C_{in}\times H \times W} XRB×Cin×H×W为这个卷积层的输入,其中 B B B为batchsize, H , W H,W H,W为宽和高。 W \boldsymbol{W} W W d \boldsymbol{W_d} Wd都独立于 X \boldsymbol X X,优化进一步表达为: ∥ E [ W X ] − E [ W d X ] ∥ 1 = ∥ W E [ X ] − W d E [ X ] ∥ 1 (4) \left\|E[\boldsymbol{W} \boldsymbol{X}]-E\left[\boldsymbol{W}_{\boldsymbol{d}} \boldsymbol{X}\right]\right\|_{1}=\left\|\boldsymbol{W} E[\boldsymbol{X}]-\boldsymbol{W}_{\boldsymbol{d}} E[\boldsymbol{X}]\right\|_{1} \tag{4} E[WX]E[WdX]1=WE[X]WdE[X]1(4)

= ∥ ( W − W d ) E [ X ] ∥ 1 (5) =\left\|\left(\boldsymbol{W}-\boldsymbol{W}_{\boldsymbol{d}}\right) E[\boldsymbol{X}]\right\|_{1}\tag{5} =(WWd)E[X]1(5)

要准确地解决上述问题,需要对整个训练数据集的 X \boldsymbol X X求平均值。由于BN层在CNN中是常见的,于是假设 X \boldsymbol X X已经通过了一个BN操作,且每个通道的 γ γ γ β β β相同,由于H,W的平移不变性和B的置换不变性,则认为 X \boldsymbol X X的任何位置都分布相同,则目标公式进一步简化为:
∥ ( W − W d ) E [ X ] ∥ 1 = E ∥ ( W − W d ) 1 ∥ 1 (6) \left\|\left(\boldsymbol{W}-\boldsymbol{W}_{\boldsymbol{d}}\right) E[\boldsymbol{X}]\right\|_{1}=E\left\|\left(\boldsymbol{W}-\boldsymbol{W}_{\boldsymbol{d}}\right) \mathbf{1}\right\|_{1}\tag{6} (WWd)E[X]1=E(WWd)11(6)
= E ∑ 1 C o u t ∥ ( W i − W d x i , d y i i ) 1 ∥ 1 (7) =E \sum_{1}^{C^{o u t}}\left\|\left(\boldsymbol{W}^{i}-\boldsymbol{W}_{\boldsymbol{d}_{x}^{i}, \boldsymbol{d}_{y}^{i}}^{i}\right) \mathbf{1}\right\|_{1} \tag{7} =E1Cout(WiWdxi,dyii)11(7)

E是 X \boldsymbol X X中所有位置的期望值, 1 \boldsymbol 1 1为和 X \boldsymbol X X等尺寸的全1矩阵,如此可以通过公式7遍历每个过滤器 W i \boldsymbol W^i Wi的所有膨胀模式 ( d x i , d y i ) (\boldsymbol d^i_x,\boldsymbol d^i_y) (dxi,dyi)获得一个具体卷积的膨胀选择 d \boldsymbol d d

三、 实验

1.图像识别

以下的baseline在代码相同的情况下,使用了IC-Net进行处理后在ImageNet top-1/top-5的正确率对比:

2.目标检测

超网最大卷积核设置为9,即最大膨胀倍率 d m a x d_{max} dmax为4,使用IC-NET代替了检测器中的所有 3 × 3 3\times3 3×3卷积层,FPN保持标准卷积,在不同类型的检测器上进行了实验对比:

3. 实例分割

超网最大卷积核设置为9

4. 拥挤人群检测

5. 超网初始核

初始核越大,那么决定了超网的膨胀组合越多,但是同时带来的计算量也会增大,实验得出卷积核从3增长到13,COCO的AP指标不断增加,表明IC-Net的潜力,也就是将上面的实验搜索核大小从9增加到13指标仍会增加。

多块消融实验:

四、 总结

该论文提出了Inception卷积块,可以使用提出的EDO算法进行通道级别的膨胀参数的搜索。该方法让卷积操作对不同通道进行了有效的感受野分配,最终通过卷积将这些不同尺度的感受野收集的信息进行聚合。并且作者也证明了该方法具有很强的移植性,对于CNN网络中的卷积操作可以很方便的进行替换。