Tengine 一个注重性能和兼容性的AI框架

嵌入式AI雪梨君 发表了文章 • 0 个评论 • 133 次浏览 • 2019-06-17 18:05 • 来自相关话题

前段时间,Tensorflow官方提供的本地编译的方式在Arm嵌入式设备运行Tensorflow Lite,我在11月中旬,使用本地编译的方式编译二进制的Label_image, 对RK3288 以及树莓派上做了性能的测试。<fi ...查看全部

前段时间,Tensorflow官方提供的本地编译的方式在Arm嵌入式设备运行Tensorflow Lite,我在11月中旬,使用本地编译的方式编译二进制的Label_image, 对RK3288 以及树莓派上做了性能的测试。

<figure>A17与A53 MobilenNet V1(fp) 性能对比<figcaption>A17与A53 MobilenNet V1(fp) 性能对比</figcaption></figure>

 

今天我想介绍一个我新发现并让我眼前一亮的框架Tengine.

Tengine 显著的优点是性能和兼容性,使用Tengine框架后运行性能可以得到大幅度的提升。

下图为MobileNet V1_1.0_224 浮点型模型单张图片分类在单核A53的性能对比。我们可以看到Tengine 有显著的优势。

<figure>MobileNet V1_1.0_224 浮点型模型单张图片分类在单核A53的性能对比<figcaption>MobileNet V1_1.0_224 浮点型模型单张图片分类在单核A53的性能对比</figcaption></figure>

 

Tengine 框架有着非常好的模型兼容性,支持直接加载caffe/mxnet/tensorflow模型文件,而不需要事先转换,而且用户仅需编译就可以利用Tengine的加速Caffe和Tensorflow性能。

Tengine 不仅可以让分类网络的性能大大提升,连大家众所周知的MobileNet-SSD 网络也能提升它的性能。很多人都觉得树莓派的性能不足以hold住检测网络,但是如果用Tengine框架就可以做到。

即使是开源版是每一帧的检测耗时仅为 286.136ms,足以看出Tengine的性能非常强大。

<figure>开源版上每一帧的检测耗时仅为 286.136ms<figcaption>开源版上每一帧的检测耗时仅为 286.136ms</figcaption></figure>

 

<figure>GPU用半浮点精度float16的检测结果准确无误<figcaption>GPU用半浮点精度float16的检测结果准确无误</figcaption></figure>

 

有兴趣的朋友可以看一下Tengine GitHub的主页,最近还推出了跑MobileNet分类网络的Android App, 手机端就可以使用AI 程序。

https://github.com/OAID/Tengine/?csdn010701

https://github.com/OAID/Tengine-app/?csdn010701

EAIDK-全球首个采用Arm架构的人工智能开发平台

嵌入式AI雪梨君 发表了文章 • 0 个评论 • 131 次浏览 • 2019-06-17 18:03 • 来自相关话题

EAIDK( Embedded Artificial Intelligence Development Kit)-嵌入式人工智能开发套件,是全球首个采用Arm架构的人工智能开发平台,专为 AI 开发者精心打造,面向边缘计算的人工智能开发套件。 ...查看全部

EAIDK( Embedded Artificial Intelligence Development Kit)-嵌入式人工智能开发套件,是全球首个采用Arm架构的人工智能开发平台,专为 AI 开发者精心打造,面向边缘计算的人工智能开发套件。

硬件平台具备语音、视觉等传感器数据采集能力,及适用于多场景的运动控制接口;智能软件平台支持视觉处理与分析、语音识别、语义分析、SLAM等应用的基础平台和主流开源算法,满足AI教育、算法应用开发、产品原型开发验证等需求。

学蠡科技

EAIDK搭载了ARM中国开发的人工智能应用开发平台 - AID,其核心专门针对于前端智能开发深度学习框架 - Tengine和支持异构计算、经过微架构级别优化的NN计算库 - HCL构成,同时包含丰富的ML/DL视觉、语音算法库。

EAIDK作为Arm中国嵌入式人工智能教育应用技术开发平台。所搭载的AID为应用开发者提供简洁、高效、统一的API,可加速AI产品实现以及场景化应用落地。

2018年9月14日,首届“Arm人工智能开发者全球峰会”上正式发布EAIDK,同时发布第一款套件EAIDK-610。EAIDK-610处理器使用RK3399,硬件平台具备丰富的接口扩展能力,同时使用AID提供强大的计算能力。

1560662272420619.jpg

EAIDK-610运行典型的深度学习算法,同等条件下,比基于原始Caffe的实现快3-5倍,内存占用下降一倍。

学蠡科技


围绕 EAIDK 官方提供以下资源及内容

1、完整体系化的使用说明文档;

2、AI技术基础/应用案例源代码及说明文档;

3、教学用算法源代码,以及从算法训练、调参到部署的详细说明文档;

4、商业场景化应用的典型实例分析和应用分析;

5、基于EAIDK的行业典型行业应用案例介绍;

EAIDK开放平台将为AI应用开发者带来三大助力优势:

1、缩短AI产品开发周期

软件和硬件层面 “模块化”的开发环境,开发者可聚焦于场景应用,搭建合适的软件、算法和硬件组合,减少系统搭建的麻烦。

2、提升开发效率

模块化的组织使EAIDK提供的开发环境,让软件、算法和硬件的配置和开发都极其便利,最大程度减少规格修改和平台移植带来的额外工作量。

3、更开放的环境

EAIDK使开发者能更方便地评估算法、传感器、硬件平台,同时更快导入新算法和应用,并持续改进,提高产品的竞争力。

EAIDK开发套件将创新者快速带入人工智能世界,同时也是商业产品开发者的最佳实施平台。

Tengine支持GPU / CPU异构调度

嵌入式AI雪梨君 发表了文章 • 0 个评论 • 50 次浏览 • 2019-06-17 17:49 • 来自相关话题

随着深度学习的快速发展,把深度学习算法部署到嵌入式设备的需求也日益增加。目前开源的嵌入式推理框架中,有支持ARM CPU加速推理的,也有支持GPU加速的,但这些移动端推理框架中,还没有一个框架能够进行CPU / GPU异构调度。 ...查看全部

随着深度学习的快速发展,把深度学习算法部署到嵌入式设备的需求也日益增加。

目前开源的嵌入式推理框架中,有支持ARM CPU加速推理的,也有支持GPU加速的,但这些移动端推理框架中,还没有一个框架能够进行CPU / GPU异构调度。

如今,Tengine作为ARM人工智能平台的软件框架,首次发布支持CPU / GPU异构调度。

Tengine的GPU / CPU异构调度的原理是:

下面我们将演示,如何调用Tengine进行GPU / CPU异构调度,进行检测网络MobilenetSSD的推理加速。

我们的测试环境是Linux的测试平台是开发板萤火虫RK3399:

Tengine是通过调用Arm Compute Library(ACL)进行GPU加速,我们使用的ACL版本为18.05:

为了发挥GPU的最高性能,我们需要设置GPU的频率到最高频率:

显示的 GPU 频率应该是 800000000 。

git clone Tengine项目:

在配置文件中打开开关CONFIG_ACL_GPU = y,并指定ACL路径:

编译:

下载MobilenetSSD模型,可以从[Tengine model zoo](https://pan.baidu.com/s/1LXZ8vOdyOo50IXS0CUPp8g)(psw:57vb)下载模型〜/ tengine / models /路径下:

执行时需要设置一些环境变量:

设置GPU_CONCAT = 0,是为了避免GPU / CPU在的concat这一层在GPU / CPU频繁来回传输数据造成性能损失;

设置ACL_FP16 = 1,是支持GPU用float16的数据格式进行推理计算;

设置REPEAT_COUNT = 100,是让算法重复执行100次,取平均时间作为性能数据;

taskset 0x1用于绑定CPU0(1A53)执行程序;执行的时候需要加-d acl_opencl来打开使用gpu的开关。

从下图可以看到,GPU用半浮点精度float16的检测结果是正确的。

我们对比了 Tengine 用纯 CPU 进行 MobilenetSSD 的推理计算的性能:

可以看出,通过GPU / CPU异构调度(GPU + 1A53)的性能大约是两个CPU大核A72的性能,且A53的占用率为50%左右。

Tengine支持的GPU / CPU异构调度,有两个方面的优势:

一方面,把NN网络中的主要算子在GPU运行,把特定算子在CPU上运行,使得开发者的开发成本大大降低,开发者可以快速通过Tengine将深度学习算法在GPU / CPU上运行起来。

另一方面,把深度学习算法跑在GPU上,其余的CPU计算资源就可以用于其他算法,比如SLAM中的特征提取,路径规划等算法,充分利用了GPU / CPU计算资源。

计算机视觉教学内容介绍-EAIDK-610

嵌入式AI雪梨君 发表了文章 • 0 个评论 • 49 次浏览 • 2019-06-17 17:47 • 来自相关话题

EAIDK-610是专为AI开发者和学生精心打造,面向边缘计算的人工智能开发套件。学生或者开发者可以使用此套件了解人工智能的相关知识,了解计算机视觉、人脸检测、人脸识别、双目立体视觉等相关算法,并且可以使用此套件做一些扩展,做产品原型的验证。 ...查看全部

EAIDK-610是专为AI开发者和学生精心打造,面向边缘计算的人工智能开发套件。学生或者开发者可以使用此套件了解人工智能的相关知识,了解计算机视觉、人脸检测、人脸识别、双目立体视觉等相关算法,并且可以使用此套件做一些扩展,做产品原型的验证。

EAIDK-610硬件平台(EAI610-P0)使用高性能Arm SoC(瑞芯微rk3399),搭载OPEN AI LAB嵌入式AI开发平台AID(包含支持异构计算库HCL、嵌入式深度学习框架Tengine、以及轻量级嵌入式计算机视觉加速库BladeCV)。为AI应用提供简洁、高效、统一的API接口,加速终端AI产品的场景化应用落地实现。

计算机视觉教学主要内容如下:


01图像采集

图像采集主要介绍如何对EAI610-P0的视频图像进行采集,以及介绍V4L2,RockchipISP和RockchipRGA 的概念及简单操作应用。

02图像处理

图像处理是指对图像进行分析、加工、和处理,使其满足视觉、心理或其他要求的技术。图像处理是信号处理在图像领域上的一个应用。图像处理通过对MIPI摄像头采集到的图像应用多种处理方法,介绍了数字图像处理领域的常用概念和基本方法。

03视频编码

视频编码教学案例的目的是介绍视频压缩的原理,并以EAIDK610为例展示一个实际的视频硬编码实例。主要介绍的视频压缩的概念和历史,同时着重分析了H.264标准,在此基础上采用EAIDK610上的硬件编码作为实例,希望达到理论和实践相结合的教学目标。

04视频解码

视频解码介绍视频压缩的原理,并以EAIDK610为例展示一个实际的视频硬解码实例。教学方案介绍的视频压缩的概念和历史,同时着重分析了H.264标准,在此基础上采用EAIDK610上的硬件解码作为实例,希望达到理论和实践相结合的教学目标。

05视频分析之背景提取

背景提取主要介绍在EAI610-P0的实时采集视频图像基础上的背景提取,着重介绍和实现基于混合高斯模型和CodeBook的背景提取算法,最后对结果简单分析,并对其他算法进行简要介绍。

06人脸检测(传统机器学习方法)

人脸检测是为了学习人脸检测的概念,了解传统机器学习人脸检测方法,展示传统机器学习算法及应用开发过程。本教学方案以haar+adaboost算法为例,从算法的原理分析开始,不仅介绍了算法训练的过程,也展示了算法在嵌入式平台(EAI610-P0)的部署。

07人脸特征提取(深度学习方法)

人脸特征提取是以人脸特征提取方案为例,展示完整的深度学习算法及应用开发过程,同时介绍人脸识别中的核心算法概念。此教学方案以Light CNN 为例,从算法的原理分析开始,不仅介绍了算法训练的过程,也展示了算法在嵌入式平台(EAI610-P0)的部署。

08双目立体视觉

双目立体视觉是学习立体视觉的概念,掌握用双目相机计算深度信息的方法。从双目相机标定及矫正原理分析开始,介绍双目立体视觉的基础理论方法,并且介绍了基于SGBM的深度计算算法,最终在嵌入式平台(EAI610-P0)上使用两个高清相机模组部署。

09人脸识别系统

人脸识别是以人脸特征提取方案为例,展示完整的深度学习算法及应用开发过程,以 Light CNN 1 为例 ,从算法的原理及特点开始,不仅介绍了算法训练的过程,也展示了算法在嵌入式平台(EAI610-P0)的部署 。

010双路人脸门禁系统

双路人脸门禁系统是以嵌入式人工智能开发套件(EAIDK-610)为基础平台,人员进门时,网络摄像机(IPC)连续抓取多张人脸信息,并毫秒级地比对抓取照片和底库信息,比对成功后触发开门动作,人脸抓取、比对结果和人员进门的信息在显示设备上实时展示。

011目标检测(深度学习方法)

目标检测方案是在嵌入式平台上进行机器视觉的目标检测,通过深度学习的方法实现对多目标物体进行检测并识别。使用Arm的嵌入式人工智能开发套件(EAIDK-610)为基础平台,通过网络摄像机进行视频数据采集,EAIDK-610作为边缘智能处理对视频进行分析,并实时显示分析结果。

EAIDK-嵌入式人工智能开发套件(Embedded AI Development Kit 简称EAIDK),是全球首个采用Arm架构的人工智能开发平台,专为 AI 开发者精心打造,面向边缘计算的人工智能开发套件。

硬件平台具备语音、视觉等传感器数据采集能力,及适用于多场景的运动控制接口;智能软件平台支持视觉处理与分析、语音识别、语义分析、SLAM 等应用和主流开源算法,满足AI 教育、算法应用开发、产品原型开发验证等需求。

请问一下:Ra-01/Ra-02 LoRa 模块作为终端节点,可以与这个开发板套件的SX1301网关进上下通信吗?

lorawan雪梨君 回复了问题 • 2 人关注 • 1 个回复 • 77 次浏览 • 2019-06-17 12:03 • 来自相关话题

Lora系统产品即将推出视频教程

lorawan雪梨君 发表了文章 • 0 个评论 • 104 次浏览 • 2019-06-12 14:31 • 来自相关话题

为了给客户提供更直观生动的使用体验,我司针对教学产品、开发套件将逐步推出系列视频教程。先期将针对lora/lorawan相关产品推出视频教程,敬请关注。下面是先导片: ...查看全部

为了给客户提供更直观生动的使用体验,我司针对教学产品、开发套件将逐步推出系列视频教程。

先期将针对lora/lorawan相关产品推出视频教程,敬请关注。下面是先导片:


https://www.bilibili.com/video/av45125243/





LoraWan网关最大可支持多少节点,网络容量有多少?

lorawan雪梨君 回复了问题 • 2 人关注 • 1 个回复 • 98 次浏览 • 2019-06-12 10:59 • 来自相关话题

LPKT001开发套件几个问题

lorawan雪梨君 回复了问题 • 2 人关注 • 1 个回复 • 79 次浏览 • 2019-06-12 10:18 • 来自相关话题

Gateway怎么恢复到原始状态?

lorawan雪梨君 回复了问题 • 2 人关注 • 1 个回复 • 61 次浏览 • 2019-06-11 17:03 • 来自相关话题

我是上周六拿到手的开发套件跑了一晚上,1301发热比较大,这个正常吗?

lorawan雪梨君 回复了问题 • 2 人关注 • 1 个回复 • 67 次浏览 • 2019-06-11 17:02 • 来自相关话题