赶上最新的AI论文

The Bi-directional Convolution Pooling "LiftPool "来了!

图片识别

个要点
✔️ 提出双向汇集方法"LiftPool"
✔️ 基于经典信号处理理论,避免了汇集过程中的信息缺失
✔️ 
在图像分类和分割等各种任务中表现出卓越的性能和鲁棒性 

LiftPool: Bidirectional ConvNet Pooling
written by Jiaojiao ZhaoCees G. M. Snoek
(Submitted on 29 Sept 2020 (modified: 24 Feb 2021))
Comments: Accepted to ICLR2021.

Subjects: bidirectional, pooling

code: 

首先

CNN中的池化是一个非常重要的操作,因为它扩大了接受场,提高了对输入变化的鲁棒性。但是,通过池化对特征图进行下采样是一个损失大量信息的过程,而且损失的信息无法恢复。

在本文介绍的论文中,我们提出了LiftPool,这是一种双向的池化方法,解决了这种信息缺失和单向性的问题。

LiftPool既可以进行下池(LiftDownPool),也可以进行上池(LiftUpPool)。此外,它在图像分类和分割方面取得了卓越的性能,并且对输入损坏和扰动具有高度的鲁棒性。

技巧

LitPool由两部分组成:下池(LiftDownPool)和上池(LiftUpPool)。LiftPool的灵感来自于信号处理中的LiftScheme,其中LiftDownPool将输入分解为四个子带(LL、LH、HL、HH),而LiftUpPool则是根据这些子带进行适当的上采样。LiftUpPool旨在根据这些子带执行适当的上采样。

整体形象如下。

需要注意的是,当应用MaxPool→MaxUpPool时,无法正常还原原图,而当应用LiftDownPool→LiftUpPool时,可以正常还原原图。接下来,我们将分别讲解LiftDownPool和LiftUpPool。

LiftDownPool(一维案例)

举个例子,我们考虑一个一维信号。LiftDownPool将给定的信号$x=[x_1,x_2,x_3,...]进行分解。,x_n],x_n在R$中被分解成一个降频近似信号$s$和一个差分信号$d$。

$s,d=F(x)$。

这里,$F(⋅)$由三个函数$f_{split},f_{predict}和f_{update}$组成。在一维的情况下,LiftDownPool如下图(a)所示。

拆分、预测、更新的详细内容如下。

分体式

分割函数用$f_{split}表示:x mapsto (x^e,x^o)$。在这种情况下,给定信号$x$的偶数指数$x^e=[x_2,x_4,...]。,x_{2k}]$和奇数指数$x^o=[x_1,x_2,...。,x_{2k+1}]$,分为两组。

・预测

预测函数用$f_{predict}表示:(x^e,x^o) mapsto d$。在这种情况下,预测器$P(⋅)$,给定一个集合(如$x^e$),预测另一个集合($x^o$)。在这种情况下,差分信号$D$定义如下。

$d=x^o-P(x^e)$

在这种情况下,$d$是高频分量。

・更新

更新函数用$f_{update}表示:(x^e,d) \mapsto s$。它将$U(d)$加到输入信号$x$的下采样$x^e$上,并通过平滑生成近似信号$s$。

$s=x^e+U(d)$

在这种情况下,$S$是低频分量。另外,$P(⋅)$和$U(⋅)$由ReLU和卷积运算设计如下。

$P(-) = Conv(kernel=1,stride=1,groups=C) ◦ ReLU() ◦ Conv(kernel=K,stride=1,groups=C)$。

$U(-) = Conv(kernel=1,stride=1,groups=C) ◦ ReLU() ◦ Conv(kernel=K,stride=1,groups=C)$。

$K$表示内核大小,$C$表示输入通道的数量。在LiftPool中,这些函数由深度神经网络进行端到端训练。

然后将两个约束项$c_u,c_p$加入到最终的损失函数中,损失用以下公式表示

$L=L_{task}+\lambda_uc_u+\lambda_pc_p$

$L_task$代表一个特定任务的损失,如分类任务或分割任务。

$C_U$的定义是通过以下公式使$S$和$X^(o)$之间的L2正态最小化。

$c_u=||s-x^o|||_2=||U(d)+x^e-x^o||_2$。

$C_P$由下面的公式定义,以最小化$D$。

$c_p=||x^o-P(x^e)||_2$。

升降池(2D)

在二维的LiftDownPool中,我们首先在水平方向运行LiftDownPool-1D,得到水平低频近似值$s$和水平高频差值$d$。

然后,对这两个人分别进行垂直的LiftDownPool-1D。

其中,$s$分解为LL(垂直和水平低频分量)和LH(垂直低频和水平高频分量),$d$分解为HL(垂直高频和水平低频分量)和HH(垂直和水平高频分量),得到四个子带。实际获得的特征图的例子如下所示。

在这种情况下,LL表示低细节的平滑化特征图,LH、HL和HH分别表示沿水平、垂直和对角线方向的高细节特征图。

LiftDownPool可以泛化为任何$n$维信号。

LiftUpPool

再举个例子,考虑一个一维信号。

此时,LiftUpPool从$s,d$中产生一个上采样信号$x$。

$x=G(s,d)$

这里,G由三个函数$f_{update,f_{predict},f_{merge}}$组成。这些过程可以表示为$s,d maps to x^e,d \mapsto x^e,x^o \mapsto x$,更具体地说,如下所示(整体形象如上图(b)所示)。

$x^e=s-U(d)(更新)$

$x^o=d+P(x^e)(预测)$

$x=f_{merge}(x^e,x^o) (merge)$

上池已被用于分割、超分辨率和图像着色等任务中。然而,现有的大部分池化函数都是不可倒置的,导致在产生高分辨率输出时出现信息损失。

另一方面,LiftUpPool可以通过使用LiftDownPool生成的多个子带生成更详细的输出。

实验

在实验中,我们在图像分类任务中应用LiftDownPool,在语义分割任务中应用LiftDownPool和LiftUpPool来验证结果。

图像分类任务中的LiftPool

・灵活选择子带

二维图像中的LiftDownPool可以生成四个子带,每个子带都包含不同类型的信息,因此您可以灵活选择保留哪些子带作为池化的结果。

首先,在CIFAR-100上使用VGG13时,Top-1错误如下。

在图像分类方面,HL(垂直)子带表现出良好的性能。我们还发现,对所有子带进行求和和合并,可以在几乎不增加计算成本的情况下提高性能。此外,我们发现,对$c_u$和$c_p$的约束可以让我们减少误差。

・内核大小和LiftDownPool的影响

在下表中,我们展示了$P(⋅),U(⋅)$对内核大小的性能。

随着内核大小的增加,性能有逐渐提高的趋势,但当内核大小达到7时,性能并没有提高。基于这个结果,我们在后续的实验中,将内核大小设置为5,总共使用所有子带。接下来,LiftDownPool和其他池子(MaxPool、AveragePool、Skip等)的比较如下图所示。

正如你所看到的,LiftDownPool的表现优于其他池化方法。

・通用性

以下是在ImageNet数据集上应用LiftDownPool(以及各种池化方法)与ResNet18/50MobileNet-V2等骨干网的对比结果。

研究表明,LiftDownPool在所有骨干架构上的表现都优于其他方法。

・关于参数效率

在LiftPool中,$P,U$有一个一维卷积过程,它增加了一些可训练参数。为了研究这些参数的效率,我们在ImageNet上使用ResNet50将LiftPool与其他参数化池化方法(GFGPGaussPool进行比较,结果如下。

与MaxPool相比,在参数数量增加控制在3K左右的情况下,错误率降低了1.9%,可见LiftPool方案的有效性。

稳健性分析

・非分布式稳健性

一个好的下池法有望对扰动和噪声具有强大的抵抗力。这里,我们使用ResNet50来研究LiftDownPool对ImageNet-C上的损坏或ImageNet-P上的扰动的鲁棒性。目前的结果如下

LiftDownPool能有效降低mCE(平均腐蚀误差)和mFR(平均翻转率),并对腐蚀和噪声、模糊等扰动表现出很高的鲁棒性。

・分布转移稳健性

按照之前的工作,我们评估了网络在两种不同分布的情况下对同一图像输出相同分类的频率。在ImageNet上训练的各种骨干的结果如下。

与其他汇集方法相比,发现LiftDownPool(用五边形表示)可以提高准确性和一致性。

语义分割任务中的LiftPool(术语库)

对于PASCAL-VOC12上的语义分割,我们用LiftDown/UpPool替换SegNet中的池化层。在这种情况下,LiftDownPool只保留LL子带,LH/HL/HH子带用于上采样的特征图生成。为了比较,MaxUpPool和BlurPool的相同实验结果如下。

虽然参数数量的增加是轻微的,但我们看到性能比基线有明显的提高。实际生成的例子如下图所示。

此外,当我们将LiftDownPool应用于DeepLabV3Plus-ResNet50并运行语义分割任务时,结果如下。

即使在这种情况下,也都显示出明显高于基线,表明LiftPool在所有实验中的有效性。

摘要

本文介绍的LiftPool是一种双向池化,可以同时进行下池和上池。在提出的LiftPools中,下池化的LiftDownPool被证明可以提高图像分类性能和鲁棒性。

我们还表明,作为上池方法的LiftUpPool在细分领域的表现明显优于MaxUpPool。考虑到池化在CNN中的广泛应用,LiftPool的重要性非常高,它只需改变池化过程就能显著提高性能。

  • メルマガ登録(ver
  • ライター
  • エンジニア_大募集!!

如果您对文章内容有任何改进建议等,请通过 "联系我们 "表格与爱学网编辑部联系。
如果您能通过咨询表与我们联系,我们将非常感激。

联系我们