前言:
近期推出的嵌入式AI系列直播公开课受到广大开发者的喜爱,并收到非常多的反馈信息,其中对如何在EAIDK上面部署Tengine开发AI应用感兴趣的开发者不在少数,我们将分2期以案例实操的形式详细介绍。
Tengine开源版本GitHub链接 https://github.com/OAID/Tengine
欢迎Git Clone!技术交流QQ群829565581,群里各位大佬坐镇,日常技术讨(shui)论(qun)~~
AI推动了社会智能化的发展进程,极大的提高了人们的工作效率,节省了工作时间。在AI赋能社会的同时,作为开发者也要了解AI如何从0到1,1到2,乃至2到3等的过程。
作为刚接触AI开发的开发者而言,了解AI的开发框架是至关重要的。AI的开发是一项庞大的系统性的工程,开发人员需要掌握一定的数学原理,编程能力,建模能力与数据分析能力等。
对于新开发者而言,先从相对简单的部署模型阶段学习,可以快速了解整个AI系统的运作,以及了解AI如何在人们的日常生活中产生实际作用。
对于现在市场上的AI框架而言,具有群雄争锋的局面,有Caffe,PyTorch,TensorFlow,MxNet,ONNX等一系列耳熟能详的训练与推理框架,但经过这些训练框架所训练出的模型在性能,精度,以及不同平台的适应性也各有千秋。对于初学者而言,从推理框架入手是一种很好的选择,在学习推理框架的同时,可以帮助初学者了解AI的整套体系是如何运作的。
在选择推理框架的时候需要结合现今模型部署的环境进行考虑。往日的AI模型训练常见于PC端,其往往忽略运行模型对于资源的调度,模型对于其加载设备功耗的使用。在AI的发展路程上,越来越多的开发者希望AI能用融入我们的生活,所以对于PC端的推理框架部署则越来越不被人们所接受。AI从往日的PC端,需要渐渐的转化为可移动设备端。在现今生活中,通过社会各界不断的努力,AI逐渐被人们所熟悉,例如人脸门禁检测系统,工业自动化中的物体分拣检测系统,以及现在众所周知的无人驾驶项目等一系列贴近人们生活的具体项目。
EAIDK 常见的模型部署方式如下:
直接部署原始训练框架具有如下特点:
不依赖框架,手写C/C++代码,实现计算图,并导入权重数据。 该种方法需要构造者对模型有充分的了解。对初学者而言,有一定的技术难度。
除了直接部署原始的训练框架,训练框架也有一些部署引擎,如TensorFlow 训练框架有TensorFlow-Lite ,PyTorch 训练框架有PyTorch-Mobile. 使用这些部署引擎具有如下问题:
Tengine推理框架具有如下特点:
插入视频https://v.qq.com/x/page/k093919fsa0.html
Tengine快速上手教程:物体检测应用入门(C版本)
EAIDK自带Tengine预编译库,无需手动编译。
Tengine预编译库路径:
/usr/local/AID/Tengine/
查看预编译库:
[openailab@localhost ~]$ ls /usr/local/AID/Tengine/lib/
libhclcpu.so libtengine.so
[openailab@localhost ~]$ ls /usr/local/AID/Tengine/include/
cpu_device.h tengine_c_api.h tengine_c_compat.h tengine_operations.h
输入下列命令可以查看Tengine版本信息:
sudo dnf info Tengine
详细信息如下:
Name : tengine
Version : 1.7.1
Release : 1.openailab.fc28
Arch : aarch64
Size : 5.8 M
Source : tengine-1.7.1-1.openailab.fc28.src.rpm
Repo : @System
Summary : openailab tengine library
URL : https://github.com/OAID/Tengine
…
EAIDK自带Tengine版本为1.7.1,后续Demo也是基于Tengine1.7.1版本,如果查询版本较低,需要输入下列命令升级Tengine版本:
sudo dnf updateTengine
对EAIDK初学者进行物体检测的环境搭建与运行,其目的是让初学者对Tengine在物体检测方面进行学习,为后期开发做好铺垫.
此指导教学为运用EAIDK自带后方摄像头进行图像的拍摄,可对图像中的物体进行检测,例如人,瓶子等.在此教学中运用了Tengine相关的函数以及运用OpenCV对图像检测方面的前后处理进行基础的教学指导.
安装环境需要在root权限下:
sudo su
依据以下指令安装OpenCV依赖库
sudo yum install opencv
sudo yum install opencv-devel
查询相关protobuf:rpm -qa | grep protobuf,应显示如下:
protobuf-3.5.0-4.fc28.aarch64
protobuf-compiler-3.5.0-4.fc28.aarch64
protobuf-devel-3.5.0-4.fc28.aarch64
如无上述显示,则运行如下指令:
sudo dnf install protobuf-compiler-3.5.0-4.fc28.aarch64
sudo dnf install protobuf-3.5.0-4.fc28.aarch64
sudo dnf install protobuf-devel-3.5.0-4.fc28.aarch64
yum install v4l-utils
目录Demo下进行编写,其路径:
/home/openailab/Demo
在上述文件夹下创建文件目录如下:
[openailab@localhost ~]$ mkdir mobilenetSSD
在文件夹中放入获取到的Tengine_Demo包中的mobilenet_ssd.cpp文件;
创建models文件夹.将模型MobileNetSSD_deploy.caffemodel MobileNetSSD_deploy.prototxt 以及convert_model_to_tm 工具放入到models文件夹中。
[openailab@localhost ~]$ cd mobilenetSSD
[openailab@localhost ~]$ mkdir models
在models 文件夹中,执行如下命令,将caffe模型转换为Tengine模型。
export LD_LIBRARY_PATH=/usr/local/AID/Tengine/lib/
./convert_model_to_tm -f caffe -p models/MobileNetSSD_deploy.prototxt -m models/MobileNetSSD_deploy.caffemodel -o models/tm_mssd.tmfile
转换成功后的Tengine模型在models目录下。
回到 mobilenetSSD 目录,编译可执行文件。
g++ mobilenet_ssd.cpp `pkg-config --libs --cflags opencv` -I /usr/local/AID/Tengine/include/ -L /usr/local/AID/Tengine/lib -l tengine -o mssd
设置高性能运行程序可用以下环境变量来设定,默认为1核运行,可设置成6核运行该程序:
export TENGINE_CPU_LIST=0,1,2,3,4,5
运行:
./mssd
点击查看完整文档:
Tengine快速上手系列教程&视频:物体检测应用入门(C++)
https://docs.qq.com/pdf/DUnFtd1J1bk1PVXNI
扫码添加OPEN AI LAB小助手,咨询产品/技术问题&加入技术交流群,和社群技术大佬畅聊AI
OPEN AI LAB(开放智能)专注边缘智能计算及应用。自主知识产权的边缘AI推理框架Tengine于2017年在GitHub开源,开源链接为https://github.com/OAID/Tengine?csdn 欢迎大家Star、Watch、Fork三连支持~~
ps:Tengine与OpenCV进行了深度战略合作,已通过ONNX官方认证,也被CSDN评为“开发者最喜爱的本土 AI 框架工具”!