本文旨在通过充分利用卷积探索一种更高效的编码空域特征的方式:通过组合convnet与vit的设计理念,本文利用卷积调制操作对自注意力进行了简化,进而构建了一种新的convnet架构conv2former。imagenet分类、coco检测以及ade20k分割任务上的实验结果表明:所提conv2former取得了优于主流convnet(如convnext)、vit(如swin transformer)的性能。
本文方案 上图给出了本文方案架构示意图,类似convnext、swint,conv2former采用了金字塔架构,即含四个阶段、四种不同尺寸的特征,相邻阶段之间通过patch embedding模块(其实就是一个卷积核与stride均为的卷积)进行特征空间分辨率与通道维度的恶变换。下表给出了不同大小conv2former的超参配置,
核心模块 上图给出了经典模块的架构示意图,从经典的残差模块到自注意力模块,再到新一代卷积模块。自注意力模块可以表示为如下形式:
尽管注意力可以更好的编码空域相关性,但其计算复杂性随n而爆炸性增长。
本文则旨在对自注意力进行简化:采用卷积特征对v进行调制。假设输入,所提卷积调制模块描述如下:
需要注意的是:上式中表示hadamard乘积。上述卷积调制模块使得每个位置的元素与其近邻相关,而通道间的信息聚合则可以通过线性层实现。下面给出了该核心模块的实现代码。
class convmod(nn.module): def __init__(self, dim): super().__init__() self.norm = layernorm(dim, eps=1e-6, data_format='channel_first') self.a = nn.sequential( nn.conv2d(dim, dim, 1), nn.gelu(), nn.conv2d(dim, dim, 11, padding=5, groups=dim) ) self.v = nn.conv2d(dim, dim, 1) self.proj = nn.conv2d(dim, dim, 1) def forward(self, x): b, c, h, w = x.shape x = self.norm(x) a = self.a(x) v = self.v(x) x = a * v x = self.proj(x) return x 微观设计理念 larger kernel than 如何更好的利用卷积对于cnn设计非常重要!自从vgg、resnet以来,卷积成为convnet的标准选择;xception引入了深度分离卷积打破了该局面;再后来,convnext表明卷积核从3提升到7可以进一步改善模型性能。然而,当不采用重参数而进一步提升核尺寸并不会带来性能性能提升,但会导致更高计算负担。
作者认为:convnext从大于卷积中受益极小的原因在于使用空域卷积的方式。对于conv2former,从到,伴随核尺寸的提升可以观察到conv2former性能一致提升。该现象不仅发生在conv2former-t(),同样在conv2former-b得到了体现()。考虑到模型效率,作者将默认尺寸设置为。
weighting strategy 正如前面图示可以看到:作者采用depthwise卷积的输出对特征v进行加权调制。需要注意的是,在hadamard乘积之前并未添加任务规范化层(如sigmoid、),而这是取得优异性能的重要因素(类似senet添加sigmoid会导致性能下降超0.5%)。
normalization and activations 对于规范化层,作者参考vit与convnext采用了layer normalization,而非卷积网络中常用的batch normalization;对于激活层,作者采用了gelu(作者发现,ln+gelu组合可以带来0.1%-0.2%的性能提升)。
本文实验 上述两表给出了imagenet分类任务上不同方案的性能对比,从中可以看到:
在tiny-size(<30m)方面,相比convnext-t与swint-t,conv2former-t分别取得了1.1%与1.7%的性能提升。值得称道的是,conv2former-n仅需15m参数量+2.2gflops取得了与swint-t(28m参数量+4.5gflops)相当的性能。
在base-size方面,相比convnext-b与swint-b,conv2former-b仍取得了0.6%与0.9%的性能提升。
相比其他主流模型,在相近大小下,所提conv2former同样表现更优。值得一提的是,相比efficientnet-b7,conv2former-b精度稍有(84.4% vs 84.3%),但计算量大幅减少(15g vs 37g)。
当采用imagenet-22k预训练后,conv2former的性能可以进一步提升,同时仍比其他方案更优。conv2former-l甚至取得了87.7% 的优异指标。
采用大核卷积是一种很直接的辅助cnn构建长程相关性的方法,但直接使用大核卷积使得所提模型难以优化。从上表可以看到:当不采用其他训练技术(如重参数、稀疏权值)时,conv2former采用时已可取得更好的性能;当采用更大的核时,conv2former取得了进一步的性能提升。
上表给出了coco检测任务上不同方案的性能对比,从中可以看到:
在tiny-size方面,相比swint-t与convnext-t,conv2former-t取得了2% 的检测指标提升,实例分割指标提升同样超过1%;
当采用cascade mask r-cnn框架时,conv2former仍具有超1%的性能提升。
当进一步增大模型时,性能优势则变得更为明显;
上表给出了ade20k分割任务上的性能对比,从中可以看到:
在不同尺度模型下,conv2former均具有比swint与convnext更优的性能;
相比convnext,在tiny尺寸方面性能提升1.3%miou,在base尺寸方面性能提升1.1%;
当进一步提升模型尺寸,conv2former-l取得了54.3%miou,明显优于swin-l与convnext-l。
一点疑惑解析 到这里,关于conv2former的介绍也就结束了。但是,心里仍有一点疑惑存在:conv2former与van的区别到底是什么呢?关于van的介绍可参考笔者之前的分享:《优于convnext,南开&清华开源基于大核注意力的van架构》。
先来看一下两者的定义,看上去两者并无本质上的区别(均为点乘操作),均为大核卷积注意力。
van:
conv2former
结合作者开源代码,笔者绘制了上图,左图为conv2former核心模块,右图为van核心模块。两者差别还是比较明显的!
虽然大核卷积注意力均是其核心,但conv2former延续了自注意力的设计范式,大核卷积注意力是其核心;而van则是采用传统bottleneck设计范式,大核卷积注意力的作用类似于se。
从大核卷积内在机理来看,conv2former仅考虑了的空域建模,而van则同时考虑了空域与通道两个维度;
在规范化层方面,conv2former采用了transformer一贯的layernorm,而van则采用了cnn一贯的batchnorm;
值得一提的是:两者在大核卷积注意力方面均未使用sigmoid激活函数。两者均发现:使用sigmoid激活会导致0.2%左右的性能下降。
为更好对比conv2former与van的性能,特汇总上表(注:gflops列仅汇总了)在image输入时的计算量net-1k上的指标进行了对比,可以看到:在同等参数量前提下,两者基本相当,差别仅在0.1%。此外,考虑到作者所提到的“ln+gelu的组合可以带来0.1%-0.2%的性能提升”,两者就算是打成平手了吧,哈哈。
关于脉冲重复频率和脉宽对脉冲相噪的介绍和应用
2019年一季度通信行业运行报告总结
双面无毛刺冲裁如何实现(一种消除毛刺的加工方法)
黑芝麻智能荣获2021年度高工智能汽车金球奖两项大奖
荣耀智慧屏X1系列斩获京东单品销量和销售额双冠军
用于视觉识别的Transformer风格的ConvNet
5种常见电子管前级制作电路
正弦交流电的基本概念 正弦交流电的三要素是什么
机器人控制系统特性和工作原理
受Intel处理器持续短缺 笔记本ODM厂商前途很不明朗
小米6难以生存,前有一加5,后有荣耀9,还有OPPOR11在瞎搞
电磁流量计中噪声的产生机理及对策
HC-SR505 PIR传感器的基本概念及应用电路
基于铂电阻的数字温度测量系统设计[图]
曝富士康内部员工盗卖iPhone零组件牟利 疑似举报人直接与苹果CEO库克进行联系
降噪蓝牙耳机什么牌子好?音质好、口碑好的降噪蓝牙耳机品牌推荐
线性判别分析LDA背后的数学原理
电路功能设计的实用技巧
深开鸿用三个关键词,为你解读《2023 OpenHarmony 年度运营报告》
《麻省理工科技评论》点赞百度飞桨:推动产业智能化大爆发