0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

华为诺亚提出VanillaNet:一种新视觉Backbone,极简且强大!

CVer 来源:极市平台 2023-05-26 16:13 次阅读

导读

简到极致、浅到极致!深度为6的网络即可取得76.36%@ImageNet的精度,深度为13的VanillaNet甚至取得了83.1%的惊人性能。

f98e52a0-fb8f-11ed-90ce-dac502259ad0.png

VanillaNet: the Power of Minimalism in Deep Learning

论文地址:https://arxiv.org/abs/2305.12972

代码地址:https://github.com/huawei-noah/VanillaNet

简而浅的直桶状网络具有非常优秀的推理效率,但其训练难度较高,难以取得优异性能。自AlexNet与VGG之后,鲜少有这种"直桶"状且性能优异的网络出现,其中的代表当属RepVGG与ParNet。

  • 通过引入结构重参数机制,RepVGG将"直桶状"网络重新焕发生机。但RepVGG的深度仍然有20+的深度,感兴趣的同学可以查看让你的ConvNet一卷到底,清华&旷视提出CNN设计新思路RepVGG
  • 后来,Princeton大学的邓嘉团队提出了深度为12的网络并在ImageNet数据集上达到了80.7%,但引入的注意力导致了额外的跳过连接,仍为达到极限推理效率。对ParNet一文感兴趣的同学可查阅12层也能媲美ResNet?邓嘉团队提出最新力作ParNet,ImageNet top1精度直冲80.7%

就在这样的环境下,简到极致、浅到极致的网络VanillaNet诞生了!!!深度为6的网络即可取得76.36%@ImageNet的精度,深度为13的VanillaNet甚至取得了83.1%的惊人性能。

网络架构

f9ae0bf4-fb8f-11ed-90ce-dac502259ad0.png

上图给出了本文所提VanillaNet架构示意图,有没有觉得简到极致了。

  • 对于Stem部分,采用卷积进行特征变换;
  • 对于body部分的每个stage,首先采用MaxPool进行特征下采样,然后采用一个进行特征处理;
  • 对于head部分,采用两个非线性层进行分类处理。

值得注意的是,(1) 每个stage只有一个卷积;(2)VanillaNet没有跳过连接。

尽管VanillaNet非常简单且足够浅,但其弱非线性能力会限制其性能。为此,作者从训练策略与激活函数两个维度来解决该问题。

训练策略

在训练阶段,通过引入更强的容量来提升模型性能是很常见的。由于更深的网络具有比浅层网络更强的非线性表达能力,作者提出在训练阶段采用深度训练技术为VanillaNet带来更强的性能

深度训练策略

对于激活函数,我们将其与Identity进行组合,公式如下:

其中,是用于平衡非线性能力的超参数。假设当前epoch与总训练Epoch分别表示为,那么定义。因此,在训练初始阶段,该修正版激活函数等价于原始激活函数,即,此时网络具有较强的非线性表达能力;伴随训练收敛,修正版激活函数退化为Identity,即,这就意味着两个卷积之间就不再有激活函数。

接下来,我们在说明一下如何合并两个卷积层(在DBB一文中已有了非常详细的公式介绍,而且对各种可折叠操作进行了非常详细的介绍)。

我们先来介绍BN与前接卷积之间的合并方式。假设表示卷积的参数,BN层的参数分别表示为,合并后的参数表示如下:

在完成卷积与BN合并后,我们介绍如何合并两个卷积。令分别表示输入与输出特征,卷积可表示如下:

基于上述卷积表示,我们可以将两个连续卷积表示如下:

因此,两个连续卷积可以进行合并且不会造成推理速度提升。

SIAF(Series Informed Activation Function)

尽管已有诸多非线性激活函数,如ReLU、PReLU、GeLU、Swish等,但这些它们主要聚焦于为深而复杂的网络带来性能提升。已有研究表明:简而浅网络的有限能力主要源于其弱非线性表达能力

事实上,有两种方式可用于改善神经网络的非线性表达能力:堆叠非线性激活层、提升激活函数的非线性表达能力。现有方案往往采用了前者,前者往往会导致更高的推理延迟;而本文则聚焦于后者,即改善激活函数的非线性表达能力。

改善激活函数非线性能力能力的最直接的一种方式为stacking,序列堆叠也是深层网络的核心。不同与此,作者提出了共生(concurrently)堆叠方式,可表示如下:

其中,n表示堆叠激活函数的数量,表示每个激活的scale与bias参数以避免简单的累加。通过该处理,激活函数的非线性表达能力得到了大幅提升。

为进一步丰富表达能力,参考BNET,作者为其引入了全局信息学习能力,此时激活函数表示如下:

可以看到,当时,。也就是说,所提激活函数是现有激活函数的一种广义扩展。因其推理高效性,作者采用ReLU作为基激活函数。

以卷积作为参考,作者进一步分析了所提激活函数的计算复杂度。卷积的计算复杂度可表示如下:

所提激活函数的计算复杂度表示为:

进而可以得出两者之间的计算复杂度比例关系如下:

以VanillaNet-B第4阶段为例,,该比例约为84,也就是说,所提激活函数的计算复杂度远小于卷积。

classactivation(nn.ReLU):
def__init__(self,dim,act_num=3,deploy=False):
super(activation,self).__init__()
self.deploy=deploy
self.weight=torch.nn.Parameter(torch.randn(dim,1,act_num*2+1,act_num*2+1))
self.bias=None
self.bn=nn.BatchNorm2d(dim,eps=1e-6)
self.dim=dim
self.act_num=act_num
weight_init.trunc_normal_(self.weight,std=.02)

defforward(self,x):
ifself.deploy:
returntorch.nn.functional.conv2d(
super(activation,self).forward(x),
self.weight,self.bias,padding=(self.act_num*2+1)//2,groups=self.dim)
else:
returnself.bn(torch.nn.functional.conv2d(
super(activation,self).forward(x),
self.weight,padding=(self.act_num*2+1)//2,groups=self.dim))

def_fuse_bn_tensor(self,weight,bn):
kernel=weight
running_mean=bn.running_mean
running_var=bn.running_var
gamma=bn.weight
beta=bn.bias
eps=bn.eps
std=(running_var+eps).sqrt()
t=(gamma/std).reshape(-1,1,1,1)
returnkernel*t,beta+(0-running_mean)*gamma/std

defswitch_to_deploy(self):
kernel,bias=self._fuse_bn_tensor(self.weight,self.bn)
self.weight.data=kernel
self.bias=torch.nn.Parameter(torch.zeros(self.dim))
self.bias.data=bias
self.__delattr__('bn')
self.deploy=True

本文实验

f9ce4536-fb8f-11ed-90ce-dac502259ad0.png

在过去几年里,研究人员往往假设计算资源非常有限,依托ARM/CPU平台,聚焦于减少网络的FLOPs与推理延迟。但是,伴随着AI芯片的研发进展,像自动驾驶等设备往往携带多个GPU以期获取实时反馈。因此,本文的延迟基于bs=1进行测试,而非常规的吞吐量。基于此配置,作者发现:模型的推理速度与FLOPs、Params的相关性极低。

  • 以MobileNetV3-Large为例,尽管其具有非常低的FLOPs,但其GPU延迟为7.83,远高于VanillaNet13。这种配置的推理速度与复杂度和层数强相关;
  • 对比ShuffleNetV2x1.5与ShuffleNetV2x2,尽管其参数量与FLOPs差别很大,但推理速度基本相同(7.23 vs 7.84);
  • 对比ResNet,VGGNet与VanillaNet可以看到:无额外分支与复杂模块的的VGGNet、VanillaNet具有更高的推理速度。

基于上述分析,作者提出了VanillaNet这样简到极致,无任何额外分支,层数更少的架构。如上表所示,

  • VanillaNet9取得了79.87%的精度,推理速度进而2.91ms,比ResNet50、ConvNeXtV2-P快50%;
  • 当扩展至VanillaNet13-1.5x后,甚至取得了83.11%的指标。

这是不是意味着在ImageNet分类任务上,我们并不需要深而复杂的网络呢???

f9f75020-fb8f-11ed-90ce-dac502259ad0.png

上图给出了不同架构深度与推理速度之间的关系图,可以看到:

  • 当bs=1时,推理速度与网络的深度强相关,而非参数量。这意味着:简而浅的网络具有巨大的实时处理潜力。
  • 在所有网络中,VanillaNet取得了最佳的速度-精度均衡。这进一步验证了:在计算资源充分时所提VanillaNet的优异性。
fa1cb464-fb8f-11ed-90ce-dac502259ad0.png

按照国际惯例,最后附上COCO检测任务上的对比,见上表。可以看到:所提VanillaNet取得了与ConvNeXt、Swin相当的性能。尽管VanillaNet的FLOPs与参数量更多,但其推理速度明显更快,进一步验证了VanillaNet在下游任务的有效性。

最后附上不同大小模型的配置信息,参考如下。

fa39d54e-fb8f-11ed-90ce-dac502259ad0.png

全文到此结束,更多消融实验建议查看原文。

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据集
    +关注

    关注

    4

    文章

    1208

    浏览量

    24697
  • cnn
    cnn
    +关注

    关注

    3

    文章

    352

    浏览量

    22213

原文标题:华为诺亚提出VanillaNet:一种新视觉Backbone,极简且强大!

文章出处:【微信号:CVer,微信公众号:CVer】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    还在为非标项目单独开发视觉软件?你out了!labview通用视觉框架,真香!

    labview视觉非标软件开发直以来面临的问题是:算法复用性差,界面臃肿,软件开发周期长。针对这个问题,构思了一种简易的通用视觉框架,课
    发表于 07-25 23:55

    为什么要提出一种数据隐藏新算法?

    为什么要提出一种数据隐藏新算法?DDE双重差值扩展算法包括哪些?
    发表于 04-20 07:05

    为什么要提出一种并行通信方法?并行通信方法有什么特点?

    为什么要提出一种并行通信方法?并行通信方法有什么特点?
    发表于 05-27 06:16

    求大佬分享一种基于毫米波雷达和机器视觉的前方车辆检测方法

    为研究夜间追尾事故中本车智能防撞预警方法,本文提出一种基于毫米波雷达和机器视觉的前方车辆检测方法。利用多传感器融合数据,检测前方车辆的距离、速度等。建立传感器之间转换关系,转换雷达目标的世界坐标到图像坐标。
    发表于 06-10 10:23

    一种结构化道路环境中的视觉导航系统详解

    根据结构化道路环境的特点提出一种将边沿检测和道路环境知识相结合的机器视觉算法 , 并结合基于行为响应的路径规划方法和智能预瞄控制方法 , 实现了套基本的机器人
    发表于 09-25 07:23

    诺亚音乐球与诺亚光感器的发布,智能音乐时代就在不远的将来

    诺亚音乐球和诺亚光感器分别适配电子钢琴和传统钢琴,它们与音乐智能管家-开心练APP搭配使用,是款科技感十足、功能强大的智能钢琴陪练系统。
    发表于 09-23 11:34 1076次阅读

    一种改进的视觉词袋方法

    视觉词袋模型广泛地应用于图像分类与图像检索等领域.在传统词袋模型中,视觉单词统计方法忽略了视觉词之间的空间信息以及分类对象形状信息。导致图像特征表示区分能力不足.提出
    发表于 12-28 17:36 3次下载

    华为发布“5G”建设策略_助力5G发展进入快车道

    华为在伦敦举办2019世界移动大会预沟通会,会上华为发布“5G”建设策略,从网络、自动化
    的头像 发表于 02-22 09:59 3630次阅读

    华为提出、智能、开放”站点策略,助力加速5G商用部署

    2019年上海世界移动大会期间,华为提出、智能、开放”站点建设策略,给出未来站点发展方向,让5G时代运营商建站更简单,助力加速5G商用部署。
    的头像 发表于 06-28 14:51 2784次阅读

    天津联通正在打造架构的5G共享网络

    回首过去年,天津联通在新旧交替的关键时刻迈出关键步,携手华为基于5G共建共享大战略,提出并开展“面向5G,化繁为简”的网络建设方案,打造
    发表于 11-25 10:58 1027次阅读

    创维A4演绎智能生活新潮流,免遥控的新智能时代

    现如今,大多数年轻人都在追求主义,主义也逐渐形成了一种潮流风格,然而当AI科技遇到
    的头像 发表于 03-05 14:43 2379次阅读

    CurcveLane-NAS:华为&中大提出一种结合NAS的曲线车道检测算法

    作者:SFXiang首发:AI算法修炼营 这篇文章是华为诺亚方舟实验室和中山大学开源的弯道车道线检测的工作,主要利用了NAS技术实现,使得车...
    发表于 01-26 18:16 1次下载
    CurcveLane-NAS:<b class='flag-5'>华为</b>&中大<b class='flag-5'>提出</b><b class='flag-5'>一种</b>结合NAS的曲线车道检测算法

    谷歌提出PaLI:一种多模态大模型,刷新多个任务SOTA!

    PaLI 使用单独 “Image-and-text to text” 接口执行很多图像、语言以及 "图像 + 语言" 任务。PaLI 的关键结构之是重复使用大型单模态 backbone 进行语言和视觉建模,以迁移现有能力并降低
    的头像 发表于 01-29 11:25 1493次阅读

    介绍一种新的全景视觉里程计框架PVO

    论文提出了PVO,这是一种新的全景视觉里程计框架,用于实现场景运动、几何和全景分割信息的更全面建模。
    的头像 发表于 05-09 16:51 1849次阅读
    介绍<b class='flag-5'>一种</b>新的全景<b class='flag-5'>视觉</b>里程计框架PVO

    基于M55H的定制化backbone模型AxeraSpine

    Backbone模型是各种视觉任务训练的基石,视觉任务模型的性能和模型的速度都受backbone模型的影响
    的头像 发表于 10-10 16:09 962次阅读
    基于M55H的定制化<b class='flag-5'>backbone</b>模型AxeraSpine