绑定手机号
获取验证码
确认绑定
提问
0/255
提问
订阅开课提醒需关注服务号
回答成功
知道了
扫码关注智东西公开课服务号登录
请使用微信扫描二维码
扫描二维码分享给微信好友
您已订阅成功,有新课程,我们将第一时间提醒您。
知道了
发送提问成功
回答可在
“我的——我的提问”中查看
知道了
失败
欢迎来智东西
关注我们
智东西
车东西
芯东西
智东西公开课
0
0
RT-Thread 人工智能总监杨武42页PPT深入讲解嵌入式AI应用开发对操作系统的要求与挑战【附PPT下载】
分类: 嵌入式AI
2020-08-17 13:18:31

出品 | 智东西公开课

讲师 | 杨武 RT-Thread 人工智能总监

导读:

3月24日,RT-Thread 人工智能总监杨武在智东西公开课进行了一场直播讲解,主题为《嵌入式AI开发对操作系统的要求与挑战》,这也是嵌入式AI合辑第3讲。

在本次讲解中,杨武老师从全球物联网操作系统的竞争格局、嵌入式AI应用开发需求带来的挑战、RT-Thread应对策略及未来发展趋势等方面进行系统讲解。

同时和大家预告下,8月13日晚7点,智东西公开课推出嵌入式AI合辑第八讲,主题为《如何利用边缘AI计算提升架空输电线路巡检效率》,由视距智能技术总监刘春阳主讲。扫描文章底部的海报二维码或添加小助手小柯(ID:zhixixi1008)即可报名。

本文为此次课程主讲环节的图文整理,如需获取本次讲解完整PPT可在本公众号回复“嵌入式03”获取,同时点击文末【阅读原文】还可观看完整回放。

各位朋友大家好,我是RT-Thread 人工智能总监杨武,今天由我和大家一起来探讨嵌入式AI开发对操作系统的要求与挑战。今天我的分享的内容将分为以下4个部分:

1、全球IoT操作系统的竞争格局

2、快速增长的嵌入式AI应用开发需求带来的挑战

3、RT-Thread如何应对和推动嵌入式AI应用的开发

4、IoT操作系统的未来趋势

全球IoT操作系统的竞争格局

首先,现在处于一个什么样的阶段?从信息时代以来,先是有个人电脑,然后这些电脑又连成互联网。随着应用的广泛,我们进一步发明了移动互联网,让每一个人随时随地联网,现在世界大部分地区在经济条件允许的情况下,每个人都连接在一个网络里,这就是人联网。接着我们所使用的一切,环境里面各种各样的东西,也会联网、产生数据,也会是网络的一部分。

对于今天的话题,这意味着什么呢?PC时代,成就了一家公司叫微软,成就了一个操作系统,先是DOS,后来是Windows,Mac OS成绩也很好,但从最终的结果看还是Windows胜出。在互联网的发展过程中,也成就了一个开源的操作系统——Linux。在移动互联网时代,主要是iOS和Android操作系统,从市场份额上看是Android胜出,但iOS在高端市场上的占有率和利润都非常可观。在IoT时代,我认为也会有同样的竞争格局,会有一两家成为整个行业的头部,但不会像之前那样呈现一家独大的状态,可能会形成犬牙交错的格局,可能在某些领域里,一些操作系统会比较多,另外一些领域里面别的操作系统可能会抢占到一个固有的市场。但从宏观上来看,我相信物联网成为整个世界联网的常态之后,一定会有一家或者两家操作系统,成为这个行业里的领头羊。

熟悉嵌入式开发的朋友可能知道,很多时候没有操作系统,也可以做很多事情。在IoT时代,操作系统非常有意义,它能够帮助缩短产品开发周期、提高终端质量、加快端云的对接,更重要的是方便应用的部署,而且在产品的更新换代之间复用研究成果,也会很方便。

操作系统在IoT时代,相比于传统的嵌入式有些不一样,那就是联网的需求旺盛,因此系统的复杂度会随之提升,而且要有互联网竞争的思维,所以它的迭代周期也会变短。在这样的情况下,使用一个操作系统是必然的选择。

现今最受关注的领域是AI+IoT的 AIoT,这一类的设备能力不错,资源也可以。在这样的情况下,目前Linux和Android占到了接近80%的份额,RTOS大概20%左右,相应的他们并不是直接竞争的关系。在application processor级别的处理器方面,用Linux和Android会多一些,在M级别的处理器上,内存大小可能在MB或KB级别,用RTOS会更多一些,但他们可能会有不同种类的DSP,运算能力也不太一样,所以应用的领域相应也有所不同。如图中使用Android和Linux操作系统的应用包括个人助理、安防摄像头等;用RTOS比较多的应用比如故事机、手表之类的可穿戴设备,还有家电,总之偏消费类电子,Linux和Android偏经济类、工业类。

我们主要关注IoT和AI,这一类的处理器一般会挑一些能力比较强的处理器,称之为MPU,它比MCU的处理能力要强,而且通常是多核的,有能力跑Linux。那它还需要RTOS吗?

ST中国做过一个大样本的调查,如上图所示,可以看到左边的饼图,大约60%的用户觉得还是有需求的。为什么?因为MPU与更高端的手机,甚至电脑这一类的设备相比资源比较有限;另外,响应的要求也不太一样。有一部分厂商不需要RTOS,也不需要Linux,直接裸跑就好,这一类的厂商不在少数,但我相信他们慢慢的会过渡到RTOS上来。

在MPU/Cortex-A级别上,现在使用哪种RTOS呢?可以看到RT-Thread还是比较骄傲的,基本上可以占到调研覆盖用户的一半左右。另外是一些比较老牌的厂商,像QNX、VxWorks等。

综上,Linux和RTOS谁更好、更合适?其实没有这么绝对,重点要看下互相的优势和劣势。RTOS相比于Linux的优势首先是需要的资源少,所以成本就比较低;第二是硬件的需求小,体积也可以做的比较小,所以PCBA可以做的比较小;第三是资源低,主频要求不高,所以功耗要求就比较小,再加上一般功耗管理在RTOS上做的比较细,而且比较直接,所以这方面的优势也比较明显;第四是在实时性方面,以RT-Thread为例,它的实时性在微秒级甚至更低;第五是启动速度快,在使用家用电器时,都很习惯摁下去,立刻就要有反应;最后是用RTOS开发的复杂度低,如果组件和服务跟得上,开发周期会比较短。

当然RTOS也有劣势,第一个是与Linux相比,软件生态相对弱,Linux支持众多开源软件和流行标准;第二个是功能性,Linux支持的功能更丰富,更强大如MMU;第三个是开发生态,存量应用多,应用开发者更多。

总的来看,市场上越来越多的中高端的应用开始考虑用RTOS,就是实时操作系统,不管是在智能家居、车载、工业以及智慧城市等方面,过去认为嵌入式应用是偏中高端,现在这一类越来越多的考虑用RTOS,比如音箱或穿戴类设备。RTOS运行在MPU上日渐流行起来,关键是MPU做的产品所处的领域具有RTOS发挥优势的点。对于RT-Thread,RTOS有的优势肯定都有,同时相对于其他的嵌入式操作系统,RT-Thread 组件更丰富,软硬件生态也更好。

关于格局,首先我们所处的时代非常有意思,以前做RTOS往往都是小厂商,但是目前巨头们纷纷下场,这是为什么?前面讲了大时代,下一个大时代就是物联网,Next Big Thing不能错失,如果互联网公司的物联网入口被别人占据,那后面整个经济系统可能与没有抢到入口的公司无关,这是互联网行业一惯的思维。

另外是最近国际形势产生一个有意思的现象,全球化的进程,实际上在中美之间由于美国内部发生一些变化,导致进程严重受挫,而且极有可能未来又会逐渐的分裂成东西方两个世界,客观上让我们今后在看待整个IoT操作系统市场时,要把国内市场和国外市场分开来看。过去接到比较多的项目需求是芯片板卡这类,但现在越来越多的声音是厂商要做自己的操作系统,或者要做一个能控制的操作系统,甚至有条件的,不仅仅满足于我们这样的厂商去帮他做,他还要求自己的员工能吃透、掌握,这是国内近一年多来非常明显的变化。国际形势的变化,给国内的基础软件和硬件厂商带来了很多的机会,这种机会过去是几乎不存在的。

在这样的背景下,可以参考上图右边所示,属于云或设备商特有的解决方案或归属它的方案在下面,中立第三方在上面,左边是国内团队,右边是国外团队。可以明显看出在国内市场,国内团队做的东西份额本来就大,而且我相信未来会更大。

快速增长的嵌入式AI应用开发需求带来的挑战

嵌入式AI到底意味着什么?我们有一个观点,叫做三位一体,三位是物联网+边缘计算+AI,一体就是嵌入式AI了,物联网是一个基础平台,是整个社会信息化进程的下一个阶段,目前可能是几亿到十几亿设备的量,但很快它就会达到几十亿、上百亿。在这样的平台上,人工智能必然会成为它的一个中枢,仅依靠人去处理是不现实的,靠写程序找模式去处理也太慢,而边缘提供的是本地的算力,物联网的迅猛发展给AI提供了数据基础,AI以后在这个场景无处不在,但是很多时候我们仍旧需要在边缘做快速的响应,以及在边缘上有数据隐私和安全的问题。有了边缘计算,就能够在边缘高效的计算和存储,再加上在边缘上有AI,IoT整个生态就能够有机地形成起来,数据也能很好的控制。

讲了这么多嵌入式应用,但嵌入式AI到底是什么?给大家分享两段小视频。第一段是军事的视频:

这是一个很小的无人机,只有手掌心大,但它能完成非常复杂的任务,包括飞行控制、人脸识别、目标跟踪以及决定用什么样的线路。如果有军事爱好者,现在是5代机,下一代6代机会是什么呢?可能就是一个主僚机,或者一个有人机,一堆无人机配合的方式。

第二段比较熟悉,在疫情高发期,测体温肯定见到很多,有人拿测温枪离你很近,还是不太方便的。但如果有AR眼镜,它能够自动识别人哪里是高温区,然后把温度测出来,当然它的用途不止于此。

嵌入式AI的需求潜力巨大,整个市场大概估算下,安防图像类的年需求在2亿台左右,车载工业类的在6000万台,数量稍微少一点,但单价会比较高,利润也可以。触屏类的年需求在3亿台左右,AI语音类的年载需求在5亿台左右。

在巨大的需求下,它到底解决什么问题?我把嵌入式系统的智能化需求分为三大领域,第一个是感知交互领域,像语音的唤醒命令,语音合成,这是语音领域的感知和交互;然后是传感器,各类的震动、烟感、红外,都属于传感器的范畴;图像类的目标检测、物体和目标识别也是;第二个是信息加工类,比如通过手机的摄像头拍到的图片,一定是处理过的;还有声音,要防抖、抗风声,这些都是很常见的应用;还有一些不是很直观的,比如特征提取类和信息重建类的;第三个是自主决策类,上面提到的飞行控制、自动驾驶,还有很多需要现场及时响应,比如要改进现有的烟感,需要区分是有人在下面抽烟,还是现场确实起火,可能就需要联合多个设备在现场做决策。

这样复杂的需求会给带来很多开发上的挑战。首先是人员的挑战,不同的人有不同的领域,不同的背景,做嵌入式AI应用要牵涉到很多人,有做算法模型的,有做嵌入系统开发的,有做整个业务设计的,还有做前端、后端的,每个人的背景不一样,思维方式也不一样,这会带来很大的问题。

除了人的挑战外,要在边缘实现AI落地,还有很多技术上的挑战。所谓边缘层,其实是一个很广泛的领域,设备的能力可以千差万别,从很大到很小,但普遍来看,他们会有比较多的IO方面的需求,然后对于多任务的实时性、响应的速度也比较敏感。这一类的情况会带来很多的问题,我把它归纳以下6大类:

1、碎片化,很多芯片组有不同的指令,DSP/NPU异构、云平台等,碎片化导致当前做的一个版本在未来可能又要重做一遍,重用度不高。

2、数据安全,数据安全很复杂,系统应尽可能提供整体的解决方案。

3、多媒体处理,音频、视频传感器得到的各种数据,输入输出都需要处理,交互的形式可能是图像或者是声音,这种情况下,多媒体的处理要能很方便的在系统里面封装好。

4、资源少,嵌入式系统资源相对比较弱,比服务端要少很多。

5、响应要求高,运算、电池容量都比较小,但是响应速度要求又很高,一般要求是毫秒级响应。

6、持续学习,如果在本地有训练的能力,应该要能够做增量的训练,开发起来还是有一定复杂度的,让每一家厂商自己去做,难度太高。如果本身不具备这样的能力,可能就要依靠模型更新。

RT-Thread如何应对和推动嵌入式AI应用的开发

面对像MPU这一类中高端的市场,我们的答案是新一代的RT-Thread。

新一代的RT-Thread会是一个微内核结构,音视频框架会进一步的完善,AI框架会集成在内,还有图形化的IDE,实现集成式的开发。

新一代的RT-Thread的基本架构如上图所示,可以看到内核态和用户态已经分离出来,它顺应MPU的应用开发领域,在这样的领域里,开发人员的心态、认知的模型已经习惯了用户在内核态,另外,业务本身复杂了以后,保护也会比较重要,我们会有一个很小的内核,所有东西在用户态和内核态之间可以自由切换,这是一大特色。基于这样的平台,我们相信过去的积累,可以直接沿用下来。第二,在新的领域我们会更加有竞争力。

音频播放器是一个非常重要的组件,我们已经有一个非常成熟的解决方案,它还会是我们整体解决方案之一。

嵌入式语音终端的交互解决方案是一整套解决方案,从收音到播音,再到唤醒词、打断、回声消除、麦克风降噪,包括如何在有条件的情况利用DSP加速,没有的情况下怎么样利用处理器的浮点指令集,或者是SIMD的指令集。

下面重点介绍AI解决方案的框架,在下一代的操作系统里面有一个边缘AI加速框架,它的核心是定点神经网络,底下是RT-Thread的操作系统内核。上游有PC/Server端训练,这是对接产业里面的标准,不管是Keras还是Tensorflow的忠实粉丝,或者是其他的工具,都会有一个灵活的模型对接接口,通过模型训练和量化、裁剪的工具转换成能对接的模型。同时在下面可以看到,不同的处理器,会遇到碎片化的问题,这是框架必须要去解决的。在底下有封装层,可以利用现有厂商提供的功能,或者各个厂商自己提供的各种各样的NPU/DSP,在框架上对接多种模型。这样能很好的回答前面的挑战问题。

第一,模型要为小型设备优化,常用的手段有剪枝、量化、知识蒸馏、紧性卷积核等。有了上面的框架后,就能对接多种模型,模型可以用C++展开,权重和代码都捆绑在一起,结构都是C++的代码。这样部署非常简单,对系统没有什么负担。也可以是网络用C++展开,但权重是独立的,可以加载进来,好处是方便更新,但也会有一些现实的挑战,比如是用静态内存还是用动态内存?

硬件也一直在快速的演进,处理系统在不停的增加各种指令集,还有各种各样的NPU。针对平台,只要做算子本身的一些优化就可以。

操作系统层的异构计算的框架以及驱动,都可以把不同架构复杂的东西屏蔽掉,你只需写个driver或者跟我们一起做个driver就可以。

前面提到延迟是嵌入式或实时响应最大的敌人,一方面系统要启动快,另一方面系统响应要快,响应还要稳。可以通过缩小内核来加快启动速度,还要减少系统调度的干扰,IO这块希望需要的时候,不要一层一层的驱动,要能够直接去访问它。相应的系统要有很高的可裁剪性,这方面我们有一套图形化的裁剪工具。对于安全性,像航天、电力的需求对可靠性的高要求也能满足。驱动框架本身很灵活,有不同的封装层。

前面提到持续学习是个系统工程,前端收集与后端强大的运算能力一起,我们在操作系统上会有非常灵活的支持。

IoT操作系统的未来趋势

首先,物联网终端的会越来越多,过往用按钮、按键、控制杆,以后会有各种酷炫漂亮的触屏UI,图形交互越来越重要。多应用加载进来,要进行安全隔离,信息数据、通信要可靠与加密等,访问权限要控制,隐私要保护。

AI与多媒体结合起来,在整个行业会成为一个非常日常的现象,低资源占用和低功耗占用会受到越来越高的重视。在这种的趋势下,OS会怎么发展呢?带有丰富中间件的OS会流行起来,单纯的内核OS终究会淡出市场。OS的一致性平台,会成为大型企业的普遍诉求,因为OS本身碎片化很厉害,如果说一套解决方案里面用到各家的东西,然后每家系统都不一样,用起来就会很麻烦,我相信越来越多的人会希望平台是一致的。

在低资源占用、安全性、多媒体这方面,我相信专业的IoT/OS厂商会负担起为大家解决问题的工作,让大家更聚焦于核心业务,同时未来可能有很多是脚本开发,小程序开发,这也使得一个创业团队或者一个小团队也能做很大的事情。

RT-Thread 人工智能总监杨武42页PPT深入讲解嵌入式AI应用开发对操作系统的要...
立即下载