模型小型化,why?
AI 服务的计算环境发生了翻天覆地的变化,已逐渐从云端向移动端和 IoT 蔓延渗透。据统计,近几年AIoT 的市场规模以40%以上的实际速度在增长,而且预期未来几年还保持着一个相当高的增长趋势。与此同时,也带来了前所未有的新型交互需求。比如,在智能屏音箱上,不方便语音的时候使用手势控制;看视频时,在耗电量微乎其微的情况下,可以通过表情识别,为你喜欢的视频自动点赞。
图1 沉浸式、无感知的新型交互需求
然而,一个反差是,硬件的计算能力,从云到移动端、到 IoT,算力以三个数量级的比例在下降,内存也在大幅下降,尤其是边缘芯片内存只有 100K。而实际需要运行在这些 AIoT 设备上的算法需要关注的三个方面,即:算法效果(精度)、计算速度(FLOPs)、模型大小。最理想的选择是算法效果好、计算量低,尤其是实际耗时要少,同时,模型要小到内存足够放得下。
而云端上的经验告诉我们,要想效果好,模型得足够大!
那怎么样解决这个矛盾呢?很多专家提供人工经验去设计端上的模型,并且得到了广泛的应用。
然而这些依旧存在两个问题:
如何利用现存优秀的云端模型。
如何产生任务自适应的模型。
对于这两个问题,我们给出的答案是:模型小型化!
图2 PaddleSlim-效果不降的模型压缩工具箱
我们希望在有限计算资源的情况下保持效果不降,对已有模型进行压缩,并针对任务自动设计出新模型,这些功能都浓缩在百度飞桨和视觉团队共同研发的 PaddleSlim 工具箱里,自去年对外开源 PaddleSlim,这个工具箱的内容到现在一直还在持续丰富,从量化、蒸馏、剪枝到网络结构搜索,一应俱全。
截止到现在,我们通过 PaddleSlim 打磨出了用于通用任务的分类、检测和用于垂类任务的人脸识别、文字识别(OCR)等多个业界领先的工业级小模型,它们是 SlimMobileNet、SlimFaceNet、SlimDetNet、SlimTextNet 等等。
为了进一步促进模型小型化技术的产业应用,PaddleSlim 将开源所有 Slim 系列模型!
图3 Slim 系列模型开源
我们的最新成果
近日,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 网络为主干的 YOLOv3 模型,适用于移动端部署环境,因为冗余信息更少,所以压缩难度较大,在 PaddleSlim 剪枝和蒸馏的共同作用下模型参数和计算量均有65%以上的减少,同时精度只有略微的降低。具体实验数据如表2所示。
注:SlimDetNet v2(MV3_YOLOv3)输入大小为320,测试环境是骁龙845;SlimDetNet v1(MobileNetV1-YOLOv3)输入大小为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 2020Real 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...
图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/PaddlePadd...
对检测模型的 head 部分进行剪枝时,推荐使用 PaddleSlim 的敏感度分析方法和 FPGM 通道重要性评估方式。相关教程详见:
https://github.com/PaddlePadd...
OCR 模型压缩方案的完整代码和教程请参考:
https://aistudio.baidu.com/ai...
参考链接
本文示例代码放在百度一站式在线开发平台 AI Studio 上,链接如下:
https://aistudio.baidu.com/ai...
本文提到的 Slim 系列小模型的更多详细内容请参见 PaddleSlim 项目地址:
https://github.com/PaddlePadd...
PaddleSlim 是基于百度飞桨提供的开源深度学习模型压缩工具,集深度学习模型压缩中常用的量化、剪枝、蒸馏、模型结构搜索、模型硬件搜索等方法与一体。目前,依靠 PaddleSlim 百度大脑打造了三位一体的度目系列自研产品,当 PaddleSlim 和其他视觉算法在硬件上结合时,也赋能了许多其他应用场景,小度在家的手势控制;好看视频 APP 的表情识别;国家电网智能巡检解决方案......从智慧分析、智慧社区,再到驾驶管理、产业赋能,基于 PaddleSlim 百度大脑已经打造出一个特有的“软+硬”视觉时代,并时刻守护生活的每个角落。
如果您在使用过程中有任何问题,欢迎加入官方QQ群,您将遇上大批志同道合的深度学习同学。飞桨官方推理部署 QQ 群:959308808