Tengine 揣度引擎:树莓派也能玩转深度进修

2019-09-29 新亚网 新亚网整理
浏览

Tengine 推断引擎:树莓派也能玩转深度学习

来自 Hey~YaHei! 的投稿,感激~

一直以来,树莓派以其精采的社区生态,广受嵌入式喜好者、创客接待。在一些相关的社区上(好比树莓派尝试室),我们可以看到很是富厚的应用示例及其教程。但在树莓派上的深度进修应用并不常见,这主要是受到树莓派计较力的限制,好比之前看到过有人把yolov2原原本本生硬地陈设到树莓派上,功效每一帧检测耗时高达6分钟!!作一帧方针检测耗费6分钟这实在是无法忍受的!
假如是用yolov2-tiny的话会快许多,但耗时依旧靠近40秒,参考树莓派3B上测试YOLO结果 | CSDN

那树莓派只能跟深度进修无缘了么?那可未必!

Tengine

OADI/Tengine | github

Tengine 是OPEN AI LAB为嵌入式设备开拓的一个轻量级、高机能而且模块化的引擎。
Tengine在嵌入式设备上支持CPU,GPU,DLA/NPU,DSP异构计较的计较框架,,实现异构计较的调治器,基于ARM平台的高效的计较库实现,针对特定硬件平台的机能优化,动态筹划计较图的内存利用,提供对付网络远端AI计较本领的会见支持,支持多级别并行,整个系统模块可拆卸,基于事件驱动的计较模子,吸取已有AI计较框架的利益,设计全新的计较图暗示。

编译安装开源版Tengine 安装相关东西 sudo apt-get instal git cmake 安装支持库 sudo apt-get install libprotobuf-dev protobuf-compiler libboost-all-dev libgoogle-glog-dev libopencv-dev libopenblas-dev

protobuf 是一种精练高效的数据存储名目,这是caffe各类设置文件所利用的数据名目

boost 是一个c++的扩展措施库,稍后Tengine的编译依赖于该库

google-glog 是一个google提供的日志系统的措施库

opencv 是一个开源的计较机视觉库

openblas 是一个开源的基本线性代数子措施库

下载&编译

从github上下载最新的开源版Tengine源码 git clone https://github.com/OAID/Tengine.git

切换事情目次到Tengine cd Tengine

筹备好设置文件
Tengine目次下提供了设置模板 makefile.config.example 文件

cp makefile.config.example makefile.config

修改设置文件 makefile.config
由于开源版的Tengine不支持针对armv7的优化,所以需要用openblas替代实现;

将 CONFIG_ARCH_ARM64=y 这一行注释掉(行首加井号 #)以封锁ARM64架构的优化实现;
清除 CONFIG_ARCH_BLAS=y 这一行清除注释(删除行首的井号 #)以开启BLAS计较库的实现方法

编译并安装 make -j4 make install

这里的 -j4 暗示开启四个线程举办编译

测试

下载mobilenet-ssd模子并安排在 Tengine/models 目次下
下载链接:https://pan.baidu.com/s/1jzPADdCAah4y8NMk3P9Exg

将事情目次切换到mobilenet-ssd示例措施的目次下 cd ~/Tengine/examples/mobilenet_ssd

编译示例措施 cmake –DTENGINE_DIR=/home/pi/Tengine . make

这里 -DTENGINE_DIR用于为cmake指定情况变量TENGINE_DIR,该变量可以在CMakeLists.txt文件中找到

运行示例措施 ./MSSD

可以看到对一张照片举办方针检测,总共耗时1148.32ms

Tengine 推断引擎:树莓派也能玩转深度学习

树莓派专用教诲版Tengine

最近 Open AI Lab公司 和 浙江大学生物医学工程与仪器科学学院 在嵌入式人工智能规模上开展相识说相助,公司为学院提供了速度更快的针对armv7优化的Tengine版本用于解说用途(已上传到 Github),接下来让我们看看这个树莓派专用教诲版的Tengine到底有多快吧!

用树莓派专用教诲版Tengine的动态链接库包围掉原先的开源版
动态链接库路径为:Tengine/install/lib/libtengine.so

编译时,make会在build目次下发生libtengine.so动态链接库,而make instll将动态链接库、头文件等拷贝到install目次下

Tengine 推断引擎:树莓派也能玩转深度学习

从头运行mobilenet-ssd的示例措施
可以看到,单帧耗时从1148.32ms下降为286.136ms,速度有了很是明明的晋升!

Tengine 推断引擎:树莓派也能玩转深度学习

小试牛刀

用上高机能的树莓派专用教诲版Tengine,看看mobilenet-ssd在树莓派上能表示如何——

为了利便,视频流直接从mp4文件读取,原始视频如下:

从 hey-yahei/my_blog/RasPi-Tengine/mobilenet-ssd | github 上下载源码,并安排在 Tengine/example 目次下

查抄 CMakeLists.txt 文件中TENGINE_DIR变量是否正确指向Tengine路径

执行 cmake . 生成Makefile

执行 make 编译措施

执行 ./MSSD 运行措施

实际结果如下: