网站首页 > 技术文章 正文
MobileNet系列作为轻量级网络的代表,使得CNN轻量化和移动端的部署成为可能。MobileNet系列目前总共有三个版本, 分别是MobileNet-v1、MobileNet-v2和MobileNet-v3,本文重点对MobileNet系列网络进行阐述。
MobileNet-v1
MobileNet v1论文为MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications,2017年由谷歌提出,主要专注于CNN的移动端使用和部署。
简单来说,MobileNet-v1就是将常规卷积替换为深度可分离卷积的VGG网络。下图分别是VGG和MobileNet-v1 一个卷积块所包含的网络层。
可以看到VGG的卷积块就是一个常规3x3卷积和一个BN和ReLU激活层。MobileNet-v1则是一个3x3深度可分离卷积和一个1x1卷积,后面分别跟着一个BN和ReLU层。MobileNet-v1的ReLU指的是ReLU6,区别于ReLU的是对激活输出做了一个裁剪,使得最大最输出值不超过6(ReLU的最大值可以无限大),这么做的目的是为了防止过大的激活输出值带来较大的精度损失。因此MobileNet-v1的创新点就是深度可分离卷积。
从维度的角度看,卷积核可以看成是一个空间维(宽和高)和通道维的组合,而卷积操作则可以视为空间相关性和通道相关性的联合映射。从Inception(上篇博客)的1x1卷积来看,卷积中的空间相关性和通道相关性是可以解耦的,将它们分开进行映射,可能会达到更好的效果。
深度可分离卷积是在1x1卷积基础上的一种创新,主要包括两个部分:深度卷积和1x1卷积。深度卷积的目的在于对输入的每一个通道都单独使用一个卷积核对其进行卷积,也就是通道分离后再组合。1x1卷积的目的则在于加强深度。
假设我们用128个3*3*3的滤波器对一个7*7*3的输入进行卷积,可得到5*5*128的输出。如下图所示:
普通卷积的计算量为5x5x128x3x3x3=86400。深度可分离卷积的第一步是深度卷积(Depth-Wise),分别用3个3x3x1的滤波器对输入的3个通道分别做卷积,也就是说要做3次卷积,每次卷积都有一个5x5x1的输出,组合在一起便是5x5x3的输出。之后为了拓展深度达到128,需要执行深度可分离卷积的第二步:1x1卷积(Point-Wise)。 采用128个1x1x3的滤波器对5x5x3进行卷积,就可以得到5x5x128的输出。完整过程如下图所示:
深度可分离卷积的计算量:第一步深度卷积的计算量为5x5x1x3x3x1x3=675。第二步1x1卷积的计算量:5x5x128x1x1x3=9600,合计计算量为10275次(普通卷积为86400 次)。因此深度可分离卷积是MobileNet v1能够轻量化的关键原因。
MobileNet v1完整网络结构如下图所示。
MobileNet v1与GoogleNet和VGG 16在ImageNet上的效果对比,如下表所示:
可以看到MobileNet-v1相比与VGG16精度损失不超过一个点的情况下,参数量小了32倍之多!
猜你喜欢
- 2024-11-01 ViT再升级!9个视觉transformer最新改进方案让性能飞跃
- 2024-11-01 EfficientFormer:高效低延迟的Vision Transformers
- 2024-11-01 腾讯 AI Lab 开源世界首款自动化模型压缩框架PocketFlow
- 2024-11-01 速度提200倍,爱奇艺北航提基于耦合知识蒸馏视频显著区域检测算法
- 2024-11-01 ICCV2019 | 港科大、清华与旷视提出元学习的自动化神经剪枝网络
- 2024-11-01 NetAdapt:MobileNetV3用到的自动化网络简化方法 | ECCV 2018
- 2024-11-01 ICLR 2019 | 有限计算资源下“可动态瘦身”的神经网络
- 2024-11-01 新论文|一种新型吸附式无人机检测系统
- 2024-11-01 CVPR 2022 | 升级传统模型量化STE反向求导?CMU,脸书,港科提出新思路
- 2024-11-01 LeNet5那些经典的CNN网络结构到底是从何而来的?
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)