查看: 1575|回复: 2

i.MX RT助您跨界AI ——3. 模型的部署

[复制链接]

该用户从未签到

72

主题

80

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
724
最后登录
2020-1-3
发表于 2019-1-21 21:42:45 | 显示全部楼层 |阅读模式
在上期中,咱们以“上帝视角”观察了把AI应用到MCU级平台上的全过程。

这其中非常关键的就是AI模型的转换与部署,它贯通了训练模型与使用模型的两个世界;并且有主要的2种方式,分别是把模型转换成对接平台底层库的代码,或者是在固件里安插一个执行引擎并把模型转换成对应的指令。

那么,它们大概长得什么样子呢?实话实说,小编这边确实把这两条道都趟过了,但还没有准备充分和大家见面,不过,至少今天可以先准备点见面礼吧。

QQ浏览器截图20190121213917.png

图1. 模型部署框图



本系列前两期文章:
i.MX RT助您跨界AI ——1. 开篇大吉
i.MX RT助您跨界AI ——2. 集成AI模块到系统中

模型转代码

想必大家都了解程序的编译过程,而这个模型转代码就仿佛是对模型的“编译”。只是对模型编译后的结果是C源代码,对C源代码编译的结果是机器指令。

在Cortex-M平台上,Arm提供了专用于执行神经网络操作的底层库,名为CMSIS-NN,它向上提供了C语言的API接口,支持常见的普通卷积、空间与通道分离的卷积,以及全连接型运算,还支持与主运算配套使用的激活、向下采样等辅助操作。这5种“积木”块的有机组合,足以构建绝大多数深度神经网络模型。

对于CMSIS-NN,小编后面会专门在一个主题里和大家好好聊聊它,这可是个关键角色。

我们可以形象地把CMSIS-NN看成是一个特殊的CPU,它提供了上面5条指令,而模型则是源代码,模型转代码就是把模型“编译”成CMSIS-NN的“机器语言”。

不幸的是,现在还没有现成的“CMSIS-NN通用模型编译器”。小编正在遵从毛主席的教导:“自己动手,丰衣足食”,先做一个能自给自足的“编译器”,再整理个像模像样的工具奉献给大家。

目前的进度,是可以编译出CIFAR-10和另一个复杂些的MobileFaceNet(人脸识别),接下来还需要做些debugging。

除此以外,恩智浦的MCU常有一些创新,比如异构双核,比如DSP和协处理器,它们对于提高模型的运行性能是大有裨益的。与此同时,获取模型的输入需要驱动一些外设(如摄像头,如麦克风)并且对数据做一些预处理。如果代码生成工具能针对具体的使用场景和器件生成对应的部分,无疑能显著改进针对具体器件和应用的性能,这也是我们今后努力的方向。




模型转中间表达

如果说上面模型转代码仿佛是编译的方式,那么把模型转换成某个执行引擎的中间表达,就像是“解释”的方式,而这个执行引擎就是解释器。

解释器既可以调用CMSIS-NN来在Cortex-M平台上提高效率,也可以内置底层NN运算库来提高通用性。因为在MCU平台上运行DL模型还基本是块新大陆,现有的执行引擎还没有针对CMSIS-NN优化,只能使用内置的通用NN库。

执行引擎的一个代表,就是Google的Tensorflow-Lite(简称TF-Lite)。TF的大名想必早已如雷贯耳,但这个TF-Lite却不是一个简化版的TF,而只是一个执行引擎,最主要的就是它不带有训练模型的功能。

Google提供了名为“toco”的工具,用于把TF模型(pb格式的文件)转换成TF-Lite能解释的中间表达。在集成到MCU时,把转换后的文件展成C数组定义或者放在SD卡中,并且把TF-Lite编译链接进MCU端的固件,就可以使用它了。

在当前的实践中,小编和小伙伴们在一个改版的TF-Lite上试跑了人脸识别和关键词口令识别的例子。




示例集锦

前面在OpenMV上的演示虽然非常生动,但整体系统规模较大,包装得也更加黑盒。因此,我们又制作了轻量级的例子,更加白盒,便于大家从源代码的水平上一窥AI模型运行的细节。

关于OpenMV上的演示,请看:视频展示——让机器视觉在i.MX RT上起飞

目前,我们这边在物体识别、语音口令识别、人脸识别上做了一些实践,其中一些相对较为成熟的成功,我们制作成了示例,最近已经有了内部Alpha发行版,相信在不久的将来,就会和大家见面!



远景规划——在线AI模型市场

实际应用中,常常出现一台硬件要跑不同模型的情况。比如说,一个零件加工厂的老板,他接收很多客户的订单,要加工的零件形状也千奇百怪。但有一个不变的需求,就是尽量检测出次品。

基于OpenMV RT可以很容易地改造出以机器视觉技术为基础的零件检测器,但是如果要训练一个模型能识别所有可能的零件及次品,那显然是不切实际的。

倘若有这样一个模型市场,可以让加工厂像装手机app那般,安装和卸载检测特定零件次品的模型,与模型开发者合作共赢,那是多么利国利民啊!

要实现这个美好愿景,需要优化过的AI应用执行引擎、云端市场、以及“后装应用”机制。恩智浦作为耕耘AI-IoT已久的老兵,早已在基于Linux的MPU平台上实践了“EdgeScale”云服务,可以在支持EdgeScale服务的设备上,轻松部署个性化的功能和迁移应用。

尽管MCU平台与MPU + Linux有大相径庭的区别,在我们一家老小的不懈努力下,最近成功尝试了通过EdgeScale在MCU(i.MX RT)上集成更新OpenMV RT固件,并部署新的应用功能。未来,会实现不更新整体固件而只安装应用模型,并作为平台提供模型市场,为发展MCU在AI-IoT的生态而尽一臂之力!

QQ浏览器截图20190121213940.png


图2. EdgeScale AI模型应用市场




总结

我得承认,这次小编更像在“画大饼”,并且又卖了不少新概念。好在这其中很多都已经有点样子了,不是只有ppt。
不想吊胃口,在接下来的连载中,小编就由表及里,由此及彼,渐渐把这张大饼给摊熟,以飨读者!



文章出处:恩智浦MCU加油站

回复

使用道具 举报

  • TA的每日心情
    慵懒
    2023-10-12 08:58
  • 签到天数: 188 天

    [LV.7]常住居民III

    1

    主题

    4032

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    18136
    最后登录
    2023-11-2
    发表于 2019-1-22 13:57:52 | 显示全部楼层
    虽然看不懂,但是还是要支持一下
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-6-16 09:38
  • 签到天数: 589 天

    [LV.9]以坛为家II

    3

    主题

    1039

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2387
    最后登录
    2020-6-16
    发表于 2019-1-23 13:15:17 | 显示全部楼层
    来点视频教程会更直接
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-25 14:10 , Processed in 0.127118 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表