0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:电子设计 作者:电子设计 2020-12-10 22:06 次阅读

一直以来,树莓派以其良好的社区生态,广受嵌入式爱好者、创客欢迎。在一些相关的社区上(比如树莓派实验室),我们可以看到非常丰富的应用示例及其教程。但在树莓派上的深度学习应用并不常见,这主要是受到树莓派计算力的限制,比如之前看到过有人把yolov2原原本本生硬地部署到树莓派上,结果每一帧检测耗时高达6分钟!!作一帧目标检测花费6分钟这实在是无法忍受的!
如果是用yolov2-tiny的话会快很多,但耗时依旧接近40秒,参考树莓派3B上测试YOLO效果 | CSDN

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

Tengine

OADI/Tengine | github

Tengine 是OPEN AI LAB为嵌入式设备开发的一个轻量级、高性能并且模块化的引擎。
Tengine在嵌入式设备上支持CPUGPU,DLA/NPU,DSP异构计算的计算框架,实现异构计算的调度器,基于ARM平台的高效的计算库实现,针对特定硬件平台的性能优化,动态规划计算图的内存使用,提供对于网络远端AI计算能力的访问支持,支持多级别并行,整个系统模块可拆卸,基于事件驱动的计算模型,吸取已有AI计算框架的优点,设计全新的计算图表示。

编译安装开源版Tengine

安装相关工具

sudo apt-get install git cmake
  • git 是一个版本控制系统,稍后将用来从 github 网站上下载Tengine的源码
  • cmake 是一个编译工具,用来产生make过程中所需要的Makefile文件

安装支持库

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 是一个开源的基础线性代数子程序库

下载&编译

  1. 从github上下载最新的开源版Tengine源码

    git clone https://github.com/OAID/Tengine.git
  2. 切换工作目录到Tengine

    cd Tengine
  3. 准备好配置文件
    Tengine目录下提供了配置模板 makefile.config.example 文件

    cp makefile.config.example makefile.config
  4. 修改配置文件 makefile.config
    由于开源版的Tengine不支持针对armv7的优化,所以需要用openblas替代实现;
    CONFIG_ARCH_ARM64=y 这一行注释掉(行首加井号 #)以关闭ARM64架构的优化实现;
    解除 CONFIG_ARCH_ARM32=yCONFIG_ARCH_BLAS=y 这一行解除注释(删除行首的井号 #)以开启BLAS计算库的实现方式
  5. 编译并安装

    make -j4
    make install

    这里的 -j4 表示开启四个线程进行编译

测试

  1. 下载mobilenet-ssd模型并放置在 Tengine/models 目录下
    下载链接(提取码为57vb):https://pan.baidu.com/s/1LXZ8...
  2. 将工作目录切换到mobilenet-ssd示例程序的目录下

    cd ~/Tengine/examples/mobilenet_ssd
  3. 编译示例程序

    cmake -DTENGINE_DIR=/home/pi/Tengine .
    make

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

  4. 运行示例程序

    ./MSSD

    可以看到对一张照片进行目标检测,总共耗时1148.32ms

树莓派开发者版Tengine

开发者版下载地址:Tengine下载 - Tengine开发者中心

  1. 用树莓派开发者版Tengine的动态链接库覆盖掉原先的开源版
    动态链接库路径为:Tengine/install/lib/libtengine.so
    编译时,make会在build目录下产生libtengine.so动态链接库,而make instll将动态链接库、头文件等拷贝到install目录下
  2. 重新运行mobilenet-ssd的示例程序
    可以看到,单帧耗时从1148.32ms下降为286.136ms,速度有了非常明显的提升!

小试牛刀

用上高性能的树莓派开发者版Tengine,看看mobilenet-ssd在树莓派上能表现如何——

  1. hey-yahei/my_blog/RasPi-Tengine/mobilenet-ssd | github 上下载源码,并放置在 Tengine/example 目录下
  2. 检查 CMakeLists.txt 文件中TENGINE_DIR变量是否正确指向Tengine路径
  3. 执行 cmake . 生成Makefile
  4. 执行 make 编译程序
  5. 执行 ./MSSD 运行程序

本文开头我们说道,
直接在树莓派上配置darknet部署的yolo网络,yolov2单帧耗时接近6分钟,yolov2-tiny单帧耗时接近40秒
而在树莓派上配置Tengine部署的yolov2网络,在blas实现下单帧耗时不到8秒(参考利用Tengine在树莓派上跑深度学习网络 | songrbb),在针对armv7优化实现的开发者版下单帧耗时甚至不到2秒

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1789

    文章

    46576

    浏览量

    236893
  • 树莓派
    +关注

    关注

    116

    文章

    1686

    浏览量

    105439
  • 深度学习
    +关注

    关注

    73

    文章

    5459

    浏览量

    120863
  • Tengine
    +关注

    关注

    1

    文章

    47

    浏览量

    2831
收藏 人收藏

    评论

    相关推荐

    树莓电脑能玩网游吗?

    其实接触之初就想问了。树莓电脑连接七寸屏能玩网游吗?比如说什么QQ自由幻想。LOL什么的。
    发表于 09-09 17:41

    Firefly支持AI引擎Tengine,性能提升,轻松搭建AI计算框架

    `Tengine 是OPEN AI LAB 为嵌入式设备开发的一个轻量级、高性能并且模块化的引擎。基于ARM平台高效的计算库实现,针对特定硬件平台的性能优化,吸取已有AI计算框架的优点,设计全新
    发表于 08-13 15:58

    树莓的深刻含义

    要想玩转树莓,首先得知道树莓是什么。在本节中,作者将带领大家揭开树莓
    发表于 08-06 06:10

    硬件创客开源设计教程资料汇总,带你玩转树莓

    AD/DA,树莓派系列教程18:SPI 开源硬件创客15个酷应用玩转树莓的PDF电子书:本书共18章。前3章是本书的基础章节,主要介绍了树莓
    发表于 05-18 14:35

    树莓pico入门学习笔记(一)相关资料推荐

    树莓pico入门学习笔记选择自己熟悉的编程语言树莓pico提供C/C++和micropython两种编程语言开发环境,但是“人生苦短,我
    发表于 07-01 09:28

    树莓_库函数安装教程

    树莓_库函数安装教程,树莓嵌入式拔高篇,非常适合新手学习
    发表于 01-14 15:12 32次下载

    如何玩转树莓

    技术大拿带你玩转树莓,聊聊树莓的那些事!
    的头像 发表于 05-30 15:03 3588次阅读
    如何<b class='flag-5'>玩转</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>

    树莓是什么树莓的简单介绍

    要想玩转树莓,首先得知道树莓是什么。在本节中,作者将带领大家揭开树莓
    发表于 05-15 18:09 30次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>是什么<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的简单介绍

    Mipsology Zebra在深度学习推断的应用

    Zebra 可消除深度学习推断中具有挑战性的编程及 FPGA 任务。Zebra 可轻松部署和适应广泛的神经网络及框架。
    发表于 07-21 10:59 953次阅读
    Mipsology Zebra在<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>推断</b>的应用

    树莓学习设计方案合集

    本文档的主要内容详细介绍的是树莓学习设计方案合集免费下载包括了:AMG8833 8x8红外热像仪传感器应用附PCB驱动源码,Arduino与树莓
    发表于 03-11 08:00 12次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>的<b class='flag-5'>学习</b>设计方案合集

    树莓pico入门学习笔记(一)

    树莓pico入门学习笔记选择自己熟悉的编程语言树莓pico提供C/C++和micropython两种编程语言开发环境,但是“人生苦短,我
    发表于 12-17 18:42 21次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>pico入门<b class='flag-5'>学习</b>笔记(一)

    树莓4b学习笔记

    肯上市,考虑到这是一款理财产品,性能提升又很大,我一直想亲手做实验,学习一下。所以我决定入手树莓4b 8G高配版。
    的头像 发表于 07-04 11:25 7022次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>4b<b class='flag-5'>学习</b>笔记

    开源硬件创客 15个酷应用玩转树莓 (工业智能新技术系列)

    电子发烧友网站提供《开源硬件创客 15个酷应用玩转树莓 (工业智能新技术系列).pdf》资料免费下载
    发表于 08-30 16:12 8次下载
    开源硬件创客 15个酷应用<b class='flag-5'>玩转</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b> (工业智能新技术系列)

    超实用!玩转树莓攻略!

    如果你使用树莓派来开发的话,C语言或者Python语言都是一个比较不错的选择。在开始玩转你的树莓前,可以先看看如何快速入门; Raspberry Pi Imager 工具是一款图形化
    的头像 发表于 11-01 20:30 2083次阅读
    超实用!<b class='flag-5'>玩转</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>攻略!

    什么是树莓树莓是什么架构的

    什么是树莓 树莓(Raspberry Pi,简写为RPi,别名为RasPi/RPI)是由英国“Raspberry Pi 慈善基金会”开发的一款为
    的头像 发表于 10-22 17:33 271次阅读