真正的最强ResNet改进,高性能"即插即用"金字塔卷积

编辑:Happy
首发:AIWalker公众号
链接:真正的最强ResNet改进,高性能"即插即用"金字塔卷积
日期:2020-06-24

标题&作者团队

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">标题&作者团队</figcaption>

【Happy导语】该文参考SIFT的多尺度特征提取思路设计了一种新颖的金字塔卷积,它不用于其他类似方法的关键点在于:卷积核的多尺度。同时为了尽可能的降低整体计算复杂度,在每个group内再一次进行组卷积,以确保金字塔卷积的计算量与标准卷积的计算量相当。笔者认为这篇论文思想简单,易于实现,效果惊人。推荐各位稍微花点时间了解一下这篇文章(注:亮点在Appendix部分),文末附文章、code以及预训练模型的下载方式。

Abstract

​ 该文提出一种金字塔卷积(Pyramidal Convolution, PyConv),它可以在多个滤波器尺度对输入进行处理。PyConv包含一个核金字塔,每一层包含不同类型的滤波器(滤波器的大小与深度可变,因此可以提取不同尺度的细节信息)。除了上述提到的可以提取多尺度信息外,相比标准卷积,PyConv实现高效,即不会提升额外的计算量与参数量。更进一步,它更为灵活并具有可扩展性,为不同的应用提升了更大的架构设计空间。

​ PyConv几乎可以对每个CV任务都有正面影响,作者基于PyConv对四大主流任务(图像分类、视频分类、目标检测以及语义分割)进行了架构设计。相比baseline,所提方法取得了一致性的性能提升。比如在图像分类任务上,所提50层模型优于ResNet152,同时具有更少的参数量(2.39x-fewer)、计算复杂度(2.52x-fewer)以及更少的层数和;在语义分割任务上,它在ADE20K数据集上指标达到SOTA(注:好像并不如ResNeSt的指标)。

Introduction

​ 首先,我们先来说明一下已有CNN网络架构在感受野擀面存在的两个问题:

  • 尽管当前主流CNN网络架构理论具有非常大的感受野(包含输入的大部分、甚至全含整个输入),但是有研究表明:实际CNN的感受野要比理论小的多(2.7x-less);
  • 已有的下采样方案(如池化、stride卷积)会造成信息的损失,进而影响模型的性能。

​ 然后,我们再来简单介绍一下实际场景中物体的尺度信息。以下图为例,包含室内与室外两个场景及其对应的语义标签。从图中可以看到:部分物体具有非常大的空间形式(比如建筑物、树以及沙发),部分物体具有非常小的空间表现形式(比如行人、书本等)。甚至同一物体具有非常大的可变的空间变现形式(比如室外场景中的汽车)。

image-20200624101435203

​ 上述这种空间变大巨大的表现形式是标准卷积所无法有效提取的,而CV的终极目标是:提取输入的多尺度信息。在这方面最为知名的当属SIFT,它可以从不同尺度提取特征描述算子。然而深度学习中的卷积却并未具有类似SIFT这种提取多尺度特征的能力。

​ 最后,我们再来说明一下作者为解决上述挑战而提出的几点创新:

  • (1) 作者引入一种金字塔卷积(PyConv),它包含不同尺度与深度的卷积核,进而确保了多尺度特征的提取;
  • (2) 作者为图像分类任务提出了两种网络架构并以极大优势优于baseline,同时具有更少的参数量与计算复杂度;
  • (3) 作者为语义分割任务提出了一个新的框架:一种新颖的Head用于对backbone提取的特征可以从局部到全局进行上下文信息特征提取,并在场景解析方面取得了SOTA性能;
  • (4) 作者基于PyConv而设计的网络架构在目标检测与视频分类任务上取得了性能的极大提升。

Pyramidal Convolution

​ 下图a给出了标准卷积的示意图,它包含单一类型的核:卷积核的空间分辨率为(应用最多的当属,即)而深度则等于输入特征通道数。那么执行个相同分辨率与深度卷积核得到个输出特征。因此,标准卷积的参数量与计算量分别为:,。

image-20200624102951586

​ 上图b给出了所提PyCOnv的示意图,它包含一个由n层不同类型核构成的金字塔。PyConv的目标是:在不提升计算复杂或参数量的前提下采用多尺度核对输入进行处理。PyConv每一层的核包含不同的空间尺寸(自下而上提升),随卷积核的提升而逐渐降低核的深度。

​ 为使PyConv在不同层使用不同深度的卷积核,需要将输入特征划分为不同的组并独立的进行卷积计算,称之为组卷积(见下图示例)。不知各位有没有觉得这个思想跟谷歌的MixNet思想非常相似,MixNet中也是采用了类似组卷积方式进行不同尺寸卷积核计算,文末附对比分析

image-20200624104547085

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624104547085</figcaption>

​ 但是,需要注意哈:组卷积中每组的通道数是相同的。MixNet中的也是相同的,而PyConv则是不相同的,可以说MixNet是PyConv的一个特例。每组特征通道数上的区别构成MixConv与PyConv的最大区别所在。

​ 假设PyConv的输入包含个通道数,PyConv每一层的卷积核尺寸为,深度为,对应的输出特征维度为。PyConv的参数量与计算复杂度如下:

其中。注:如果每一层输出的通道数相同,那么每一层的参数量与计算复杂度就会分布比较均匀。基于上述描述,可以看到:PyConv的计算复杂度与标准卷积相近。

​ 在实际应用时,作者为PyConv添加了额外的规则:每一层的通道数应当是相同的。这也就要求了PyConv的输入通道数应当是2的幂次。

​ 所提PyConv具有这样几个优点:

  • Multi-scale Processing. 这个特性是非常明显的,卷积核尺寸是多尺度的嘛;
  • Efficiency. PyConv可以通过并行的方式进行计算,因此计算高效(组卷积在GPU上的效率好像并不高,反而更适合CPU);
  • Flexibility. 由于具有与标准卷积相近的参数量和计算复杂度,那么用户可以更灵活的去调节PyConv的超参数(比如层数、不同层的输出通道数,不同深度设置不同的PyConv参数、不同层采用不同的组数)。注:这一点又跟MixNe相似了,MixNet通过NAS方式进行搜索的。

Classification

​ 下图给出了在图像分类任务中PyConv模块示意图,它是将PyConv嵌入到Bottleneck中,这也是目前卷积改进的一种常用思路,好像没什么值得进一步深入介绍的。

image-20200624113644079

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624113644079</figcaption>

​ 下表给出了基于上述模块构建网络的配置信息,包含PyConvResNet与PyConvHGResNet两种。配置信息还是挺详细的,好像并没有什么值得深入介绍的,表格一看就懂。PyConvHGResNet中不同层的分组数更高而已,其他基本相同。

image-20200624113906017

Semantic Segmentation

image-20200624114420506

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624114420506</figcaption>

​ 上图给出了所提PyConv在语义分割中的应用形式,作者所设计的Head同时进行局部与全局信息提取并采用了另外的一个模块进行信息集成,讲这种Head称之为PyConvPH。PyConvPH包含三个主要成分:

  • Local PyConv Block: 它主要用于小目标并进行多尺度细粒度特征提取,见上图a;
  • Global PyConv Block:它主要用于捕获场景的全局信息以及大尺度目标,见上图b。
  • Merge PyConv Block:它用于对全局与局部特征融合。

Experiments

​ “实践是检验真理的唯一标准”,为说明所提方法的有效性。作者图像分类、语义分割、目标检测等领域进行了一系列的实验。主要结果如下:

(1) 下图给出了ImageNet数据集上的指标(标准增广,未用到AutoAugment、CutMix等增广技术)。注:由于该方法主要是卷积的改进,故未与注意力等方法进行改进,加上注意力后是不是会超越ResNeSt呢?哈哈哈,甚是期待呀。

image-20200624115434586

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624115434586</figcaption>

(2) 下图给出了ADE20K数据集上的指标,这个在不考虑注意力等方法的前提应当是目前最佳了吧,如果加上注意力机制应该还有提升的空间,期待各位小伙伴们去改善提升哈。

image-20200624115927881

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624115927881</figcaption>

(3) 下面给出了在目标检测方面的应用与COCO数据及上的指标。更详细的实验分析,建议感兴趣的小伙伴去看原文,笔者不做过多翻译了。

image-20200624120118208

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624120118208</figcaption>

image-20200624120131293

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624120131293</figcaption>

Conclusion

​ 作者提出了一种金字塔卷积,它的每一层包含不同尺度的卷积核。PyConv极大的提升了不同视觉任务的性能,同时具有高效性与灵活性。PyConv是一种“即插即用”的模块,可以轻易嵌入到不同的网络架构与应用中,比如可以尝试将其应用到图像复原(超分、降噪、增强等等)应用。

Appendix

​ 多尺度卷积并不是什么非常新颖的东西,之前已有不少论文提出了各式各样的多尺度卷积。比如商汤提出的ScaleNet,其多尺度卷积示意图如下:

image-20200624140659196

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624140659196</figcaption>

再比如谷歌提出的MixConv,其多尺度卷积示意图如下:

image-20200624140732658

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624140732658</figcaption>

再再比如UIUC&字节跳动提出的SCN,其多尺度卷积示意图如下:

image-20200624140920393

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624140920393</figcaption>

再再再比如南开大学提出的Res2Net,其实也是一种多尺度卷积,结构如下:

image-20200624141153892

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624141153892</figcaption>

再再再再比如IBM提出的Big-LittleNet,结构如下:

image-20200624141444000

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624141444000</figcaption>

再再再再再比如Facebook提出的OctConv,不也是一种多尺度卷积吗?结构如下:

image-20200624141514762

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624141514762</figcaption>

再再再再再再比如...,打住!不再比如了,看到了这里。各位小伙伴有没有发现多尺度卷积真的好多好多,知名也挺多的,比如MixNet、Res2Net、OctConv以及Big-LittleNet。那么这篇论文提出的PyConv到底跟这里提到的几种多尺度卷积有什么区别呢?

首先,第一点区别:PyConv不是通过分辨率的下采样达到感受野提升的目的,而ScaleNet、OctNet、Big-LittleNet以及SCN都是通过调整特征的分辨率方式达到提升感受野目的。这一点是与MixConv是非常相似的:通过调整卷积核的尺寸达到多尺度特征提取的目的。

然后呢,第二点区别:PyConv每一组的输入为全部输入,每组输出不同尺度的特征;这一点是与ScaleNet非常相似,而MIxConv、OctConv以及Res2Net都涉及到了输入分组。

最后一点区别:PyConv为尽可能的降低计算量,在每一组内部还进行了分组卷积。经过前述一系列的组合确保了PyConv的计算量与标准卷积相当,但实际上推理速度还是标准卷积更快,三层时推理速度,比如下图配置时,pyconv在cpu上比标准卷积慢一倍之多,呵呵。

image-20200624145116482

<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">image-20200624145116482</figcaption>

笔者认为:PyConv的灵活性是非常巧妙的一点,它非常适合于NAS结合去搜索相关参数(层数、每一层的组卷积组数、每一层的卷积核尺寸等)。也许通过NAS搜索的网络会取得超越手工设计PyConvResNet的性能也说不定哦,这个说不定又可以水一篇paper了。O(∩_∩)O哈哈~

此外,除了PyConv与NAS结合外,还可以尝试将其嵌入到图像复原里面,虽然作者提到了会有提升,但不是还没有paper嘛,这是不是又可以水一篇paper了。O(∩_∩)O哈哈~

推荐阅读

  1. 比CNN更强有力的新型自注意力网络
  2. 关于ResNeSt的点滴疑惑与解读
  3. CVPR2020 | GCT会是SE的替代者吗?
  4. 南开大学程明明团队新作 | ResNet的又一改进:SCNet
  5. ICCV2019: HBONet

论文与代码下载方式

关注AIWalker公众并后台留言“PyConv”,即可获得下载链接。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352