专栏首页GiantPandaCV卷积神经网络学习路线十四 | CVPR 2017 ResNeXt(ResNet进化版)

卷积神经网络学习路线十四 | CVPR 2017 ResNeXt(ResNet进化版)

前言

传统的卷积神经网络在提高性能时都是加深和加宽网络,但随着超参数数量的增加(如通道数,卷积核大小等)网络变得非常难调,且网络的计算开销和网络结构设计也变得越来越难,这一点我在介绍ResNet和DenseNet大型模型的时候已经提到过了。此外这些大模型针对性比较强,即在特定数据集上表现好的网络放到新数据集上就需要修改很多的参数才能工作良好,因此可扩展性比较一般。针对上述问题,Saining Xie, Ross Girshick, Kaiming He在CVPR2017上提出了ResNeXt。论文原文地址见附录。

贡献

  • 网络结构更加简单和模块化。
  • 大量减少了需要手动调节的超参数,扩展性更强。
  • 和ResNet相比,相同的参数个数,结果更好。具体来说,一个101层的ResNeXt 网络,和 200 层的 ResNet 准确度差不多,但是计算量只有后者的一半。

方法

网络结构

ResNeXt的网络结构如Table1所示:

Table 1的左边网络为ResNet-50,Table 1的右边网络为ResNeXt-50,括号代表残差块,括号外面的数字代表残差块的堆叠次数,而代表的ResNeXt引入的卷积分组数,同时我们可以看到这两个网络的FLOPs基本一致,也即是说模型复杂度一致。那ResNeXt有什么优点呢?这要先从分组来说起。

ResNeXt残差模块

分组数在论文中又被称为基数(cardinality),是对GoogleNet中分立合并思想和VGG/ResNet中堆叠思想的一种结合,ResNet的残差模块和ResNeXt的残差模块如Figure1所示。可以看到ResNeXt残差模块有32个基数(分组数),并且每个被聚合的拓扑结构就完全一样,这里是的组件,这也是和Inception结构的最大区别。

然后论文从理论角度来分析了一下这个ResNeXt残差模块,用全连接层举例来讲,全连接层的公式可以表示为:

在这里插入图片描述

然后Figure2就清晰的展示了全连接层分离变化合并(split-transform-merge)的处理过程:

而ResNeXt残差模块实际上就是将其中的替换成了更一般的函数,用公式表示如下:

其中就是上一节提到的分组数/基数,而代表的是相同的拓扑结构,在Figure1中就是1x1+3x3+1x1卷积堆叠。

等价模式

而Figure1中de ResNeXt残差模块有两种等价的模型,如Figure3所示。其中Figure3(a)前面已经讲过了。而Figure3(b)表示的是使用了两层卷积后concat,然后再卷积,比较类似于Inception-ResNet。Figure3(c)使用的是原始的组卷积,这个大家都比较熟悉了。论文指出这三种结构是完全等价的,并且最后做出来的实验结果完全一样,而在实验部分展示的是Figure3(c)的结果,因为Figure3(c)的结构比较简洁并且速度更快。

在这里插入图片描述

模型容量

下面的Table2说明了Figure1左右两个结构即ResNet结构和ResNeXt结构的参数量差不多,其中第二行的表示每个路径的中间channel数量,而第三行代表整个模块的宽度,是第一行和第二行的乘积。关于这两个模型容量也就是FLOPs的计算就不再赘述了,感兴趣去看一下公式(4),我大概贴一下。

FLOPS计算公式如下,可以看到FLOPS基本相等。

在这里插入图片描述

实验

在实验中ResNeXt相比于ResNet区别仅仅是其中的block,其他都不变,作者的实验结果如Figure5所示。可以看到相同层数的ResNet和ResNeXt的对比:

在这里插入图片描述

其中,表示的是有32个相同的路径,然后每个路径的宽度都为,即如Figure3展示的那样。可以看到ResNeXt和ResNet的参数复杂度差不多,但是其训练误差和测试误差都降低了。

ResNet和ResNeXt在ImageNet上的对比结果如Table3所示:

另外一个重要的实验结果如Table4所示,主要说明了增加基数/分组数和增加宽度和深度的区别。第一个是基准模型,增加深度和宽度分别是第三,第四个,可以看到Top1误差分别降低了0.3%和0.7%。同时第五个加倍了分组数Top1误差降低了1.3%,第六个则把分组数加到了64,Top1误差降低了1.6。由此可以看出,增加分组数比增加深度或宽度会更加有效。

在这里插入图片描述

结论

ResNeXt这篇论文提出了使用一种平行堆叠相同拓扑结构的残差模块来代替原始的残差模块,在不明显增加参数量的同时提升了模型的准确率,同时由于拓扑结构相同,需要自己调的超参数也减少因此更便于模型的扩展和移值。

附录

  • 论文原文:https://arxiv.org/pdf/1611.05431.pdf
  • 参考博客:https://blog.csdn.net/hejin_some/article/details/80743818

本文分享自微信公众号 - GiantPandaCV(BBuf233),作者:BBuf

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 当UNet遇见ResNet会发生什么?

    这篇文章主要以几篇经典的分割论文为切入点,浅谈一下当Unet遇见ResNet会发生什么?

    BBuf
  • 卷积神经网络学习路线(十一)| Stochastic Depth(随机深度网络)

    开篇的这张图代表ILSVRC历年的Top-5错误率,我会按照以上经典网络出现的时间顺序对他们进行介绍,同时穿插一些其他的经典CNN网络。

    BBuf
  • 目标检测算法之Anchor Free的起源:CVPR 2015 DenseBox

    刚刚过去的2019年出现了大量Anchor Free的工作,并且这个方向似乎大有可为,不少大佬都在研究这个方向。本着学习的态度,我将从Anchor Free的起...

    BBuf
  • 认识一下 Kubernetes

    dys
  • 制品库实践: Jenkins&Nexus&Artifactory集成

    本章我们主要讲述Jenkins与制品库nexus、artifactory集成,上传下载制品。

    泽阳
  • Mysql常用命令行总结

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

    大黄大黄大黄
  • 华山论剑,谈谈 GitHub 上那几个开源的前端编辑器

    当我们要开发一个博客、社区、论坛等内容生产平台的时候,为用户挑选一个 UI 优雅简洁、交互丝滑顺畅的文本编辑器总是必不可少的一步。

    GitHubDaily
  • 【百战GAN】GAN也可以拿来做图像分割,看起来效果还不错?

    大家好,欢迎来到专栏《百战GAN》,在这个专栏里,我们会进行算法的核心思想讲解,代码的详解,模型的训练和测试等内容。

    用户1508658
  • 数字化平台中的客户触点技术

    什么是客户触点技术 ? 图1 企业的线上线下多样化触点 随着科技的发展,客户与企业的互动过程中产生了线上线下非常多样化的触点。图1展示了一个啤酒企业在客户生命周...

    ThoughtWorks
  • rsync通过服务同步,Linux系统日志,screen工具

    rsync还可以通过服务的方式同步,这种方式首先需要开启一个服务,服务是cs架构的,也就是客户端和服务端。服务端要开启一个rsync服务,并且需要监听一个端口,...

    端碗吹水

扫码关注云+社区

领取腾讯云代金券