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

【经典神经网络架构解析篇】【6】MobileNet网络详解:模型结构解析、创新点、代码实现

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】
3.【手势识别系统开发】4.【人脸面部活体检测系统开发】
5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】
7.【YOLOv8多目标识别与自动标注软件开发】8.【基于YOLOv8深度学习的行人跌倒检测系统】
9.【基于YOLOv8深度学习的PCB板缺陷检测系统】10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】
11.【基于YOLOv8深度学习的安全帽目标检测系统】12.【基于YOLOv8深度学习的120种犬类检测与识别系统】
13.【基于YOLOv8深度学习的路面坑洞检测系统】14.【基于YOLOv8深度学习的火焰烟雾检测系统】
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】16.【基于YOLOv8深度学习的舰船目标分类检测系统】
17.【基于YOLOv8深度学习的西红柿成熟度检测系统】18.【基于YOLOv8深度学习的血细胞检测与计数系统】
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】20.【基于YOLOv8深度学习的水稻害虫检测与识别系统】
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统】22.【基于YOLOv8深度学习的路面标志线检测与识别系统】
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统】24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统】
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统】26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统】
27.【基于YOLOv8深度学习的人脸面部表情识别系统】28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统】
29.【基于YOLOv8深度学习的智能肺炎诊断系统】30.【基于YOLOv8深度学习的葡萄簇目标检测系统】
31.【基于YOLOv8深度学习的100种中草药智能识别系统】32.【基于YOLOv8深度学习的102种花卉智能识别系统】
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统】34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统】
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统】36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统】
37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统】38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统】
39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统】40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统】
41.【基于YOLOv8深度学习的遥感地理空间物体检测系统】42.【基于YOLOv8深度学习的无人机视角地面物体检测系统】
43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统】44.【基于YOLOv8深度学习的野外火焰烟雾检测系统】
45.【基于YOLOv8深度学习的脑肿瘤智能检测系统】46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统】
47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统】48.【基于深度学习的车辆检测追踪与流量计数系统】
49.【基于深度学习的行人检测追踪与双向流量计数系统】50.【基于深度学习的反光衣检测与预警系统】
51.【基于深度学习的危险区域人员闯入检测与报警系统】52.【基于深度学习的高密度人脸智能检测与统计系统】
53.【基于深度学习的CT扫描图像肾结石智能检测系统】54.【基于深度学习的水果智能检测系统】
55.【基于深度学习的水果质量好坏智能检测系统】56.【基于深度学习的蔬菜目标检测与识别系统】
57.【基于深度学习的非机动车驾驶员头盔检测系统】58.【太基于深度学习的阳能电池板检测与分析系统】
59.【基于深度学习的工业螺栓螺母检测】60.【基于深度学习的金属焊缝缺陷检测系统】
61.【基于深度学习的链条缺陷检测与识别系统】62.【基于深度学习的交通信号灯检测识别】
63.【基于深度学习的草莓成熟度检测与识别系统】64.【基于深度学习的水下海生物检测识别系统】
65.【基于深度学习的道路交通事故检测识别系统】66.【基于深度学习的安检X光危险品检测与识别系统】
67.【基于深度学习的农作物类别检测与识别系统】68.【基于深度学习的危险驾驶行为检测识别系统】
69.【基于深度学习的维修工具检测识别系统】70.【基于深度学习的维修工具检测识别系统】
71.【基于深度学习的建筑墙面损伤检测系统】72.【基于深度学习的煤矿传送带异物检测系统】
73.【基于深度学习的老鼠智能检测系统】

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

目录

  • 引言
  • 深度可分离卷积
  • 深度卷积和逐点卷积的简化
    • 1. 深度卷积作用
    • 深度卷积的例子
    • 2.逐点卷积的作用
    • 逐点卷积的例子
    • 组合工作流程
    • 为什么使用两种卷积?
  • **深度卷积**(滤波功能):
  • **逐点卷积**(组合特征):
  • 总计算成本
  • 标准卷积与深度可分卷积的计算量比较
  • MobileNet参数
  • 宽度乘数(α)
    • 工作原理:
    • 目的:
  • 分辨率乘数(ρ)
    • 工作原理:
    • 目的:
  • 宽度乘数:减少特征图层数
  • 分辨率乘数:简化特征表达
  • MobileNet与流行模型的比较
  • 总结

引言

MobileNet网络出现的主要目的是为了降低模型的计算成本,方便在计算资源有限的移动的应用程序或嵌入式系统上部署深度学习模型。

MobileNet网络的核心思想是通过深度可分离卷积(Depthwise Separable Convolution)来减少模型的计算量和参数数量,从而实现轻量级的网络结构。
深度可分离卷积将传统的卷积操作分解为两个独立的步骤:首先进行深度卷积(Depthwise Convolution),对每个输入通道进行独立的卷积操作;然后进行逐点卷积(Pointwise Convolution),将深度卷积的输出通道进行线性组合。这种方法大大减少了卷积操作的参数数量和计算量,使得MobileNet网络能够在移动设备和嵌入式系统中高效运行,同时保持较高的性能。

深度可分离卷积

深度可分离卷积由两层组成,

  1. 深度卷积
  2. 逐点卷积

深度卷积和逐点卷积的简化

1. 深度卷积作用

img

深度卷积专注于过滤输入图像或特征图。

  • 它单独使用小滤波器(例如,3×3)作用于输入的每个通道。
  • 目标是分别提取每个通道内的模式或空间特征。
  • 它不会跨通道混合信息。

可以将其视为查看每个通道(例如,红色、绿色或蓝色),并识别该通道内的边缘、纹理或图案。

深度卷积的例子

如果输入是具有三个通道(RGB)的图像,则深度卷积将单独处理这些通道中的每一个,从而创建红色、绿色和蓝色通道的过滤后的特征图。输出通道的数量与输入通道的数量相同。

2.逐点卷积的作用

img

逐点卷积组合了深度卷积后的特征图输出。

  • 它使用1×1滤波器,在每个空间位置的所有通道上工作。
  • 其目标是融合不同通道之间的信息,以创建新的组合特征。

可以将其视为查看来自深度卷积的过滤信息(例如,红色、绿色和蓝色的边缘或图案),并学习这些通道如何一起工作以识别更复杂的特征。

逐点卷积的例子

如果深度卷积产生具有Din=3个通道的输出,则逐点卷积可以将其合并组合成Dout通道(例如,64或128),通过混合来自输入通道的信息来创建新的特征图。

组合工作流程

深度卷积:

  • **作用:**分别从每个通道中提取模式或特征。
  • **输出:**每个输入通道的过滤版本。
  • **通道数:**与输入相同。

逐点卷积:

  • 作用:跨越所有通道,融合从深度卷积过滤来的特征图。
  • **输出:**一组新的特征图,通常具有不同数量的通道。
  • **通道数:**取决于使用的1×1滤波器的数量。

为什么使用两种卷积?

  • 深度卷积是有效的,但有局限性-它不能跨通道融合信息。
  • 逐点卷积增加了混合通道和创建有意义的特征图能力。
  • 它们共同形成深度可分离的卷积,这在计算上是高效的

深度卷积(滤波功能):

在深度卷积的情况下,如下图所示,包含一个维度为DfDfM的输入特征映射,卷积核的大小为DkDkM。(卷积运算只能在图像深度和内核深度相同的情况下发生,这里是M)

img

上述深度卷积的输出图像的大小将是DfDfM(假设步幅1和填充)或DpDpM(其中步幅和填充不同)

img

根据上图,我们可以清楚地看到总计算成本可以计算为:

深度卷积的总计算成本:

Df x Df x M x Dk x DK x 1(当输出形状(Df x Df)等于输入形状(Df x Df)时)。当stride = 1且padding = same时)

Dp x Dp x M x Df x Df x 1(当输出形状(Dp x Dp)不等于输入形状(Df x Df)时)

深度卷积是一种特殊类型的卷积,其中操作独立地应用于图像的每个输入通道。

与使用单个内核处理所有通道的标准卷积不同,深度卷积为每个通道使用单独的内核,从而实现更轻量级和更高效的计算。

逐点卷积(组合特征):

img

逐点操作*中,在M个通道上应用1×1卷积操作。因此,此操作的过滤器大小为1 x 1 x M*。假设我们使用N个这样的过滤器,输出大小变为Df x Df x N(当步幅= 1且填充=相同时)或Dp x Dp x N(当步幅不为1且填充不相同时)

img

逐点卷积的总计算成本为:

Dp x Dp x N x 1 x 1 x M = Dp x Dp x N x M(当步幅不为1且填充不相同时)

Df x Df x N x 1 x 1 x M = Df x Df x N x M(当步幅为1且填充相同时)

总计算成本

深度可分离卷积的总计算成本是深度卷积的计算成本+逐点卷积的计算成本
img

标准卷积与深度可分卷积的计算量比较

图像的大小为28x28x3。内核的大小是5x5x3x64。这里我们将假设输出图像的大小与输入图像的大小相同,即宽度和高度)

此单个卷积运算的计算成本将为28x28x3x64x5x5 =37,632,000

让我们看看深度可分卷积的计算成本是多少:(28 x28 x3 x5 x5 + 28 x28 x3 x64)=2,09,328。这里M是3,N是64

MobileNet参数

虽然基础MobileNet架构已经很小,计算量也不是很大,但它有两个不同的全局超参数,可以有效地进一步降低计算成本:一个是宽度乘数,另一个是分辨率乘数

MobileNet中,引入了两个超参数-宽度乘数分辨率乘数-来权衡模型的计算成本和准确性。它们允许我们调整模型的大小,以满足计算资源有限的设备(如智能手机和物联网设备)的约束。

宽度乘数(α)

宽度乘数减少了网络每层中的通道数量。

工作原理:

  • 假设MobileNet中的标准层具有DoutD输出通道。
  • 通过应用宽度乘数α,输出通道的数量变为α Dout,其中α是0和1之间的值。

目的:

  • 通过减少每层中的通道数量来减少参数和计算的数量。
  • 使我们能够缩小模型以适应内存和处理限制。

分辨率乘数(ρ)

分辨率乘数缩放输入图像分辨率。

工作原理:

  • 假设输入图像分辨率为H×W(例如,224 × 224(标准MobileNet)。
  • 通过应用分辨率乘数ρ,分辨率变为ρ < H × ρ < H×ρ < H×ρ<W,其中ρ是0和1之间的值。

目的:

  • 减少整个网络中特征图的空间维度。
  • 由于运算次数与输入分辨率成正比,因此显著降低了计算成本。

宽度乘数:减少特征图层数

为了进一步降低计算成本,他们引入了一个简单的参数,称为宽度乘数,也称为α。

对于每一层,宽度乘数α将与输入和输出通道(M和N)相乘,以缩小网络。

因此,宽度乘数的计算成本将变为。

img

计算成本:带宽度乘数的依赖可分离卷积

这里,α将在0到1之间变化,典型值为[1,0.75,0.5和0.25]。当α = 1时,称为基线MobileNet,α < 1称为简化MobileNet。宽度倍增器具有将计算成本降低α²的效果。

分辨率乘数:简化特征表达

第二个参数,以有效地减少计算成本。也称为ρ。

对于给定的层,分辨率乘数ρ将与输入特征图相乘。现在我们可以通过应用宽度乘数分辨率乘数来表示计算成本:

img

应用宽度乘数和分辨率乘数的计算成本

MobileNet与流行模型的比较

下图显示,MobileNet在其他著名和最先进的模型(如GoogleNet和VGG 16)中占据主导地位,参数较少。

img
MobileNet与其他最先进的模型对比

下图显示了深度可分离模型和标准卷积模型之间的差异。

img

标准卷积与非标准卷积

很明显,ImageNet的准确性仅比标准卷积模型低0.1%,但Mult-Adds和参数非常少。

总结

MobileNet网络的出现,为移动设备和嵌入式系统上的深度学习应用带来了革命性的变化。通过采用深度可分离卷积,MobileNet网络在保持高性能的同时,显著减少了模型的计算量和参数数量,使得在资源受限的设备上运行复杂的深度学习模型成为可能。这种轻量级的网络结构不仅提高了模型的效率,还降低了功耗,为移动视觉识别、实时图像处理等应用提供了强大的支持。MobileNet的出现,使得深度学习技术更加普及,为各种智能设备和应用场景带来了新的可能性。


在这里插入图片描述

好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!


http://www.kler.cn/a/508035.html

相关文章:

  • 在Playwright中使用PO模式
  • 【Uniapp-Vue3】uni-api交互反馈showToast的使用方法
  • HCIP-VLAN-hybrid接口+DHCP实验
  • uniapp实现“到这儿去”、拨打电话功能
  • Jmeter如何进行多服务器远程测试
  • lwip单网卡多ip的实现
  • 重拾Python学习,先从把python删除开始。。。
  • 电子应用设计方案94:智能AI门禁系统设计
  • ubuntu下安装编译cmake,grpc与protobuf
  • 基于微信小程序的中国各地美食推荐平台的设计与实现springboot+论文源码调试讲解
  • 日拱一卒(20)——leetcode学习记录:大小为 K 且平均值大于等于阈值的子数组数目
  • Android wifi热点开关代码记录
  • 代码随想录算法训练营第三十五天-动态规划-01背包(一维)
  • 敏感信息数据搜集系统全英文
  • 【MySQL】表操作
  • C语言的语法糖
  • IvorySQL 4.2 发布
  • 25/1/17 嵌入式笔记 STM32F103
  • 利用.NET版Word处理控件Aspose.Words,使用 C# 在 Word 中创建图表
  • MySQL SQL优化技巧与原理
  • 【HarmonyOS之旅】基于ArkTS开发(二) -> UI开发三
  • 如何实现圆形头像效果
  • 基于TypeScript封装 `axios` 请求工具详解
  • openharmony测试子系统
  • 【React】函数组件底层渲染机制
  • 【2024年华为OD机试】 (B卷,200分)- 二叉树中序遍历(Java JS PythonC/C++)