模型小型化,why?
AI服务的计算环境发生了翻天覆地的变化,已逐渐从云端向移动端和IoT蔓延渗透。据统计,近几年AIoT的市场规模以40%以上的实际速度在增长,而且预期未来几年还保持着一个相当高的增长趋势。与此同时,也带来了前所未有的新型交互需求。比如,在智能屏音箱上,不方便语音的时候使用手势控制;看视频时,在耗电量微乎其微的情况下,可以通过表情识别,为你喜欢的视频自动点赞。然而,一个反差是,硬件的计算能力,从云到移动端、到IoT,算力以三个数量级的比例在下降,内存也在大幅下降,尤其是边缘芯片内存只有100K。而实际需要运行在这些AIoT设备上的算法需要关注的三个方面,即:算法效果(精度)、计算速度(FLOPs)、模型大小。最理想的选择是算法效果好、计算量低,尤其是实际耗时要少,同时,模型要小到内存足够放得下。
而云端上的经验告诉我们,要想效果好,模型得足够大!
那怎么样解决这个矛盾呢?很多专家提供人工经验去设计端上的模型,并且得到了广泛的应用。
然而这些依旧存在两个问题:
- 如何利用现存优秀的云端模型。
- 如何产生任务自适应的模型。
对于这两个问题,我们给出的答案是:模型小型化!
图2 PaddleSlim-效果不降的模型压缩工具箱
我们希望在有限计算资源的情况下保持效果不降,对已有模型进行压缩,并针对任务自动设计出新模型,这些功能都浓缩在 百度 飞桨和视觉团队共同研发的PaddleSlim工具箱里,自去年对外开源PaddleSlim,这个工具箱的内容到现在一直还在持续丰富,从 量化 、蒸馏、 剪枝 到网络 结构搜索 ,一应俱全。
截止到现在,我们通过PaddleSlim打磨出了用于通用任务的分类、检测和用于垂类任务的 人脸识别 、文字识别(OCR)等多个业界领先的工业级小模型,它们是SlimMobileNet、SlimFaceNet、SlimDetNet、SlimTextNet等等。
为了进一步促进模型小型化技术的产业应用,PaddleSlim将开源所有Slim系列模型!
图3 Slim系列模型开源
PaddleSlim分类、检测最新优化
近日,PaddleSlim发布了SlimMobileNet、SlimFaceNet、SlimDetNet、SlimTextNet四大系列13个业界领先的工业级小模型。
分类:CVPR冠军模型,业界首个开源的FLOPs不超300M、ImageNet精度超过80%的分类小模型
在 图像分类 任务上,PaddleSlim发布的SlimMobileNet是基于 百度 自研的GP-NAS(CVPR2020)AutoDL技术以及自研的蒸馏技术得到。
表1 SlimMobileNet分类小模型
在ImageNet 1000分类任务上,相比于MobileNetV3, SlimMobileNet_V1在精度提升1.7个点的情况下FLOPs可以压缩28%。SlimMobileNet_V4_x1_1为业界首个开源的FLOPs不超 300M,ImageNet精度 超过80%的分类小模型。
值得特别提及的是,CVPR的低功耗计算视觉比赛(CVPR 2020 LOW-POWER COMPUTER VISION CHALLENGE)也刚刚宣布了结果, 百度 联合 清华大学 在竞争最激烈的Real-time Image Classification Using Pixel 4 CPU 赛道中击败众多强劲对手取得冠军。本次发布的开源分类模型中就包含了此次比赛的冠军模型。
检测:最适合端侧部署的基于PaddleDetection的产业级检测模型
除了分类任务以外,如今 目标检测 已经产业应用的重要方向,它可以被广泛应用于工业产品检测、智能导航、视频监控等各个应用领域,帮助政府机关和广大企业提高工作效率。
PaddleDetection发布了一系列 YOLO 模型,PaddleSlim在其基础上进行了蒸馏、 量化 和 剪枝 等压缩操作,产出了SlimDetNet系列图像 目标检测 模型。以MobileNetV1网络为主干的 YOLO v3模型,适用于移动端部署环境,因为冗余信息更少,所以压缩难度较大,在PaddleSlim 剪枝 和蒸馏的共同作用下模型 参数 和计算量均有65%以上的减少,同时精度只有略微的降低。具体实验数据如表2所示。
注:SlimDetNet v2(MV3_ YOLO v3)输入大小为320,测试环境是骁龙845;SlimDetNet v1(MobileNetV1- YOLO v3)输入大小为608,测试环境是骁龙855。
表2 SlimDetNet检测小模型
业界最小的开源人脸识别 模型
除了基础模型,PaddleSlim还开源了垂类模型。众所周知, 人脸识别 和文字识别是工业化大生产中最常用的两项视觉技术。
首先看一下 人脸识别 。 人脸识别 技术作为目前AI技术落地最广泛的技术之一,广泛应用于人脸解锁、考勤、支付、身份识别等各个场景。如何在嵌入式设备上高效的执行 人脸识别 算法成为制约相关应用的关键因素。
SlimFaceNet同样是基于 百度 自研的GP-NAS AutoDL技术以及 百度 自研的自监督超网络训练算法得到,如表3所示。
表3 SlimFaceNet与现有模型对比
相比于MobileNetV2,SlimFaceNet_A_x0_60 FLOPs 压缩54%,在RK3288上 加速4.3倍。基于PaddleSlim的离线 量化 功能还可以进一步压缩模型,相比于MobileNetV2,SlimFaceNet_A_x0_60_quant FLOPs可以 压缩88.5%,在RK3288硬件上可以 加速6.4倍。
MobileFaceNet是之前业界开源的一个网络,SlimFaceNet_A_x_60_quant计算量只有MobileFaceNet的七分之一,延时降低了59%。
业界最小的开源文字识别模型
再来看一看OCR,OCR技术有着丰富的应用场景,包括已经在日常生活中广泛应用的面向垂类的结构化文本识别,如 车牌识别 、银行卡信息识别、身份证信息识别、火车票信息识别等等,此外,通用OCR技术也有广泛的应用,如在视频场景中,经常使用OCR技术进行字幕自动翻译、内容安全监控等等,或者与视觉特征相结合,完成视频理解、视频搜索等任务。
图4 OCR识别工作流程
6月份的时候飞桨开源了一个8.6兆的OCR,业界反响热烈,登上了Github的Trending,现在我们又开源一个更加优质的模型,效果不降,但是模型大小只有3.1兆,并达到了30%的加速。
各个模型具体压缩情况如表4所示。
注:表中识别模型耗时为单个候选框的识别耗时,一张图片可能有多个候选框。使用自建中文数据集,测试环境是骁龙855。
表4 SlimText系列小模型
我们是如何做到的
以上业界最小的模型全部都基于飞桨模型压缩库PaddleSlim实现。它们的实现方式不尽相同,其中, 人脸识别 模型和分类模型使用了搜索压缩策略;检测与OCR使用了经典的 量化 、 剪枝 和蒸馏策略。
搜索压缩策略简介
继PaddleSlim分布式SA-NAS在CVPR 2020 Real Image Denoising rawRGB Track夺冠后,GP-NAS包揽了ECCV 2020 Real Image Super-Resolution Challenge全部3项track的冠军。其中,SA-NAS搜索方法是 百度 首次把NAS技术应用于图像降噪领域。
GP-NAS搜索方法是 百度 首次把NAS技术应用于图像超分领域。目前为止, 百度 自研的SA-NAS和GP-NAS AutoDL技术已在CVPR19,ICME19,CVPR20,ECCV20 夺得 7项世界第一,提交 200余项中国/美国专利申请。
基于自监督的Oneshot-NAS
超网络训练方法
One-Shot NAS是一种自动搜索方法。它将超网络训练与搜索完全解耦,可以灵活的适用于不同的约束条件,超网络训练过程中显存占用低,所有结构共享超网络 权重 ,搜索耗时加速显著。与此同时,我们还研发了基于自监督的排序一致性算法,以确保超网络性能与模型最终性能的一致性。
如图5所示,超网络的训练还可以与蒸馏和 量化 深度结合,如在超网络训练过程中加入蒸馏 损失函数 ,可以得到一致性蒸馏超网络(基于该超网络可以搜索得到最适合特定teacher模型的student模型);如在超网络训练过程中加入 量化 损失函数 ,可以得到一致性 量化 超网络(基于该超网络可以搜索得到精度高且对 量化 不敏感的模型结构)。基于一致性超网络,PaddleSlim使用 百度 自研的GP-NAS算法进行模型结构自动搜索。
图5 基于自监督的超网络训练
基于高斯过程 的模型结构
自动搜索GP-NAS
GP-NAS从贝叶斯角度来建模NAS,并为不同的搜索空间设计了定制化的 高斯过程 均值函数和 核函数 。图6为GP-NAS的架构图,具体来说,基于GP-NAS的超 参数 ,我们有能力高效率的预测搜索空间中任意模型结构的性能。从而,模型结构自动搜索问题就被转换为GP-NAS 高斯过程 的超 参数 估计问题。接下来,通过互信息最大化采样算法,我们可以有效地对模型结构进行采样。因此,根据采样网络的性能,我们可以有效的逐步更新GP-NAS超 参数 的后验分布。基于估计出的GP-NAS超 参数 ,我们可以预测出满足特定延时约束的最优的模型结构,更详细的技术细节请参考GP-NAS论文。
GP-NAS论文地址:
https://openaccess.thecvf.com/content_CVPR_2020/papers/Li_GP-NAS_Gaussian_Process_Based_Neural_Architecture_Search_CVPR_2020_paper.pdf
图6 基于 高斯过程 的模型结构自动搜索GP-NAS
量化 、剪枝 、蒸馏
接下来,以文字检测和识别为例,简要介绍使用经典压缩策略做模型压缩的一般思路。
第一步:分析模型参数 量分布
图7 OCR识别模型各部分 参数 量占比
如图7所示,OCR识别模型的 参数 主要集中在FC层和backbone层。另外考虑到当前没有对FC进行 剪枝 的有效的方法,所以我优先选择对FC层和backbone进行PACT 量化 训练。对于OCR检测模型,我们将其拆为backbone和head两部分进行分析对比,结果如图8所示。
图8 OCR检测模型分析
第二步:制定模型压缩方案
根据第一步的分析,我们制定以下压缩方案:
- OCR识别模型:对backbone和FC层进行PACT量化 训练
- OCR检测模型:对head部分先进行剪枝 ,然后再进行PACT量化 训练
第三步:实施模型压缩
按照第二步制定计划对各个模型进行压缩。其中,在对识别模型和检测模型进行PACT 量化 训练时,可以根据PaddleSlim提供的PACT自动调参教程自动计算出最合适的 参数 。教程详见:
https://github.com/PaddlePaddle/PaddleSlim/tree/develop/demo/quant/pact_quant_aware
对检测模型的head部分进行 剪枝 时,推荐使用PaddleSlim的敏感度分析方法和FPGM通道重要性评估方式。相关教程详见:
https://github.com/PaddlePaddle/PaddleSlim/blob/develop/docs/zh_cn/tutorials/image_classification_sensitivity_analysis_tutorial.md
OCR模型压缩方案的完整代码和教程请参考:
https://aistudio.baidu.com/aistudio/projectdetail/898523
参考链接
本文示例代码放在 百度 一站式在线开发平台AI Studio上,链接如下:
https://aistudio.baidu.com/aistudio/projectdetail/898523
本文提到的Slim系列小模型的更多详细内容请参见PaddleSlim项目地址:
https://github.com/PaddlePaddle/PaddleSlim
PaddleSlim是基于 百度 飞桨提供的开源 深度学习 模型压缩工具,集 深度学习 模型压缩中常用的 量化 、 剪枝 、蒸馏、模型 结构搜索 、模型硬件搜索等方法与一体。目前,依靠PaddleSlim 百度 大脑打造了三位一体的度目系列自研产品,当PaddleSlim和其他视觉算法在硬件上结合时,也赋能了许多其他应用场景,小度在家的手势控制;好看视频APP的表情识别;国家电网智能巡检解决方案......从智慧分析、智慧社区,再到驾驶管理、产业赋能,基于PaddleSlim 百度 大脑已经打造出一个特有的“软+硬”视觉时代,并时刻守护生活的每个角落。
如果您在使用过程中有任何问题,欢迎加入飞桨官方推理部署QQ群:959308808
如果您想详细了解更多飞桨的相关内容,请参阅以下文档。
·飞桨官网地址·
https://www.paddlepaddle.org.cn/
·飞桨开源框架项目地址·
GitHub:
https://github.com/PaddlePaddle/Paddle
Gitee:
https://gitee.com/paddlepaddle/Paddle