EmbeddedAI 嵌入式人工智能

项目简介


      “人工智能(AI)”这个词可能是当下科技资讯中曝光率最高的词汇了,听得人耳朵都起茧子了。至于什么是人工智能,为什么说人工智能是第四次工业革命,小编在这里就不啰嗦了。小编想说的是,人工智能目前给人的感觉是:超强的 CPU 处理能力 + 高性能 GPU、TPU 异构计算平台,其实这是一个误区,未来的人工智能将“无处不在”,大到超级计算机,小到一颗物联网芯片。人工智能很好的弥补了传统计算体系的缺陷,使计算机系统真正有了智慧。让计算机拥有智慧的过程,与人类对事物的认知过程一样,首先需要学习(机器学习),我们称之为训练的过程,训练过程实际上是让机器掌握一类事物的规律(经验),然后可利用这个经验来推理未来事物的规律。从已知推理未知这就是智慧

      在机器学习这个技术发展的过程中,有一种方法脱颖而出,叫做“深度学习(Deep Learning)”,目前热火朝天的人工智能,大多数都是基于深度学习的方法设计,为了加速这个学习过程,我们一般使用高性能的计算机平台进行训练,当计算机积累的经验足以能够处理某种问题时,我们就说这个神经网络已经训练好了,可以进行正常的推理工作了,那么问题来了:训练好的神经网络(NN)是否必须使用高性能处理器进行推理工作?答案是否定的,在高性能计算机上训练好的神经网络模型,完全可以装入一颗嵌入式处理器上运行,这就是今天要说明的重点:嵌入式人工智能。


      由于人工智能具备可训练可推理能力,用简单的话讲:可以像大脑一样运算,那么人工智能的运算结果跟大脑一样,是一个概率性推断,所以如果将人工智能应用在一些“与人生命息息相关”的产品中,例如自动驾驶,则需要考虑形式化的“安全边界”设计,最近几起自动驾驶致人死亡的悲剧恰恰说明了“安全边界”与传统“系统工程”安全设计的重要性。那么能不能将传统“系统工程”安全设计方法与“人工智能”融合?答案是可能的(系统工程是个复杂的安全体系,不只涉及软件安全边界与容错,也涉及硬件与传感器安全与容错设计)。

      翼辉信息在第一时间已经开始跟踪人工智能技术,我们要解决的核心问题是:人工神经网络如何在嵌入式处理器上运行,如何让传统的经过安全性验证的嵌入式平台(SylixOS 正在进行 IEC61508、EN50129 相关认证)运行人工神经网络。这些问题的细节,我们将会以连载的方式慢慢阐述。

      下面给大家汇报点阶段性成果:

      目前较为流行的深度学习框架包括:TensorFlow、Caffe、MXNet 等等,这些框架支持的神经网络模型可以通过对应的工具进行相互转换。SylixOS 目前支持的深度学习框架为:TensorFlow 与 NCNN。

      目前 SylixOS 平台支持的深度学习模型有两大特点:

      1.支持多种深度学习神经网络模型的数据导入与运行;

      2.可跨平台运行神经网络模型(ARM、x86、MIPS、PowerPC……)。

      基于以上特点,用户可方便选择自己合适的硬件平台,也能使用自己熟悉的深度学习框架进行人工神经网络训练开发,将训练好的模型导入到 SylixOS AI 平台都是非常的容易。


      这里插一句:关于硬件加速,由于人工神经元实际上是使用形式化的卷积神经模型来模拟生物学上神经元的工作过程,这个计算过程会涉及到大量向量、矩阵、张量的计算,传统的 CPU 设计就显得力不从心,所以当前引入了很多异构向量运算协处理器来加速神经网络计算,例如:GPU、TPU 这些协处理器的使用,可以大大提升卷积神经网络的计算速度,当然传统 CPU 也并不是说对于向量计算毫无优化,例如:ARM的NEON 单指令多数据流(SIMD)向量指令集,x86 的 AVX 向量指令集和 CETC 中电十四所华睿2号向量处理器等,只要能够合理利用这些向量指令,在推理运算过程中,也可以获得较为满意的加速效果。


我们来看看实际效果:


SylixOS 平台 NCNN 框架实际效果

      NCNN 目前支持的 ARM 与 x86 平台都已在 SylixOS 操作系统上运行成功。

      需要说明的是:NCNN 可以使用 ARM NEON 向量指令集和 x86 AVX 向量指令集进行运算加速。同时 SylixOS 支持 OpenMP 并行计算,本次测试也默认启动了并行计算加速。


本次测试使用 squeezenet v1.1 模型,测试数据为一张北极狐的照片:


硬件平台:Zynq7000 ARM Cortex-A9 双核,667-800MHz 主频(使用 NEON 指令加速)

加载并运行 NCNN:

硬件平台:x86 Core i5-4590(启用 AVX、SSE 指令加速)

      以上测试中一个训练好的实例神经网络,在不同的硬件平台上均能够正确判断出目标图片:北极狐。

      经过变换输入图片包括:老虎、鸭子、飞机等多种输入源,均能够正确判断。


SylixOS 平台 TensorFlow 框架实际效果

      TensorFlow 是谷歌基于 DistBelief 进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor 意味着 N 维数组,Flow 意味着基于数据流图的计算,TensorFlow 为张量从流图的一端流动到另一端计算过程。TensorFlow 是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。

      之前提到嵌入式人工智能最核心的任务为推理过程,在目标机上一般除收集数据外,不进行训练操作(一般为后台训练),所以我们在实际使用过程中,可直接使用仅支持推理功能的 TensorFlow Lite。


      本次测试使用谷歌官方提供的 mobilenet 训练模型。

      测试程序未启用硬件加速功能,也未使用 CPU 的 SIMD 指令加速,将在后续版本加入支持。


我们设计了一个简单的可视化程序来显示推理结果:

识别程序运行时,SylixOS 命令行终端的输出如下:

      以上测试结果显示,程序能够正确识别出目标为:金毛猎犬。


更多功能和计划


未来:

      我们将面向:自动驾驶、机器人(ROS-RT)、智能交通、智能武器系统等领域推出跨平台的人工智能产品。能够支持:ARM、MIPS、x86、PowerPC、RISC-V 等处理器。

      我们将推出基于 SylixOS 操作系统的“卷积运算协处理器”标准加速接口。

再未来:

      我们会推出 RISC-V +AI 单芯片 SoC 人工智能解决方案,从应用层、操作系统、驱动程序到 CPU + AI 硬件加速等,提供极致优化的一体化人工智能解决方案。

终极目标:

      我们会推出全套图形化 AI 开发系统,在 IDE 中集成 AI 专属工程类型(训练、推理),支持各种图形化、可视化 AI 数据工具。


      嵌入式人工智能时代已经来临,他已经不只是个噱头、热点词汇,更可以与传统计算平台融合为一体,成为一个可落地,应用领域广泛的新一代计算技术。