当前位置: 首页 > article >正文

【深度学习】9. CNN性能提升-轻量化模型专辑:SqueezeNet / MobileNet / ShuffleNet / EfficientNet

SqueezeNet / MobileNet / ShuffleNet / EfficientNet

一、背景与动机

随着深度神经网络在图像识别任务上取得巨大成功,它们的结构越来越深、参数越来越多。然而在移动端或嵌入式设备中:

  • 存储资源有限
  • 推理计算能力弱
  • 能耗受限

因此,研究者提出了多种轻量化 CNN 架构,目标是在保持较高准确率的同时,显著减少模型的参数量与计算开销。

代表性模型包括:

  • SqueezeNet:通过 1×1 卷积和模块压缩,极致减少参数
  • MobileNet:基于深度可分离卷积,高效解耦空间与通道维度
  • ShuffleNet:引入通道重排机制,打破 group convolution 的隔离性

二、SqueezeNet:压缩卷积架构的先驱

SqueezeNet Explained | Papers With Code

在这里插入图片描述

SqueezeNet 的目标是以极小模型参数量达到与 AlexNet 相似的精度。其核心设计是:

  1. 使用大量 1×1 卷积 代替 3×3 卷积
  2. 将特征图压缩后再展开,降低计算与参数
  3. 延迟使用下采样(pooling),保持高分辨率激活图

SqueezeNet 的基础构件是 Fire 模块。

Fire Module 结构

由两个部分组成:

  • Squeeze 层:1×1 卷积 → 输出少量通道(如 16)
  • Expand 层:同时使用 1×1 卷积 和 3×3 卷积 → 拼接输出(如各输出 64)

结构图如下:

输入 → 1×1 Conv(压缩) →
→ 1×1 Conv + 3×3 Conv(展开) → Concatenate → 输出

例如:

输入通道数为 64,Squeeze 输出 16 个通道,Expand 输出 128 → Fire 模块输出为 128 通道。

1×1 卷积的作用

  1. 通道压缩:1×1 卷积本质是对每个空间位置的通道向量进行线性组合,可以用来“压缩通道数”,降低后续计算量
  2. 增加非线性:在 ReLU 之后插入更多 1×1 卷积可以增加网络的非线性表达能力
  3. 参数极少:相比 3×3 卷积,1×1 卷积仅有 1/9 的参数,且无空间维度重叠,计算更快
  4. 实现跨通道交互:为后续层提供新的特征组合方式

SqueezeNet 大量用 1×1 卷积进行 squeeze → expand 操作,使得参数量大幅减少(仅 1.2M),而准确率仍接近 AlexNet。

三、MobileNet:深度可分离卷积架构

在这里插入图片描述

MobileNet 系列由 Google 提出,目标是在手机等设备上部署高效 CNN 模型。

MobileNet 的核心是 Depthwise Separable Convolution(深度可分离卷积),它将标准卷积分解为:

  • Depthwise Conv(逐通道卷积):每个通道单独做卷积,不混通道
  • Pointwise Conv(1×1 卷积):再用 1×1 卷积将各通道融合

结构为:

输入 → Depthwise 3×3 → Pointwise 1×1 → 输出

相比标准卷积,计算量约减少 8~9 倍。

1×1 卷积在 MobileNet 中的作用

MobileNet 的计算瓶颈几乎全部集中在 1×1 卷积:

  • 它承担了通道融合、表达建模的全部任务
  • 在 Depthwise Conv 后,通道仍是独立的,1×1 Conv 是关键建模过程
  • 通常伴随 BatchNorm + ReLU 使用,形成完整的特征通道变换层

MobileNet 的架构本质上是 “大量 Depthwise + 重度依赖 Pointwise 1×1 Conv”。

在 MobileNet v2 中,1×1 卷积还被用于扩展通道(Expand)与压缩通道(Project)结构中,组成 Inverted Residual Block。

四、ShuffleNet:分组卷积下的通信增强

在这里插入图片描述

ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile  Devices | by Synced | SyncedReview | Medium

ShuffleNet 进一步提出:

  • 组卷积虽然节省参数,但组与组之间信息隔离
  • 提出 Channel Shuffle 操作,实现组间信息重组

结构流程如下:

输入 → 1×1 group conv(压缩) → Channel Shuffle
→ Depthwise Conv(下采样) → 1×1 group conv(还原) → Add

其中的关键是 Shuffle 操作,它通过通道维度重排列打破 group 的限制,实现跨组特征融合。

1×1 卷积的作用

在 ShuffleNet 中,1×1 卷积仍是核心:

  • 用于 group conv 压缩和还原通道
  • 配合 Shuffle 操作,使得 group conv 不再是“隔离死角”
  • 在轻量网络中,几乎承担了所有“通道信息建模”工作

ShuffleNet 的主要贡献是优化了 group conv 的使用,使得通道维度之间仍能交流,从而提升准确率。

五、小结

模型主要创新点1×1 Conv 作用
SqueezeNetFire 模块:Squeeze + Expand通道压缩与扩展,控制参数量
MobileNet深度可分离卷积通道融合 + 特征表达,承担主建模任务
ShuffleNetChannel Shuffle + Group Conv通道重建与跨组通信桥梁,提高 group conv 表达力

1×1 卷积在轻量 CNN 中的作用已经从“辅助通道变换”变为信息融合的主力结构,它不仅节省参数,还提供了更高效的通道交互机制。

EfficientNet

一、设计动机

卷积神经网络的性能提升往往伴随着参数与计算量的指数增长。以 ResNet、Inception、DenseNet 为例,为了获得更高精度,往往不断加深网络或加宽网络或增加输入分辨率。然而,这三种扩展维度是彼此耦合的,盲目地加大某一维度可能会导致资源浪费而无法换来性能提升。

EfficientNet 的核心贡献是提出一种复合缩放策略(Compound Scaling),以统一原则系统地扩展网络的深度、宽度与分辨率,在有限资源下获得最优性能。

What is EfficientNet? The Ultimate Guide.

二、Compound Scaling 原理

传统的网络扩展方式:

  • 只加深:ResNet-101 → ResNet-152
  • 只加宽:Wide-ResNet
  • 只提分辨率:Inception-ResNet + 299×299 输入

这些方式各有优劣,但非系统设计。EfficientNet 提出:

给定一个计算资源预算,可以通过一个统一的比例因子 ϕ \phi ϕ 同时扩展网络的深度 d d d、宽度 w w w、输入分辨率 r r r,使得整体计算量受控。

具体公式如下:

d = α ϕ w = β ϕ r = γ ϕ subject to  α ⋅ β 2 ⋅ γ 2 ≈ 2 \begin{aligned} d &= \alpha^\phi \\ w &= \beta^\phi \\ r &= \gamma^\phi \\ \text{subject to } \alpha \cdot \beta^2 \cdot \gamma^2 \approx 2 \end{aligned} dwrsubject to αβ2γ22=αϕ=βϕ=γϕ

其中, α , β , γ \alpha, \beta, \gamma α,β,γ 是通过网格搜索在基准网络上确定的缩放常数。

这样,当我们设定 ϕ = 1 , 2 , 3... \phi=1, 2, 3... ϕ=1,2,3... 时,网络在三维空间上以协调比例扩展,而不是某一维度暴涨。

三、EfficientNet-B0 到 B7

EfficientNet-B0 是基准网络,由 NAS(神经架构搜索)发现,结构基于 MobileNetV2 的 MBConv 模块

然后使用 Compound Scaling 自动扩展,得到 B1 到 B7,不断提高精度和参数量。

模型Top-1 精度参数量 (M)FLOPs (B)
ResNet-15277.8%60.211.5
EfficientNet-B077.1%5.30.39
EfficientNet-B784.4%6637

可以看到,EfficientNet 在相同精度下参数量与计算量大幅减少。

四、MBConv 模块(Mobile Inverted Bottleneck Conv)

MBConv 是 EfficientNet 的基本构件,其结构如下:

输入 → 1×1 卷积(Expand)
→ 3×3 Depthwise Conv(空间建模)
→ 1×1 卷积(Project)
→ Add(残差连接)

每一层先用 1×1 卷积扩大通道维度(比如从 16 → 96),经过深度卷积处理空间,再用 1×1 卷积降维(比如 96 → 16)。

这个结构来自 MobileNetV2,但在 EfficientNet 中进一步优化:

  • 引入 SE(Squeeze-and-Excitation)注意力模块
  • 使用 Swish 激活函数 替代 ReLU
  • 更合理的 expansion ratio(如 6)

1×1 卷积的作用

  1. 通道扩展(Expand)

    第一个 1×1 卷积将输入从低维度提升为高维(如 16 → 96),使得后续深度卷积有更强的表达能力。

  2. 特征压缩(Project)

    第二个 1×1 卷积将特征重新压缩为初始维度(如 96 → 16),减少输出特征图大小并匹配残差连接。

  3. 非线性建模核心

    所有的非线性(Swish)都作用在 1×1 卷积之后,这使得 1×1 卷积不仅是线性变换器,更是模型建模能力的关键来源。

EfficientNet 中的 1×1 卷积相比以往模型承担了更重的任务,不再只是调节维度,而是主导整个 MBConv 的信息流与学习能力。

五、EfficientNet 的优势总结

  1. 系统性扩展:统一调整深度、宽度、分辨率,更科学地利用计算资源
  2. 高性能:在参数量极少的情况下达到或超越最强大模型
  3. 适配部署:适合从手机到服务器的全平台部署,兼容 TensorRT、TFLite
  4. 结构可复用:MBConv 模块广泛应用于后续 EfficientNetV2、MixNet、EdgeTPU 模型中

六、小结

EfficientNet 是高效 CNN 架构设计的一次重大突破,通过 Compound Scaling 策略将架构扩展问题转化为优化问题,同时结合 NAS 设计出的 MBConv 模块,实现了极高的性能与效率统一。

它不仅达到了 SOTA 准确率,也成为轻量化模型设计的典范,并在图像分类、目标检测、语义分割等任务中展现出强大通用性。

相关文章:

【深度学习】9. CNN性能提升-轻量化模型专辑:SqueezeNet / MobileNet / ShuffleNet / EfficientNet

SqueezeNet / MobileNet / ShuffleNet / EfficientNet 一、背景与动机 随着深度神经网络在图像识别任务上取得巨大成功,它们的结构越来越深、参数越来越多。然而在移动端或嵌入式设备中: 存储资源有限推理计算能力弱能耗受限 因此,研究者…...

Relational Algebra(数据库关系代数)

目录 What is an “Algebra” What is Relational Algebra? Core Relational Algebra Selection Projection Extended Projection Product(笛卡尔积) Theta-Join Natural Join Renaming Building Complex Expressions Sequences of Assignm…...

【C/C++】面试常考题目

面试中最常考的数据结构与算法题,适合作为刷题的第一阶段重点。 ✅ 分类 & 推荐题目列表(精选 70 道核心题) 一、数组 & 字符串(共 15 题) 题目类型LeetCode编号两数之和哈希表#1盛最多水的容器双指针#11三数…...

Chorme如何对于youtube视频进行画中画背景播放?

画中画可以让你小窗播放,然后浏览器放后台还可以做点别的事情。 B站直接可以选择小窗播放,游览器最小化就可以,但是youtube的小窗播放游览器一切换就不显示了。 其实是因为youtube的小窗播放不是真的小窗播放。要想真的实现需要在youtube视…...

017搜索之深度优先搜索——算法备赛

深度优先搜索 如果说广度优先搜索是逐层扩散,那深度优先搜索就是一条道走到黑。 深度优先遍历是用递归实现的,预定一条顺序规则(如上下左右顺序) ,一直往第一个方向搜索直到走到尽头或不满足要求后返回上一个叉路口按…...

从单机到集群,再到分布式,再到微服务

我会尽量详细讲解,从单机到集群,再到分布式和微服务每个层次的概念、特点和应用场景。同时也会探讨C是否适合做微服务项目。 一、从单机到集群,再到分布式,再到微服务——详细解析 1. 单机(Single Machine&#xff09…...

关于ios点击分享自动复制到粘贴板的问题

前言 Android 系统没有什么特别的要求,实现这个也比较容易。但ios在某些情况下就会出现问题。 如果ios是点击之后,请求接口,再把接口的内容赋值给粘贴板肯定行不通,会被ios系统拦截,导致赋值失败或者赋值为空。建议使…...

Hive的JOIN操作如何优化?

Hive的JOIN操作优化是提升查询性能的关键,尤其是在处理大数据量时。以下是详细的JOIN优化策略和实现方法: 一、MapJoin(小表广播优化) 核心原理 将小表全量加载到每个MapTask的内存中,避免Shuffle,直接在…...

React Native 实现抖音式图片滑动切换浏览组件-媲美抖音体验的滑动式流畅预览组件

写在前面 “如何让用户像刷抖音一样浏览我们的图片列表?” —— 这个需求背后隐藏着性能、体验和交互设计的多重挑战。本文将带你从零实现一个高性能的React Native图片浏览器,支持分页预加载、横向滑动预览、文字展示和缓存优化,打造媲美原…...

睿抗机器人开发者大赛CAIP-编程技能赛-历年真题 解题报告汇总 | 珂学家

前言 汇总 睿抗机器人开发者大赛CAIP-编程技能赛-历年真题 解题报告汇总 2024年 2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组 (国赛) 解题报告 2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛)解题报告 2024 睿抗机器人开发者大赛CAI…...

【c++】【数据结构】AVL树

目录 AVL树的定义AVL树的部分模拟实现平衡因子的引入平衡因子的向上调整旋转算法单旋算法右单旋左单旋 双旋算法左右双旋右左双旋 AVL树的定义 AVL树本质是一种搜索二叉树,传统的二叉搜索树我们都有所了解,其在理想情况下也就是接近满二叉树时拥有极高的…...

【原神 × 插入排序】刷圣遗物也讲算法:圣遗物评分系统背后的排序逻辑你真的懂吗?

📘 改编自:王争《数据结构与算法之美》 🎮 游戏演绎:米哈游《原神》 🧠 核心关键词:插入排序、排序算法、评分系统、属性评价、强化圣遗物、冒泡排序对比 🧭 引言:原神刷本=刷排序? 玩《原神》的玩家每天日常是啥?体力用来刷圣遗物、精通头、暴击头、攻充沙………...

ORB-SLAM2学习笔记:ExtractorNode::DivideNode和ORBextractor::DistributeOctTree函数详解

一、ExtractorNode::DivideNode void ExtractorNode::DivideNode(ExtractorNode &n1, ExtractorNode &n2, ExtractorNode &n3, ExtractorNode &n4) {const int halfX = ceil(static_cast<float>(UR.x-UL.x)/2);const int halfY = ceil(static_cast<f…...

nt!MmMapViewInSystemCache函数分析PointerPte的填充

第一部分&#xff1a; 1: kd> kc # 00 nt!MmMapViewInSystemCache 01 nt!CcGetVacbMiss 02 nt!CcGetVirtualAddress 03 nt!CcMapData 04 Ntfs!NtfsMapStream 05 Ntfs!NtfsReadBootSector 06 Ntfs!NtfsMountVolume 07 Ntfs!NtfsCommonFileSystemControl 08 Ntfs!NtfsFspDis…...

3D Tiles高级样式设置与条件渲染(3)

二、基于地理距离的条件渲染 1.根据与特定点的距离设置样式 在某些应用中&#xff0c;我们可能需要根据建筑物与某个特定点&#xff08;如地标建筑&#xff09;的距离来设置样式。以下代码示例展示了如何根据建筑物与广州塔的距离来设置颜色和可见性&#xff1a; tiles3d.styl…...

通义灵码深度实战测评:从零构建智能家居控制中枢,体验AI编程新范式

一、项目背景&#xff1a;零基础挑战全栈智能家居系统 目标&#xff1a;开发具备设备控制、环境感知、用户习惯学习的智能家居控制中枢&#xff08;PythonFlaskMQTTReact&#xff09; 挑战点&#xff1a; 需集成硬件通信(MQTT)、Web服务(Flask)、前端交互(React) 调用天气AP…...

头歌之动手学人工智能-Pytorch 之优化

目录 第1关&#xff1a;如何使用optimizer 任务描述 编程要求 测试说明 真正的科学家应当是个幻想家&#xff1b;谁不是幻想家&#xff0c;谁就只能把自己称为实践家。 —— 巴尔扎克开始你的任务吧&#xff0c;祝你成功&#xff01; 第2关&#xff1a;optim.SGD 任务描述…...

基于谷歌ADK的智能客服系统简介

Google的智能体开发工具包&#xff08;Agent Development Kit&#xff0c;简称ADK&#xff09;是一个开源的、以代码为中心的Python工具包&#xff0c;旨在帮助开发者更轻松、更灵活地构建、评估和部署复杂的人工智能智能体&#xff08;AI Agent&#xff09;。ADK 是一个灵活的…...

(一)视觉——工业相机(以海康威视为例)

一、工业相机介绍 工业相机是机器视觉系统中的一个关键组件&#xff0c;其最本质的功能就是将光信号转变成有序的电信号。选择合适的相机也是机器视觉系统设计中的重要环节&#xff0c;相机的选择不仅直接决定所采集到的图像分辨率、图像质量等&#xff0c;同时也与整个系统的运…...

DAY 36 超大力王爱学Python

仔细回顾一下神经网络到目前的内容&#xff0c;没跟上进度的同学补一下进度。 作业&#xff1a;对之前的信贷项目&#xff0c;利用神经网络训练下&#xff0c;尝试用到目前的知识点让代码更加规范和美观。探索性作业&#xff08;随意完成&#xff09;&#xff1a;尝试进入nn.Mo…...

基于React + TypeScript构建高度可定制的QR码生成器

前言 在现代Web应用中&#xff0c;QR码已成为连接线上线下的重要桥梁。本文将详细介绍如何使用React TypeScript Vite构建一个功能强大、高度可定制的QR码生成器&#xff0c;支持背景图片、文本叠加、HTML模块、圆角导出等高级功能。 前往试试 项目概述 技术栈 前端框架:…...

DeepSeek进阶教程:实时数据分析与自动化决策系统

进阶教程:实时数据分析与自动化决策系统 1. 实时数据流处理架构 class StreamProcessor:def __init__(self):self.window_size = 60 # 滑动窗口大小(秒)self.analytics_engine = AnalyticsEngine() # 复用之前的分析引擎def process_kafka_stream(self, topic):"&quo…...

visual studio 2022 初学流程

本文采用总-分的形式讲述流程 1.前端外部可以使用的接口 ExternalDataWebService.asmx?opReportWaterForWayder 新建ExternalDataWebService.asmx 文件 <% WebService Language"C#" CodeBehind"~/App_Code/ExternalDataWebService.cs" Class…...

SRD-12VDC-SL-C 继电器‌接线图解

这个继电器可以使用12伏的直流电源控制250伏和125伏的交流电&#xff0c;也可以控制30伏和28伏的直流电&#xff0c;电流都为10安。 此继电器有5个引脚&#xff0c;各个的作用如下&#xff1a; 引脚4和引脚5为触点&#xff0c; 引脚1和引脚3为线圈引脚&#xff0c;接12伏的直…...

基于开源链动2+1模式AI智能名片S2B2C商城小程序的企业组织生态化重构研究

摘要&#xff1a;本文以互联网时代企业组织结构变革为背景&#xff0c;探讨开源链动21模式AI智能名片S2B2C商城小程序在推动企业从封闭式向开放式生态转型中的核心作用。通过分析传统企业资源获取模式与网络化组织生态的差异&#xff0c;结合开源链动21模式的裂变机制、AI智能名…...

前端面经 两栏布局

两栏布局 float实现 1.给父盒子加float:hidden实现BFC 2.给左盒子加浮动float:left 给宽度 flex布局 1父盒子 display:flex 2左盒子 固定宽度 3.右盒子 flex:1 三栏布局 法1&#xff1a;浮动实现 1 父盒子overflow:hidden 实现BFC 2左盒子:float:left 3右盒子 :floa…...

2,QT-Creator工具创建新项目教程

目录 1,创建一个新项目 demo_01.pro(项目配置文件) 类似 CMakeList.txt widget.h(头文件)​ main.cpp(程序入口)​ widget.cpp(源文件)​ widget.ui(界面设计文件)​ 1,创建一个新项目 依次选择: 设置路径: 选择编译器: 如果选择CMake, 就会生成cmakel…...

《深入解析SPI协议及其FPGA高效实现》-- 第一篇:SPI协议基础与工作机制

第一篇&#xff1a;SPI协议基础与工作机制 1. 串行外设接口导论 1.1 SPI的核心定位 协议本质 &#xff1a; 全双工同步串行协议&#xff08;对比UART异步、IC半双工&#xff09;核心优势 &#xff1a; 无寻址开销&#xff08;通过片选直连&#xff09;时钟速率可达100MHz&…...

2025年5月6日 飞猪Java一面

锐评 鸡蛋鸭蛋荷包蛋 我的蛋仔什么时候才能上巅峰凤凰蛋? 1. 如何保证数据库数据和redis数据一致性 数据库数据和 redis 数据不一致是在 高并发场景下更新数据的情况 首先我们要根据当前保持数据一致性的策略来决定方案 如果采取的策略是先删除缓存 更新数据库 我们假设现…...

​​技术深度解析:《鸿蒙5.0+:AI驱动的全场景功耗革命》​

引言&#xff1a;鸿蒙5.0的能效革新目标​​ ​​行业挑战​​&#xff1a; 移动设备多设备协同需求激增&#xff0c;传统系统面临分布式通信开销、AI算力碎片化、边缘设备能效瓶颈等问题。​​鸿蒙5.0突破​​&#xff1a; 引入​​方舟引擎3.0​​&#xff08;ArkTS编译优化…...