通知设置 新通知
基于深度学习的目标检测实现方案介绍
雪梨君 发表了文章 • 0 个评论 • 1930 次浏览 • 2019-06-17 18:09
目标检测(也叫目标提取)是计算机视觉和数字图像处理的一个热门方向,一种基于目标几何和统计特征的图像分割,它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。尤其是在复杂场景中,需要对多个目标进行实时处理时,目标自动提取和识别就显得特别重要。
简单的说,目标检测就是把一张图或一个视频里面的目标物找出来,比如我要找摩托车,这就是目标检测。而人下一刻它到了什么地方,这就是目标跟踪问题,本文暂不讨论。
本文主要介绍基于深度学习的目标检测实现方案的实现原理及基础单元组成。
视频名称:基于深度学习的人脸识别双路门禁系统
视频地址:https://v.qq.com/x/page/v0852d7yppd.html
视频中介绍的案例是在嵌入式平台上进行机器视觉的目标检测,通过深度学习的方法实现对多目标物体进行检测并识别。使用Arm的嵌入式人工智能开发套件(EAIDK-610)为基础平台,通过网络摄像机进行视频数据采集,EAIDK-610作为边缘智能处理对视频进行分析,并实时显示分析结果。
◆◆展示方案由三个单元组成
1、网络摄像机(IPC)
高清1080P视频编码支持,作为为视频采集单元将采集到的视频信息进行编码后通过网络传输给边缘智能处理单元EAIDK-610;
2、EAIDK-610
边缘测智能单元,执行功能包括:接收IPC的视频流并进行解码,视频分析,检测并识别视频中的目标,通过HDMI接口进行实时显示;
3、显示终端
对用户显示视频分析(目标检测)结果。
此方案中显示终端的显示效果如下:
EAIDK-嵌入式人工智能开发套件(Embedded AI Development Kit 简称EAIDK),是全球首个采用Arm架构的人工智能开发平台,专为 AI 开发者精心打造,面向边缘计算的人工智能开发套件。
硬件平台具备语音、视觉等传感器数据采集能力,及适用于多场景的运动控制接口;智能软件平台支持视觉处理与分析、语音识别、语义分析、SLAM 等应用和主流开源算法,满足AI 教育、算法应用开发、产品原型开发验证等需求。
Tengine 一个注重性能和兼容性的AI框架
雪梨君 发表了文章 • 0 个评论 • 2727 次浏览 • 2019-06-17 18:05
前段时间,Tensorflow官方提供的本地编译的方式在Arm嵌入式设备运行Tensorflow Lite,我在11月中旬,使用本地编译的方式编译二进制的Label_image, 对RK3288 以及树莓派上做了性能的测试。
今天我想介绍一个我新发现并让我眼前一亮的框架Tengine.
Tengine 显著的优点是性能和兼容性,使用Tengine框架后运行性能可以得到大幅度的提升。
下图为MobileNet V1_1.0_224 浮点型模型单张图片分类在单核A53的性能对比。我们可以看到Tengine 有显著的优势。
Tengine 框架有着非常好的模型兼容性,支持直接加载caffe/mxnet/tensorflow模型文件,而不需要事先转换,而且用户仅需编译就可以利用Tengine的加速Caffe和Tensorflow性能。
Tengine 不仅可以让分类网络的性能大大提升,连大家众所周知的MobileNet-SSD 网络也能提升它的性能。很多人都觉得树莓派的性能不足以hold住检测网络,但是如果用Tengine框架就可以做到。
即使是开源版是每一帧的检测耗时仅为 286.136ms,足以看出Tengine的性能非常强大。
有兴趣的朋友可以看一下Tengine GitHub的主页,最近还推出了跑MobileNet分类网络的Android App, 手机端就可以使用AI 程序。
https://github.com/OAID/Tengine/?csdn010701
https://github.com/OAID/Tengine-app/?csdn010701
EAIDK-全球首个采用Arm架构的人工智能开发平台
雪梨君 发表了文章 • 0 个评论 • 2611 次浏览 • 2019-06-17 18:03
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提供强大的计算能力。
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异构调度
雪梨君 发表了文章 • 0 个评论 • 1280 次浏览 • 2019-06-17 17:49
随着深度学习的快速发展,把深度学习算法部署到嵌入式设备的需求也日益增加。
目前开源的嵌入式推理框架中,有支持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
雪梨君 发表了文章 • 0 个评论 • 1196 次浏览 • 2019-06-17 17:47
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 教育、算法应用开发、产品原型开发验证等需求。