深度学习模型在移动端的部署

简介

自从 AlphaGo 出现以来,机器学习无疑是当今最火热的话题,而深度学习也成了机器学习领域内的热点,现在人工智能、大数据更是越来越贴近我们的日常生活,越来越多的人工智能应用开始在移植到移动端上,那能够快速高效地在移动端部署深度学习模型就变成亟待解决的问题了。

现阶段 app 上使用的深度学习主要有两种模式:

Online 方式

首先在移动端做初步预处理,然后把数据传到服务器进行预测后返回移动端。
优点:部署相对简单,现成的框架(caffe,theano,mxnet,Torch) 做下封装就可以直接拿来用;使用服务器进行计算,性能强,能够处理比较大的模型
缺点:必须使用网络,而且展示效果依赖网速,不适合实时性要求高的应用。

Offline 方式

根据硬件的性能选择模型,在服务器训练得到模型,在手机上进行预测的过程。
优点:不需要使用网络,可以保护隐私
缺点:计算的性能、耗时等取决于移动端的性能,有些模型只能使用CPU,精度可能会有影响,无法进行类似云端的大规模分布式训练;移动端部署相对较麻烦,需要针对移动端进行优化;大模型耗费大量的资源(计算、内存、存储、电)。

部署方法

下面主要介绍offline的部署方法。

主要分两个阶段,第一个阶段是训练并得到模型,第二个阶段则是在得到模型后,在移动端进行部署。本文主要讲解的为第二阶段。

训练模型

在第一阶段训练模型中,已经有很成熟的开源框架和算法进行实现,但是为了能部署到移动端,还需要进行压缩加速。

压缩网络

目前深度学习在各个领域轻松碾压传统算法,不过真正用到实际项目中却会有很大的问题:

  1. 计算量非常巨大;
  2. 模型占用很高内存;
    由于移动端系统资源有限,而深度学习模型可能会高达几百M,因此很难将深度学习应用到移动端系统中去。

压缩方法

综合现有的深度模型压缩方法,它们主要分为四类:

方法名称 描述 应用场景 方法细节
参数修剪和共享(parameter pruning and sharing) 删除对准确率影响不大的参数 卷积层和全连接层 对不同设置具有鲁棒性,可以达到较好效果,支持从零训练和预训练
低秩因子分解(low-rank factorization) 使用矩阵对参数进行分解估计 卷积层和全连接层 标准化的途径,很容易实施,支持从零训练和预训练
转移/紧凑卷积滤波器(transferred/compact convolutional filters) 设计特别的卷积核来保存参数 只有卷积层 算法依赖于应用程序,通常可以取得好的表现,只能从零开始训练
知识蒸馏(knowledge distillation) 训练一个更紧凑的神经网络来从大的模型蒸馏知识 卷积层和全连接层 模型表现对应用程序和网络结构较为敏感,只能从零开始训练

基于参数修剪和共享的方

  • 23
    点赞
  • 196
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值