网站首页 > 技术文章 正文
NetAdapt的思想巧妙且有效,将优化目标分为多个小目标,并且将实际指标引入到优化过程中,能够自动化产生一系列平台相关的简化网络,不仅搜索速度快,而且得到简化网络在准确率和时延上都于较好的表现
?
来源:晓飞的算法工程笔记 公众号
论文: NetAdapt: Platform-Aware Neural Network Adaptation for Mobile Applications
- 论文地址:https://arxiv.org/abs/1804.03230
- 论文代码:https://github.com/denru01/netadapt
Introduction
? 轻量化网络主要有两种方法,分别为结构优化以及人工量化,但是以上两种方法都不能保证网络能够在不同的设备上都有较优的表现,而且目前的方法大都以非直接指标(计算量/参数量)作为指导,往往与实际结果有出入。
? 为此,论文提出平台相关的自动化网络简化方法NetAdapt,逻辑如图1所示,以迭代优化的方式慢慢获取满足预期资源消耗的网络。NetAdapt将资源直接指标引入优化过程,可同时支持多种资源约束,能够快速搜索平台相关的简化网络。
Methodology: NetAdapt
Problem Formulation
? NetAdapt主要目标是解决以下非凸约束优化问题:
? 是从初始预训练网络简化得到的网络,是准确率计算,是对资源的消耗计算,是资源的总量,也是优化的约束条件,可以为时延、能耗、内存或其它。
? NetAdapt将上述优化目标分成多个小目标进行迭代优化:
? 是第次迭代产生的准确率最高的网络,是初始预训练模型。随着迭代次数的增加,网络的资源消耗会变得更少,代表次迭代中资源的缩减量,整体的想法类似于学习率调度。当满足所有资源时,算法终止,输出每一轮迭代优化中最优的网络,从中选择合适的网络。
Algorithm Overview
? 假设当前优化目标只有时延,可采用减少卷积层或全连接层的核数量进行资料消耗的优化,NetAdapt的算法逻辑如Algorithm 1所示。
? 图2是每次迭代的细节,逐层(也可以网络unit为单位)选择保留的核数量(Choose # of Filters)以及保留的核(Choose Which Filters),核数量的选择基于经验估计(后面会讲到),注意这里选择去除整个核而不是其中的一些权值,比如的卷积核缩减为的卷积核,去除核后要去除对应的特征图。每层的优化都产生一个简化后的网络,简化后的网络随后进行短时间fine-tune(Short-Term Fine-Tune)来恢复准确率。
? 在上述操作完成后,NetAdapt单次迭代产生个简化网络,选择其中准确率最高的网络作为下一轮迭代的初始网络(Pick Highest Accuracy)。若当前迭代的网络已满足资源要求时,退出优化并将每次迭代产生的最优网络fine-tune直到收敛(Long-Term Fine-Tune)。
Algorithm Details
- Choose Number of Filters
? 当前层选择的核数量基于经验估计来决定,逐步减少核数量并计算每个简化网络的资源消耗,选择能满足当前资源消耗约束的最大核数量。当减少当前层的核数量时,后一层的相关维度要对应修改,这个也要考虑到资源消耗计算中。
- Choose Which Filters
? 有很多方法来决定选择保留的核,论文采用简单magnitude-based方法,即选择个L2-norm最大的核,由上面的步骤决定。
- Short-/Long-Term Fine-Tune
? 在NetAdapt的每次迭代中,都使用相对较小的次数(short-term)fine-tune搜索到的简化网络来恢复准确率,这一步对于小网络而言相当重要。由于大量减少资源量,如果不这样做,网络的准确率可能会降为零,导致算法选择了错误的网络。随着算法的进行,虽然网络会持续训练,但还没到收敛的地步,所以当得到最后的一系列自适应网络后,使用较多的次数(long-term)fine-tune直到收敛作为最后一步。
Fast Resource Consumption Estimation
? 在自适应的过程中,需要离线计算简化网络的资源消耗,这个计算可能会很慢并且由于设备有限难以并行,会成为算法的计算瓶颈。
? 论文通过建立多个layer-wise look-up表格来解决上面提到的资源消耗计算问题,即前面提到的经验估计。每个表格预先计算对应层的在不同的输入维度和核数量下的资源消耗,注意相同输入大小和配置的层可以共用表格内容。在估算时,先找到对应的层的表格,通过累计layer-wise的资源消耗来估算network-wise资源消耗,逻辑如图3所示。
? 图4对比了对MobileNetV1进行优化过程中估算的时延与实际时延,可以看到两个值是高度相关的。
Experiment Results
? 对比NetAdapt与其它网络简化方法在小型MobileNetV1(50%)上的简化效果。
? 在不同的设备上对比NetAdapt与其它网络简化方法在小型MobileNetV1(100%)上的简化效果。
Conclustion
? NetAdapt的思想巧妙且有效,将优化目标分为多个小目标,并且将实际指标引入到优化过程中,能够自动化产生一系列平台相关的简化网络,不仅搜索速度快,而且得到简化网络在准确率和时延上都于较好的表现。
?
?
?
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
work-life balance.
猜你喜欢
- 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 ICLR 2019 | 有限计算资源下“可动态瘦身”的神经网络
- 2024-11-01 新论文|一种新型吸附式无人机检测系统
- 2024-11-01 CVPR 2022 | 升级传统模型量化STE反向求导?CMU,脸书,港科提出新思路
- 2024-11-01 LeNet5那些经典的CNN网络结构到底是从何而来的?
- 2024-11-01 人人都是圣斗士,如何做好移动端动作捕捉特效?
你 发表评论:
欢迎- 最近发表
-
- 在 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)
本文暂时没有评论,来添加一个吧(●'◡'●)