Tengine快速上手系列教程&视频:物体检测应用入门(C++)-OPEN AI LAB

Tengine快速上手系列教程&视频:物体检测应用入门(C++)

前言:

近期推出的嵌入式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如何在人们的日常生活中产生实际作用。

EAIDK常见的模型部署方式

对于现在市场上的AI框架而言,具有群雄争锋的局面,有Caffe,PyTorch,TensorFlow,MxNet,ONNX等一系列耳熟能详的训练与推理框架,但经过这些训练框架所训练出的模型在性能,精度,以及不同平台的适应性也各有千秋。对于初学者而言,从推理框架入手是一种很好的选择,在学习推理框架的同时,可以帮助初学者了解AI的整套体系是如何运作的。

 

在选择推理框架的时候需要结合现今模型部署的环境进行考虑。往日的AI模型训练常见于PC端,其往往忽略运行模型对于资源的调度,模型对于其加载设备功耗的使用。在AI的发展路程上,越来越多的开发者希望AI能用融入我们的生活,所以对于PC端的推理框架部署则越来越不被人们所接受。AI从往日的PC端,需要渐渐的转化为可移动设备端。在现今生活中,通过社会各界不断的努力,AI逐渐被人们所熟悉,例如人脸门禁检测系统,工业自动化中的物体分拣检测系统,以及现在众所周知的无人驾驶项目等一系列贴近人们生活的具体项目。

 

EAIDK 常见的模型部署方式如下:

  1. 部署原始训练框架

直接部署原始训练框架具有如下特点:

  1. 需安装如TensorFlow/PyTorch/Caffe等环境;
  2. 推理性能差;
  3. 很多冗余功能;
  4. 内存占用大;
  1. 手动模型重构

不依赖框架,手写C/C++代码,实现计算图,并导入权重数据。 该种方法需要构造者对模型有充分的了解。对初学者而言,有一定的技术难度。

  1. 使用TensorFlow-Lite/PyTorch-Mobile等训练框架的部署引擎

除了直接部署原始的训练框架,训练框架也有一些部署引擎,如TensorFlow 训练框架有TensorFlow-Lite ,PyTorch 训练框架有PyTorch-Mobile. 使用这些部署引擎具有如下问题:

  1. 只支持自己框架训练的模型;
  2. 需要进行模型转换;
  3. 支持硬件/OS有限;
  1. 使用Tengine推理框架进行部署

Tengine推理框架具有如下特点:

  1. 可以直接加载主流框架的模型文件,无需进行模型转换即可直接在板子上运行神经网络算法(Caffe/TensorFlow/PyTorch/MxNet/ONNX(PyTorch)/DarkNet);
  2. 只依赖C/C++库,无任何第三方库依赖;
  3. 自带图像处理已支持图像缩放、图像像素格式转换、旋转、镜像翻转、映射、腐蚀膨胀、阈值处理、高斯模糊处理、图像编解码等;
  4. 自带语音处理(Roadmap)支持FFT/IFFT、MFCC等信号处理方式,方便完成噪声抑制、回声清除等语音处理工作;
  5. 支持Android/Linux/RTOS/裸板环境;
  6. PyThon/C++/AAP 等API接口,方便不同语言调用;
  7. 高性能计算,在板子上也可以跑出炫酷的Demo;
  8. 无需手动安装,EAIDK自带Tengine环境,直接使用即可。

 

 

插入视频https://v.qq.com/x/page/k093919fsa0.html

 

Tengine快速上手教程:物体检测应用入门(C版本)

Tengine环境搭建

    1. Tengine预编译库

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

 

    1. Tengine版本信息

输入下列命令可以查看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

 

 

Tengine 物体检测Demo(C++

    1. Demo 简介

对EAIDK初学者进行物体检测的环境搭建与运行,其目的是让初学者对Tengine在物体检测方面进行学习,为后期开发做好铺垫.

此指导教学为运用EAIDK自带后方摄像头进行图像的拍摄,可对图像中的物体进行检测,例如人,瓶子等.在此教学中运用了Tengine相关的函数以及运用OpenCV对图像检测方面的前后处理进行基础的教学指导.

    1. 运行环境

安装环境需要在root权限下:

sudo su

安装OpenCV

依据以下指令安装OpenCV依赖库

sudo yum install opencv
sudo yum install opencv-devel

安装Protobuf

查询相关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

 

安装OpenCV Video关联库

yum install v4l-utils

 

    1. Demo 编译与运行效果

创建目录

目录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 框架工具”!

你可能感兴趣的:(Tengine)