讲师 | 邱建斌 瑞芯微Toybrick AI开拓平台卖力人
提醒 | 关注智东西公开课"大众号,并回答关键词 嵌入式01,即可获取课件。
导读:

瑞芯微Toybrick AI开拓平台卖力人邱建斌今年3月曾在智东西公开课进行了嵌入式AI合辑第一讲的直播讲解,主题为《AI开拓平台如何帮助嵌入式开拓者加速运用产品化落地》。
在本次讲解中,邱建斌老师首先从嵌入式AI的发展现状与寻衅入手,先容了两款Toybrick AI开拓平台紧张在用的两款芯片及在平台支配的上风,末了先容了后续的产品方案。
本文为这次专场主讲环节的图文整理:
正文:
大家好,我是瑞芯微Toybrick AI开拓平台卖力人邱建斌,很荣幸能在智东西公开课和大家一起分享本日的课题。本日禀享的主题为《AI开拓平台如何帮助嵌入式开拓者加速运用产品化落地》,紧张分为以下4个部分:
1、嵌入式AI的发展现状与寻衅
2、Toybrick AI开拓平台解析
3、Toybrick系列在嵌入式视觉运用高效开拓与支配上的上风
4、Toybrick的后续产品方案
嵌入式AI的发展现状与寻衅
嵌入式AI一样平常也会被称作边缘打算,针对边缘打算与云真个AI打算,以前很多的算法公司都会在PC或者显卡上面做一些打算,以是云端打算能力会强一些,而且云端打算的能力可以比较平滑的去做一些事情。但云端打算也面临一些局限性,比如AI运算的及时性、运算速率及算力上本钱的局限性等,以是很多算法公司须要把一些算法转化成产品,他们就会希望采取边缘打算办法,提高研发成果转化到市场的过程。以是,现在很多AI的算法公司,包括一些研究的机构会去摸索如何快速的把研发成果转化成产品,这样它们才能在市场上赢得先机。
但现在的问题是各家NPU的IP都不太相同,以前在PC上面做的事情到边缘打算上会面临很多问题,它会花费比较长的韶光去熟习不同的平台。第二点是很多算法公司及一些研究机构,不具备硬件开拓能力,有些乃至不太理解底层硬件的平台。以是他们在开拓过程中会相比拟较困难、周期比较长。 我们把相对应的这部分硬件平台做的相对完善,并且可以供应一些案例给到一些开拓者,让他们可以快速在一些原来的算法上做一些评估,终极可以快速的转化成产品。
Toybrick AI开拓平台解析
在2019年Toybrick AI开拓平台,硬件上供应不同系列开拓平台和参考设计知足不同用户群体,软件上供应稳定可靠的系统平台、丰富的开拓工具、AI传授教化案例和开源的社区。我们平台希望是可以供应高效、便捷、稳定的开拓环境,让开发者迅速上手AI运用开拓,加速AI行业产品研发进程,提升行业运用生态。
现在平台上面紧张是用我们的两款带有NPU芯片做的。首先,第一款是RK3399Pro芯片,如果有一些同学用过3399可能比较清楚,与3399比较,3399Pro只是多了一款NPU。首先先容下NPU的规格,这款NPU有1920个INT8的MAC打算单元,192个的INT16的打算单元,64个FP16的打算单元,最高可以跑800MHz。其他的性能也比较强,像CPU有双核的A72+A53,GPU为Mali的4核T860,同时支持5.1的eMMC。在视频编辑码这块能力也比较强,可以也是4K 60帧,264、265都可以解,可以支持1080p的编码,也支持安全的OP-TEE架构,包括支持Widevine Level1和PlayReady干系。显示接口也是比较丰富,比如有4k的输出等,视频输入的接口是比较多的,以是它可以广泛利用不同的场景。我们有两路的13MPixel ISP与MIPI CSI-2接口,USB处理单元,这两路是独立的。我们还有Type-C跟USB 3.0以及PCIe接口。
第二款便是RK1808芯片,对付RK 1808这款芯片,它有双核的A 35,它的NPU与3399相同,其他详细的参数信息可以看上图。RK1808不带GPU,以是与3399 pro的差别是除了NPU以外,3399 pro的打算性能更强以及视频编解码能力比较强,1808相比拟较弱一点,由于它定位于做一个企业处理预算,做AI的NPU的推理事情,它也有一些接口可以做通讯,像RGMII还有PCIe、USB3.0,这些都是可以用。
我们有两款基于RK 1808芯片做的产品:神经网络打算棒以及Mini-PCIe的子卡,他们的紧张事情是做 AI的推理。PCIe的子卡紧张是U3的结果通讯,会在后面详细的先容。
对付NPU的预算性能,我们跑了一些比较常见的模型,像VGG 16有46.4 FPS,ResNet50是70 FPS,MobileNet可以跑到190FPS。MobileNetV2_SSD可以达到84.5FPS,YOLO_v2可以达到43.4FPS。同时还支持一些语音识别的模型,我们也供应一些工具,可以比较快速的转化像Caffe、TesnsorFlow、PyTorch主流架构的模型。
上图是我们现在在网上有发售的,我们把芯片干系的一些比较高速的接口已经标出来,可以供大家可以直策应用,然后快速的在他们产品上面去做评估。它是比较高速的,比如说PCIe、USB等,同时它也可以跑Android 8.1和Linux,在板上设计上面都有供应,而且曾做过比较大的稳定性测试,全体板子的稳定性跟系统稳定性都比较好。
下面先容下核心版的产品,由于许多客户没有硬件能力,以是我们核心版的办法是客户可以自己设置底板,然后根据它的产品形态,可以去设计不同的规格。核心板器的尺寸是69.6毫米×70毫米,采取紧凑尺寸的办法去实现。
1808上面也有所先容,我们目前给开拓者可以快速评估的便是打算棒。人工智能打算棒,我们供应相应的案例,让我们的客户可以直接在不同的平台上运行,比如在windows、Android及比较低真个平台也都可以运行。我们还有一种形态是Mini-PCIe,由于它可以支配到产品上面,如果平台上有PCIe接口,可以比较平滑的升级它的产品,只要把它放上去,原来产品就可以附着一个AI的功能,然后加上相应的软件去合营。
现在AI很多都是基于机器视觉干系的,环绕在摄像头这块。以是我们有一些开拓套件,合营视频解码芯片,后面的剖析模块是1808。实在它是通用于38mm38mm安防标准尺寸,这样一些安防的客户可以直接把板子塞到他原来的模具里面,可以快速的升级原来的产品形态,并附着一个AI的功能。相较之下,其他芯片厂商灵巧性会差一点点,我们实在相对会有更open一点,以是很多不同的模型及算法都可以在我们上面去跑。
下面大略先容下RK3399Pro NPU运用范例架构,从前面的Camera进来,他的GPU可以做一些前处理,通过OpenGL卖力画图以及显示,NPU紧张是做推理,CPU可能是做系统调度,这样可以比较好的折衷各个预算单元,专门去做对应专业的一个事情,这样产品的功耗也比较低,而且它的帧率也比较高,由于它不用去帮忙做推理,而且也有利于降落CPU跟GPU的负载。这也是NPU比较有利的一点,它可以大大降落CPU跟GPU的负载。
对付数据处理流程,全体流程是比较大略,它通过USB的HOST端,它这边有可能是PC或者我们的一个板子,或者我们原来的已有的平台,然后把模型的数据通过USB传输到我们的打算棒,然后在打算棒上面进行推理,可以得到结果,然后再通过你的画面进行后处理,就可以显示出来。
针对我们的NPU有供应RKNN ToolKit,它实在是一些转换工具。由于不同的框架像Caffe,TensorFlow、PyTorch都是不一样的,我们要先转换成RKNN的模型,由于在上一级可以供应模型转换、推理跟性能评估。由于它是一个工具,以是在利用过程中可以做一些仿照调试,性能预估或内存预估,这是在开拓过程中是一定会用到的。
开拓流程也相比拟较大略,第一步是须要把不同框架的深度模型转换过来,像TensorFlow、Caffe、TF Lite、ONNX、Darknet模型都须要用我们的工具前辈行转换,转换完之后把转换成出来的RKNN模型,放到NPU的预算单元里面,然后我们会加载模型文件,之后再把输入数据,像音频、视频图像,但是你可能须要一些前处理,须要做一些scale,把一些图像进行裁剪,接下来就可能调一个函数接口进行模型的推理,处理完之后就可以得到接口,比如说你放一个车牌的图片进去,我就可以得到一个车牌的号码,这是一个大致的开拓流程。
不同的模型通过RKNN转换完之后,它可以通过Python或者C++的接口进行调用,开拓工具实在是做一个模型的快速转换、性能的评估,以及进度的预测,然后可以进行终极的一些调试,验证终极的精度。
Toybrick系列在嵌入式视觉运用高效开拓与支配上的上风
在AI这方面我们也做了一些初步的demo,我们称为Rock-X AI SDK,这块我们实在已经做了很多,比如现在比较常见的一些模型算法,像人体骨骼关键点、人脸特色点、手指的关键点、人脸检测、人脸识别、活体检测、人头检测、人脸属性剖析及车牌识别。
对付新零售现在有两个方向,像自动售货柜、自助收银、自助称重。现在很多都有双屏异显的一个需求,由于它上面可能会推动一些广告,我们从上面的框图可以看到,它最紧张是摄像头采集,对付摄像头的接口,我们可以支持MIPI的接口,USB可以接多个,乃至摄像头的数据可以通过网口的进来,显示接口也比较多,可以支持eDP跟HDMI。我们支持默认系统DDR&NDDR跟eMMC的SD卡,同时有PCIe的接口可以支持转接SATA硬盘存储。
现在新零售的自动售货柜,它基本上都会有4-6个的摄像头,有时客户做物体识别,基本上一个摄像头可以跑满30帧旁边,我们可以解4k 60帧,你也可以换算下其他的分辨率,最高可以是4k 60帧的多路视频。
第二个便是大型商超做自助收银,它可以直接识别物体,不像原来会扫码的动作,而且也可以通过摄像头+算法防止商品的丢失。它接口上面的差异可以通过网口来获取数据,由于摄像头有可能在比较高处,比拟传统的方案,大型商超和小型商超如果你用显卡的做事器来做,它可能相对布线比较繁芜一点,然后灵巧性没那么高。如果用边缘打算这种办法,它直接到终端,支配比较方便,然后它的本钱也会相对较低,以是现在很多不同的公司都会往这边去发展,用3399Pro实现这样的一个功能。
还有一个运用是3399 Pro与1808现在很多人做边缘打算做事器,在终端做NVR跟AI网关,它直接就可以跑Linux OS,实在安卓相较于Linux的一个上风是安卓只管即便可能做的更俊秀一点,不像刚才新零售须要做一些广告或者其他的部分,它的接口部分的差别是摄像头数据是通过网络进来的,其他部分外围相比拟较少,本地也可以把对内的数据存下来,通过PCIe的SATA接口转为硬盘存储。
它运用处景比较广的,像做边缘做事器用NVR和AI都可以用,包括做智能路灯之类,而且一个边缘打算做事器可以处理多个摄像头,不单单是一个摄像头,有多个数据出来,可以时分复用的办法去处理。
上图是一些运用处景,比如1808在安防摄像机,做人脸的检测与跟踪、智能运动检测、区域入侵、绊线检测与车牌识别。这也是我们为什么会做一个安防的套件,由于嵌入式AI很大比例的产品集中在机器视觉,这紧张依赖摄像头来做。
还有零售的摄像机,它做人流统计、热点统计及动作检测,包括对行为的剖析。对付家用安防摄像头,它可以做人、宠物与汽车的检测和识别,快递包裹放下和拿走的检测。边缘打算在这些产品上有一些上风,它可以直接拿原始数据进行处理,这样特色更丰富一些,相对之前的云端打算,它可以减少网络的传输,相应速率更快,功耗更低,本钱也会更低。
另一种方向是现在做DMS,DMS是在客车上面做安全,像两客一危,一辆车上面会有多个摄像头去检测,比如说你前端去检测驾驶员打哈欠、吸烟、打瞌睡儿、看手机、打电话之类的动作。这样客车公司可以拿这些数据来做一些检讨之类的,还可以做一些ADAS的功能,车道偏移报警,碰撞预警,交通标志识别,同时也可以做做盲点探测、行车记录、语音交互。我们可以接多个摄像头,例如也可以N4的板,最多可以接6路,编码我们可以6-8路的编码。
由于你原来的产品形态上面,在1808上面通过比较小的改动,就可以做比较好的产品设计,你原来可能不止在这一块,通过PCIe模块或者设计的一个小模块,对接到我原来的产品平台上面,它可以变成一个支持AI功能的产品,可以比较方便来做产品升级。扫地机器人通过激光导航 + Camera实现检测物体,智能避障,还有儿童故事机,指尖识别,同时也支持麦克语音阵列。
对付NPU,有些客户的模型会比较大或者摄像头的路数比较多,还须要比较强的打算能力。我们可以通过多个打算棒或者平台模块进行算力叠加。比如一个NPU或一个 1808打算棒,它可能只能处理几路,这须要根据实际的模型的情形来定,如果有很多路就有可能就要多个,以是我们也有一个多路的 demo。
Toybrick的后续产品方案
后续的方案紧张集中在RKNN,像Pytorch已经支持了,前面做了一些事情是稠浊量化、联机调试,做了一些优化加快模型的加载韶光,然后也对接上Tensorflow 2.0,末了也会对TF-Keras做一些优化。我们也会供应一些案例,像条码和二维码、OCR、语音识别等。
后续还会根据我们新的产品、芯片以及不同的产品方向,推出一些硬件平台,来给予我们的开拓者可以快速的开拓。