Tengine-Lite框架是OpenAILAB公司出的适用于边缘设备面向芯片SoC优化的一款推理框架,主要甚至可以让人工智能模型在stm32这样的低功耗的单片机上运行,是由最早的Tengine框架衍生过来的。

http://www.openailab.com/int/ability/list2.html

大多数学习过人工智能或者自己炼丹过的工程师,在模型出炉之后都会担心两个问题:

  1. 我做的模型需要起码1080ti才能运行,这实际落地怎么办?
  2. 炼丹用的python,这效率感人呀,但是C炼丹不会。

Tengine-lite正好解决这两个问题,我们先看一下官网上的Tengine的系统架构,不管是模型优化以及各种加速单元的支持。

img

opencv的编译

在安装Tengine框架前最好是编译一下OpenCV,有的demo是需要opencv的。具体OpenCV的介绍就不用多说了,宇宙第一计算机视觉算法库,我们先编译一下OpenCV。

  1. 相关依赖的安装
sudo apt updatesudo apt-get gcc cmake gitsudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-devsudo libjasper-dev

2.下载源码并解压

wget https://github.com/opencv/opencv/archive/4.1.0.zipunzip 4.1.0.zip

3.编译opencv

cd opencv-4.1.0mkdir build && cd buildcmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..make -j4sudo make install

4.环境变量以及pkgconfig设置(一定要sudo,要不会没有权限):

sudo nano /etc/ld.so.conf.d/opencv.conf

打开后是个空白的文件,在文件的例输入如下指令并使用快捷键保存,nano的快捷键在terminal下面有提示。

/usr/local/lib

应用刚才配置后的设置:

sudo ldconfig

​ 配置bash文件(一定要sudo,要不会没有权限):

sudo nano /etc/bash.bashrc

输入如下指令并保存(pkgconfig的路径需要自己找一下可以用whereis pkgconfig来查询):

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH

应用配置并更新:

source /etc/bash.bashrcsudo updatedb

在完成后很多小伙伴可能出现使用pkg-config opencv --modversion时超不到opencv.pc文件的问题,主要原因有两个:

  1. 刚才安装的是opencv4。
  2. opencv4.pc文件可能没有拷贝到pkg文件中。

针对上述问题,我们可以使用如下步=步骤进行修改:

pkg-config opencv4 --modversionlocate opencv4.pcsudo cp -f 你的opencv4.pc的path /usr/lib/pkgconfig/

Tengine-Lite的编译

在测试opencv没问题后我们进行tengine-lite的编译与安装,tengine-lite的编译安装是相对opencv容易一些。

  1. 下载源码(一定要使用如下指令下载,因为lite暂时是分支):
git clone -b tengine-lite https://github.com/OAID/Tengine.git  Tengine-Lite

2.编译tengine-lite:

cd Tengine-Litemkdir build cd buildcmake ..make -j4sudo make install

BenchMark

我们首先测试一下Benchmark,Benchmark是测试硬件运行神经网络的最好测试方法。我们首先确认/Tengine-Lite/benchmark/models路径中是否有benchmark的模型文件,如果存在,我们运行如下命令(mobilenet为例):

./comvert_tm_tool -f caffe -p mobilenet_v1.prototxt -m mobilenet_v1.caffemodel -o mobilenet_v1_benchmark.tmfile

指令参数:

[Usage]:  [-h] [-r repeat_count] [-t thread_count] [-p cpu affinity, 0:auto, 1:big, 2:middle, 3:little] [-s net]

RetinaFace测试

接下来我们测试一下Retinaface的效果,我们首先需要准备好测试的图片和模型文件,整个tengine的模型文件在如下链接中,根据需求下载:

链接: https://pan.baidu.com/s/1YO9frM2TU4v9wWQ_0NGMTg  密码: 8d47

根据自己的结构目录输入测试指令:

./tm_retinaface -m 你的models_path/retinaface.tmfile -i 你的images_path/test4.jpg -r 1 -t 1

terminal出现时间以及box等信息:

img

运行的结果如默认保存在build/examples文件中,可以根据自己的需求修改程序,结果下所示:

img