来源:晓飞的算法工程笔记 公众号,转载请注明出处

论文: CNN Mixture-of-Depths

创新点


  • 提出新的卷积轻量化结构MoD,在卷积块(Conv-Blocks)内通过动态选择特征图中的关键通道进行集中处理,提高效率。
  • CNN MoD保留了静态计算图,这提高了训练和推理的时间效率,而且不需要定制的CUDA内核、额外的损失函数或微调。
  • 通过将MoD与标准卷积交替使用,能够实现相等性能下的推理加速或相等推理速度下的性能提高。

CNN Mixture-of-Depths


MoD由三个主要组件组成:

  1. 通道选择器:根据输入特征图与当前预测的相关性选择前 \(k\) 个最重要的通道。
  2. 卷积快:从现有架构(如ResNetsConvNext)中进行改编,旨在增强选定通道的特征。
  3. 融合算子:将处理后的通道加到特征图的前 \(k\) 个通道上。

通道选择器

通道选择器主要分为两个阶段:

  1. 自适应通道重要性计算:通过自适应平均池化压缩输入特征图,随后通过一个具有瓶颈设计的两层全连接网络进行处理,设定 \(r = 16\) ,最后通过sigmoid激活函数生成一个分数向量 \(\mathbf{s} \in \mathbb{R}^C\) ,量化了相应通道的重要性。
  2. Top-k通道选择与路由:利用重要性分数 \(\mathbf{s}\) 选择前 \(k\) 个通道输入卷积块处理,原始特征图 \(X\) 则直接传递融合算子。

这个选择过程使得通道选择器能够高效地管理计算资源,同时保持固定的计算图,从而实现动态选择要处理的通道。

动态通道处理

每个卷积块中处理的通道数量 \(k\) 由公式 \(k = \lfloor \frac{C}{c} \rfloor\) 决定,其中 \(C\) 表示该块的总输入通道数, \(c\) 是一个超参数,用于确定通道减少的程度。例如在一个标准的ResNet瓶颈块中,通常处理1024个通道,设置 \(c = 64\) 会将处理减少到仅16个通道( \(k = 16\) )。

通过实验发现,超参数 \(c\) 应设置为第一卷积块中输入通道的最大数量,并在整个CNN中的每个MoD块中保持相同。例如,ResNet的 \(c = 64\) MobileNetV2的 \(c = 16\) 。

卷积块的最后一步涉及将处理后的通道与从自适应通道重要性计算中获得的重要性评分相乘,确保在训练过程中梯度能够有效地传递回通道选择器,这是优化选择机制所必需的。

融合机制

将处理后的特征添加到 \(X\) 的前 \(k\) 个通道中,保留其余未处理的通道。融合后的特征图 \(\bar{X}\) 具有与原始输入 \(X\) 相同的通道数 \(C\) ,从而保留了后续层所需的维度。

论文在实验中测试了多种将处理后的通道重新集成到特征图 \(X\) 中的策略,包括将处理后的通道添加回其原始位置,但结果并未显示任何改进。实验表明,始终在特征图中使用相同位置来处理信息似乎是有益的,将处理后的通道添加到后 \(k\) 个通道中得到了与添加到前 \(k\) 个通道时相当的结果。

集成到CNN结构

MoD可以集成到各种CNN架构中,例如ResNetsConvNextVGGMobileNetV2,这些架构被组织成包含多个相同类型(即输出通道数相同)的卷积块(Conv-Blocks)的模块。

实验表明,交替使用MoD块和标准卷积块在每个模块中是一种最有效的集成方法。需要注意的是,MoD块替换每第二个卷积块,从而保持原始架构的深度(例如,ResNet50中的50层)。每个模块以一个标准块开始,例如BasicBlock,然后是一个MoD块。

这种交替模式表明,网络能够处理显著的容量减少,只要定期进行全容量卷积。此外,该方法确保MoD块不会干扰通常发生在每个模块的第一个块中的空间维度缩减卷积。

主要实验






如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

MoD:轻量化、高效、强大的新型卷积结构 | ACCV'24的更多相关文章

  1. 卷积神经网络学习笔记——轻量化网络MobileNet系列(V1,V2,V3)

    完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和Mo ...

  2. 轻量化卷积神经网络MobileNet论文详解(V1&V2)

    本文是 Google 团队在 MobileNet 基础上提出的 MobileNetV2,其同样是一个轻量化卷积神经网络.目标主要是在提升现有算法的精度的同时也提升速度,以便加速深度网络在移动端的应用.

  3. 纵览轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception

    近年提出的四个轻量化模型进行学习和对比,四个模型分别是:SqueezeNet.MobileNet.ShuffleNet.Xception. SqueezeNet https://arxiv.org/p ...

  4. CondenseNet:可学习分组卷积,原作对DenseNet的轻量化改造 | CVPR 2018

    CondenseNet特点在于可学习分组卷积的提出,结合训练过程进行剪枝,不仅能准确地剪枝,还能继续训练,使网络权重更平滑,是个很不错的工作   来源:晓飞的算法工程笔记 公众号 论文:Neural ...

  5. EfficientFormer:轻量化ViT Backbone

    论文:<EfficientFormer: Vision Transformers at MobileNet Speed > Vision Transformers (ViT) 在计算机视觉 ...

  6. 轻量化模型之MobileNet系列

    自 2012 年 AlexNet 以来,卷积神经网络在图像分类.目标检测.语义分割等领域获得广泛应用.随着性能要求越来越高,AlexNet 已经无法满足大家的需求,于是乎各路大牛纷纷提出性能更优越的 ...

  7. 轻量化模型之SqueezeNet

    自 2012 年 AlexNet 以来,卷积神经网络在图像分类.目标检测.语义分割等领域获得广泛应用.随着性能要求越来越高,AlexNet 已经无法满足大家的需求,于是乎各路大牛纷纷提出性能更优越的 ...

  8. 56 Marvin: 一个支持GPU加速、且不依赖其他库(除cuda和cudnn)的轻量化多维深度学习(deep learning)框架介绍

    0 引言 Marvin是普林斯顿视觉实验室(PrincetonVision)于2015年提出的轻量化GPU加速的多维深度学习网络框架.该框架采用纯c/c++编写,除了cuda和cudnn以外,不依赖其 ...

  9. MobileNet——一种模型轻量化方法

    导言 新的CNN网络的提出,提高了模型的学习能力但同时也带来了学习效率的降低的问题(主要体现在模型的存储问题和模型进行预测的速度问题),这使得模型的轻量化逐渐得到重视.轻量化模型设计主要思想在于设计更 ...

  10. 轻量化模型系列--GhostNet:廉价操作生成更多特征

    ​  前言  由于内存和计算资源有限,在嵌入式设备上部署卷积神经网络 (CNN) 很困难.特征图中的冗余是那些成功的 CNN 的一个重要特征,但在神经架构设计中很少被研究. 论文提出了一种新颖的 Gh ...

随机推荐

  1. Win32 动态库dll

    这两天学习动态库的练习,分享下方法 实例.封装窗口类的两种状态. 1.自定义窗口类QWnd 2.资源模板窗口对话框类 下面是dll的头文件,类的声明 #pragma once #ifndef _CLA ...

  2. Vue 子组件修改父组件传递过来的值

    实现效果:通过点击选中的按钮控制左边的树是否进行展示 子组件篇: <el-button v-if="isShowTree&hasTree" type="te ...

  3. 在 macOS 上安装 fish

    安装 fish brew install zsh 将默认 shell 切换为 fish 由于 Homebrew 安装的 fish 不在标准 shell 列表 /etc/shell 里,因此要先将 fi ...

  4. 【面试题】Java中子类和父类静态代码块、非静态代码块、构造函数的执行顺序总结一览表

    在面试的时候,有时候我们会被问到这样的问题:子类A继承父类B,A a = new A();则父类B的构造函数.父类B静态代码块.父类B非静态代码块.子类A构造函数.子类A静态代码块.子类A非静态代码块 ...

  5. RxJS 系列 – 实战练习

    前言 这篇主要是给一些简单例子, 从中体会 RxJS 在管理上的思路. Slide Down Effect with Dynamic Content 我在这篇 CSS & JS Effect ...

  6. SSD-KD:天翼云&清华出品,最新无原始数据的蒸馏研究 | CVPR'24

    无数据知识蒸馏能够利用大型教师网络所学到的知识,来增强较小型学生网络的训练,而无需访问原始训练数据,从而避免在实际应用中的隐私.安全和专有风险.在这方面的研究中,现有的方法通常遵循一种反演蒸馏的范式, ...

  7. JSP——EL表达式&JSTL标签

    EL表达式          JSTL 标签         使用方法:          if 标签            foreach 标签:      <c:forEach items= ...

  8. keycloak~关于授权码认证中的scope的实践

    前言 在 Keycloak 14.0.0 中,使用 protocol/openid-connect/auth 接口获取授权码时,scope 参数是可选的,但它确实有作用.下面是关于 scope 参数的 ...

  9. 关于 B 先生

    B 先生是不是要疯了,他今天说的都是他妈什么几把

  10. 利用3Dnii标签文件,生成png图片

    为了便于直观的看到2D标签,通常会将其转化为png图像,具体代码如下: # coding:utf-8 from glob import glob import os import SimpleITK ...