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

论文: 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 滚动条控件

    1.创建控件 HWND hScrollBar = ::CreateWindow( WC_SCROLLBAR,                           //控件类名 NULL,        ...

  2. mariadb5.5.56二进制离线安装

    在生产环境中一般使用发布好的二进制版本,简单概括一下安装过程: 1. 下载 地址为:https://downloads.mariadb.org/mariadb/5.5.56/ 这里选择最新版本的5.5 ...

  3. c++学习笔记(二):引用

    c++中的引用 引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. C++ 引用 vs 指针 引用很容易与指针混淆,它 ...

  4. BooleanBuilder 如何根据自定义列名 模糊查询 使用PathBuilder

    // 动态传参 // 1. 声明 PathBuilder:MyTable 为类名称,"myTable" 为首字母小写后的类名 PathBuilder<MyTable> ...

  5. 【YashanDB知识库】如何远程连接、使用YashanDB?

    问题现象 在各个项目实施中,我们经常遇到客户.开发人员需要连接和使用YashanDB但不知如何操作的问题,本文旨在介绍远程连接.使用YashanDB的几种方式. 问题的风险及影响 无风险 问题影响的版 ...

  6. 填坑 Plugin 'mysql_native_password' is not loaded

    数据库从 mysql5.7 升级到 mysql8.4,部分场景出现以下错误提示:Plugin 'mysql_native_password' is not loaded 原因是:mysql_nativ ...

  7. C# Dynamic 转换成 Dictionary,Dynamic 转换成 DataTable

    部分软件开发的时候用到了 dynamic 类型,这个类型的数据不需要做其他处理的时候非常好用,但是需要对其中的数据调整的时候就不是那么好用了,这里提供两个常见的转换方式 Dynamic To Dict ...

  8. 系统编程-进程-ps命令、进程调度、优先级翻转、进程状态

    1.    ps详解 ps  : 只列出当前用户的进程 ps -ef : e表示有效, f 表示全面, 所以是列出后台的所有有效进程. ps -ef | more :   列出后台所有的有效进程,并且 ...

  9. T2 的莫反式子

    正在实现,不知道对不对,但是先放这,哪个大佬发现问题了和我说下 设 \[f(l)=\sum\cdots\sum[\gcd=1,\text{lcm}=l] \] \[g(l)=\sum\cdots\su ...

  10. Nuke导出视频缺失 H.246格式 的解决办法

    同事在使用Nuke导出视频时报错,报错提示:缺失 H.246格式 后来经过我的研究发现,Quicktime Player 在标准安装时,默认不关联一些格式(具体是哪些格式不清楚) Quicktime ...