0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

樹莓派也能玩轉深度學習—Tengine推斷引擎

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-10 22:06 ? 次閱讀

一直以來,樹莓派以其良好的社區(qū)生態(tài),廣受嵌入式愛好者、創(chuàng)客歡迎。在一些相關的社區(qū)上(比如樹莓派實驗室),我們可以看到非常豐富的應用示例及其教程。但在樹莓派上的深度學習應用并不常見,這主要是受到樹莓派計算力的限制,比如之前看到過有人把yolov2原原本本生硬地部署到樹莓派上,結果每一幀檢測耗時高達6分鐘??!作一幀目標檢測花費6分鐘這實在是無法忍受的!
如果是用yolov2-tiny的話會快很多,但耗時依舊接近40秒,參考樹莓派3B上測試YOLO效果 | CSDN

那樹莓派只能跟深度學習無緣了么?那可未必!

Tengine

OADI/Tengine | github

Tengine 是OPEN AI LAB為嵌入式設備開發(fā)的一個輕量級、高性能并且模塊化的引擎。
Tengine在嵌入式設備上支持CPU,GPU,DLA/NPU,DSP異構計算的計算框架,實現異構計算的調度器,基于ARM平臺的高效的計算庫實現,針對特定硬件平臺的性能優(yōu)化,動態(tài)規(guī)劃計算圖的內存使用,提供對于網絡遠端AI計算能力的訪問支持,支持多級別并行,整個系統(tǒng)模塊可拆卸,基于事件驅動的計算模型,吸取已有AI計算框架的優(yōu)點,設計全新的計算圖表示。

編譯安裝開源版Tengine

安裝相關工具

sudo apt-get install git cmake
  • git 是一個版本控制系統(tǒng),稍后將用來從 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提供的日志系統(tǒng)的程序庫
  • 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的優(yōu)化,所以需要用openblas替代實現;
    CONFIG_ARCH_ARM64=y 這一行注釋掉(行首加井號 #)以關閉ARM64架構的優(yōu)化實現;
    解除 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指定環(huán)境變量TENGINE_DIR,該變量可以在CMakeLists.txt文件中找到

  4. 運行示例程序

    ./MSSD

    可以看到對一張照片進行目標檢測,總共耗時1148.32ms

樹莓派開發(fā)者版Tengine

開發(fā)者版下載地址:Tengine下載 - Tengine開發(fā)者中心

  1. 用樹莓派開發(fā)者版Tengine的動態(tài)鏈接庫覆蓋掉原先的開源版
    動態(tài)鏈接庫路徑為:Tengine/install/lib/libtengine.so
    編譯時,make會在build目錄下產生libtengine.so動態(tài)鏈接庫,而make instll將動態(tài)鏈接庫、頭文件等拷貝到install目錄下
  2. 重新運行mobilenet-ssd的示例程序
    可以看到,單幀耗時從1148.32ms下降為286.136ms,速度有了非常明顯的提升!

小試牛刀

用上高性能的樹莓派開發(fā)者版Tengine,看看mobilenet-ssd在樹莓派上能表現如何——

  1. hey-yahei/my_blog/RasPi-Tengine/mobilenet-ssd | github 上下載源碼,并放置在 Tengine/example 目錄下
  2. 檢查 CMakeLists.txt 文件中TENGINE_DIR變量是否正確指向Tengine路徑
  3. 執(zhí)行 cmake . 生成Makefile
  4. 執(zhí)行 make 編譯程序
  5. 執(zhí)行 ./MSSD 運行程序

本文開頭我們說道,
直接在樹莓派上配置darknet部署的yolo網絡,yolov2單幀耗時接近6分鐘,yolov2-tiny單幀耗時接近40秒;
而在樹莓派上配置Tengine部署的yolov2網絡,在blas實現下單幀耗時不到8秒(參考利用Tengine在樹莓派上跑深度學習網絡 | songrbb),在針對armv7優(yōu)化實現的開發(fā)者版下單幀耗時甚至不到2秒

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1793

    文章

    47538

    瀏覽量

    239386
  • 樹莓派
    +關注

    關注

    117

    文章

    1710

    瀏覽量

    105777
  • 深度學習
    +關注

    關注

    73

    文章

    5511

    瀏覽量

    121366
  • Tengine
    +關注

    關注

    1

    文章

    47

    瀏覽量

    2866
收藏 人收藏

    評論

    相關推薦

    樹莓電腦能玩網游嗎?

    其實接觸之初就想問了。樹莓電腦連接七寸屏能玩網游嗎?比如說什么QQ自由幻想。LOL什么的。
    發(fā)表于 09-09 17:41

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

    `Tengine 是OPEN AI LAB 為嵌入式設備開發(fā)的一個輕量級、高性能并且模塊化的引擎?;贏RM平臺高效的計算庫實現,針對特定硬件平臺的性能優(yōu)化,吸取已有AI計算框架的優(yōu)點,設計全新
    發(fā)表于 08-13 15:58

    樹莓的深刻含義

    要想玩轉樹莓,首先得知道樹莓是什么。在本節(jié)中,作者將帶領大家揭開樹莓
    發(fā)表于 08-06 06:10

    硬件創(chuàng)客開源設計教程資料匯總,帶你玩轉樹莓

    AD/DA,樹莓派系列教程18:SPI 開源硬件創(chuàng)客15個酷應用玩轉樹莓的PDF電子書:本書共18章。前3章是本書的基礎章節(jié),主要介紹了樹莓
    發(fā)表于 05-18 14:35

    樹莓pico入門學習筆記(一)相關資料推薦

    樹莓pico入門學習筆記選擇自己熟悉的編程語言樹莓pico提供C/C++和micropython兩種編程語言開發(fā)環(huán)境,但是“人生苦短,我
    發(fā)表于 07-01 09:28

    樹莓_庫函數安裝教程

    樹莓_庫函數安裝教程,樹莓嵌入式拔高篇,非常適合新手學習
    發(fā)表于 01-14 15:12 ?32次下載

    如何玩轉樹莓

    技術大拿帶你玩轉樹莓,聊聊樹莓的那些事!
    的頭像 發(fā)表于 05-30 15:03 ?3657次閱讀
    如何<b class='flag-5'>玩轉</b><b class='flag-5'>樹莓</b><b class='flag-5'>派</b>

    樹莓是什么樹莓的簡單介紹

    要想玩轉樹莓,首先得知道樹莓是什么。在本節(jié)中,作者將帶領大家揭開樹莓
    發(fā)表于 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 可消除深度學習推斷中具有挑戰(zhàn)性的編程及 FPGA 任務。Zebra 可輕松部署和適應廣泛的神經網絡及框架。
    發(fā)表于 07-21 10:59 ?969次閱讀
    Mipsology Zebra在<b class='flag-5'>深度</b><b class='flag-5'>學習</b><b class='flag-5'>推斷</b>的應用

    樹莓學習設計方案合集

    本文檔的主要內容詳細介紹的是樹莓學習設計方案合集免費下載包括了:AMG8833 8x8紅外熱像儀傳感器應用附PCB驅動源碼,Arduino與樹莓
    發(fā)表于 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兩種編程語言開發(fā)環(huán)境,但是“人生苦短,我
    發(fā)表于 12-17 18:42 ?21次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>pico入門<b class='flag-5'>學習</b>筆記(一)

    樹莓4b學習筆記

    肯上市,考慮到這是一款理財產品,性能提升又很大,我一直想親手做實驗,學習一下。所以我決定入手樹莓4b 8G高配版。
    的頭像 發(fā)表于 07-04 11:25 ?7193次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>4b<b class='flag-5'>學習</b>筆記

    開源硬件創(chuàng)客 15個酷應用玩轉樹莓 (工業(yè)智能新技術系列)

    電子發(fā)燒友網站提供《開源硬件創(chuàng)客 15個酷應用玩轉樹莓 (工業(yè)智能新技術系列).pdf》資料免費下載
    發(fā)表于 08-30 16:12 ?8次下載
    開源硬件創(chuàng)客 15個酷應用<b class='flag-5'>玩轉</b><b class='flag-5'>樹莓</b><b class='flag-5'>派</b> (工業(yè)智能新技術系列)

    超實用!玩轉樹莓攻略!

    如果你使用樹莓派來開發(fā)的話,C語言或者Python語言都是一個比較不錯的選擇。在開始玩轉你的樹莓前,可以先看看如何快速入門; Raspberry Pi Imager 工具是一款圖形化
    的頭像 發(fā)表于 11-01 20:30 ?2338次閱讀
    超實用!<b class='flag-5'>玩轉</b><b class='flag-5'>樹莓</b><b class='flag-5'>派</b>攻略!

    什么是樹莓樹莓是什么架構的

    什么是樹莓 樹莓(Raspberry Pi,簡寫為RPi,別名為RasPi/RPI)是由英國“Raspberry Pi 慈善基金會”開發(fā)的一款為
    的頭像 發(fā)表于 10-22 17:33 ?1147次閱讀