过去的很长一段时间里,恩智浦在各个渠道发表了很多篇关于AI机器学习的文章。里面有介绍神经网络基础知识的,模型设计原理的,还有一些人脸识别,图像分类的示例。

 

很多童鞋看了心痒痒,想要验证一番。奈何没有配套软硬件,无法施展。是不是有种空有屠龙技,没有风火轮,混天绫的遗憾啊!

 

在这里向大家隆重推出,基于MCU平台的AI机器学习开发套件:OpenART。

 

智能车参赛的童鞋可能已经听说过了。没错,OpenART的首发亮相就是今年智能车竞赛,AI视觉组里的图像识别模块。

 

OpenART的软件是由NXP研发。原型开发使用的硬件平台是i.MX RT1060 EVK,最近又乔迁到了逐飞(SeekFree)公司的SeekFree ART开发板上。野火公司也很快会推出一款Fire ART开发板。这三款开发板使用的都是i.MX RT1060系列高性能跨界处理器。但OpenART项目不止限于高性能的AI应用,后面,我们还打算移植到与逐飞合作的一款基于LPC55xx的IoT开发板。

 

NXP i.MX RT1060-EVK

 

 

 

OpenART的硬件采取模块化设计,有两排扩展口,其中一排兼容树莓派的通信接口,支持多种数据采集运算。高度集成设计,尺寸与名片大小相仿,可以方便集成到各种使用场景。

 

输入端口
OMV4 Camera

  • 板载支持2个I2S麦克风,可扩展8个I2S麦克风阵列

 

  • 板载支持加速传感器,陀螺仪,压力,温湿度,光线传感器

 

  • 支持8路ADC数据采集

 

  • 支持SPI高速WIFI模块

 

输出控制端口


一只贴片喇叭或者3.5毫米耳机接口,由MQS.LEFT通过D类功放来驱

 

  • RGB LED和一个独立LED

 

  • USB device口,模拟出虚拟串口

 

  • TF卡接口,存储脚本和数据

 

  • SPI LCD显示

 

  • IO扩展8080

 

  • 云台载具(PTV)扩展口

 

看到这些这些明星阵容,各位童鞋有没有怦然心动啊?没错,就是这么大方。

 

OpenART的BSP主要实现如下功能:

基于神经网络的机器学习和深度学习,比如:

 

  • 图像处理,图像分类,人脸识别

 

  • 语音触发,音源定位

 

  • 多媒体数据的机器学习(异常检测,姿态识别,智能控制策略)

 

  • 智能可运动物体(模仿+强化学习)-机电联动:云台载具

 

  • 模型验证,人工智能教育

 

OpenART里包含了3个各有千秋的神经网络推理引擎,分别是NN, NNCU, 和TF。

 

  • NN 这是OpenMV在3年前最早实现的简易引擎,是开山之石般的存在,也启迪了我们的工作。

 

虽然现在看上去比较单薄了,但可以运行OpenMV早期提供的一些例子(.network文件),包括识别手写数字的lenet.network。它需要Caffe来训练模型,并且使用OpenMV提供的2个脚本来量化,只支持线性拓扑。不建议为它训练新模型。

 

  • NNCU,去年了解过电磁AI的同学可能对它已经有印象了。

 

NNCU是我们基于CMSIS-NN和自己的扩展制作的一套完整的工具,使用CMSIS-NN传统API,可以达到最高的性能。尤其是在搭配了我们特色的权重缓存功能,在大型模型上的性能提升可达2-5倍!不过,由于量化机制比较简单,只支持2的方幂的放大倍数,在 8位量化精度在大型模型上稍有下降。

 

NNCU使用Keras来训练模型,它的工具可以从https://pan.baidu.com/s/1eQADEHg8UVhTsZWT_lRRgw来下载。

 

  • TF,这是OpenMV最新基于TensorFlow lite micro制作的引擎,使用CMSIS-NN的新一代”_s8” API,量化系数不再有2的方幂的限制,并且每个通道有自己的量化系数,可以达到最高的8位量化精度,但牺牲了少量性能。它甚至可以支持浮点模型,当然这也是以牺牲性能为代价的。

 

TF可以导入.tflite文件,一般使用TensorFlow来训练模型。

 

下面的小表总结了这3个引擎各自的特色。

 

 

由于NNCU和TF都可以使用Keras API,我们建议使用Keras或tf.keras训练模型。如果模型不大(小于10层主运算)先使用NNCU上量化,否则先用TF量化,在精度与性能间权衡。

 

机器视觉处理:OpenART项目包含了OpenMV软件在i.MX RT1060上的移植,可以使用OpenMV的功能和示例。

 

MCU教育。基于MicroPython,实现了python对基础外设的控制。并且独创了管脚动态管理模块CMM,通过CMM动态配置管脚,不用更改烧录固件既可以切换管脚不同的功能。

 

 

从图中可以看出,OpenART集成了现在最火爆的RTOS:RT-Thread。基于RTOS,各位童鞋可以愉快地添加自己的应用而不影响其它模块。而且通过RT-Thread的开发环境,可以集成RT-Thread Online packages。

 

试想一下机器学习+Cloud,是不是很炫酷呢!

 

小编在这里透露一下,OpenART预计第一季度,也就是三月份与大家见面。代码计划在GitHub开源。未来可能会允许有想法,有能力的童鞋提交一些比较好的应用代码,软件模块。是不是特别的期待呢??