一直以来,树莓派以其良好的社区生态,广受嵌入式爱好者、创客欢迎。在一些相关的社区上(比如树莓派实验室),我们可以看到非常丰富的应用示例及其教程。但在树莓派上的深度学习应用并不常见,这主要是受到树莓派计算力的限制,比如之前看到过有人把yolov2原原本本生硬地部署到树莓派上,结果每一帧检测耗时高达6分钟!!作一帧目标检测花费6分钟这实在是无法忍受的!
如果是用yolov2-tiny的话会快很多,但耗时依旧接近40秒,参考树莓派3B上测试YOLO效果 | CSDN
那树莓派只能跟深度学习无缘了么?那可未必!
Tengine 是OPEN AI LAB为嵌入式设备开发的一个轻量级、高性能并且模块化的引擎。
Tengine在嵌入式设备上支持CPU,GPU,DLA/NPU,DSP异构计算的计算框架,实现异构计算的调度器,基于ARM平台的高效的计算库实现,针对特定硬件平台的性能优化,动态规划计算图的内存使用,提供对于网络远端AI计算能力的访问支持,支持多级别并行,整个系统模块可拆卸,基于事件驱动的计算模型,吸取已有AI计算框架的优点,设计全新的计算图表示。
sudo apt-get install git cmake
sudo apt-get install libprotobuf-dev protobuf-compiler libboost-all-dev libgoogle-glog-dev libopencv-dev libopenblas-dev
从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
CONFIG_ARCH_ARM64=y
这一行注释掉(行首加井号 #
)以关闭ARM64架构的优化实现;CONFIG_ARCH_ARM32=y
和CONFIG_ARCH_BLAS=y
这一行解除注释(删除行首的井号 #
)以开启BLAS计算库的实现方式编译并安装
make -j4
make install
这里的 -j4
表示开启四个线程进行编译
Tengine/models
目录下将工作目录切换到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开发者中心
Tengine/install/lib/libtengine.so
用上高性能的树莓派开发者版Tengine,看看mobilenet-ssd在树莓派上能表现如何——
Tengine/example
目录下CMakeLists.txt
文件中TENGINE_DIR变量是否正确指向Tengine路径cmake .
生成Makefilemake
编译程序./MSSD
运行程序
本文开头我们说道,
直接在树莓派上配置darknet部署的yolo网络,yolov2单帧耗时接近6分钟,yolov2-tiny单帧耗时接近40秒;
而在树莓派上配置Tengine部署的yolov2网络,在blas实现下单帧耗时不到8秒(参考利用Tengine在树莓派上跑深度学习网络 | songrbb),在针对armv7优化实现的开发者版下单帧耗时甚至不到2秒!
审核编辑 黄昊宇
全部0条评论
快来发表一下你的评论吧 !