利用Tengine在樹莓派上跑深度學習網絡

樹莓派是國內比較流行的一款卡片式計算機,可是受限於其硬件配置,用樹莓派玩深度學習彷佛有些艱難。最近OPENAI爲嵌入式設備推出了一款AI框架Tengine,其對於配置的要求相比傳統框架下降了不少,我嘗試着在樹莓派上進行了搭建併成功運行了Mobilenet-SSD。c++

Tengine簡介

OAID/Tengine|githubgit

  • Tengine 是OPEN AI LAB 爲嵌入式設備開發的一個輕量級、高性能而且模塊化的引擎。
  • Tengine在嵌入式設備上支持CPU,GPU,DLA/NPU,DSP異構計算的計算框架,實現異構計算的調度器,基於ARM平臺的高效的計算庫實現,針對特定硬件平臺的性能優化,動態規劃計算圖的內存使用,提供對於網絡遠端AI計算能力的訪問支持,支持多級別並行,整個系統模塊可拆卸,基於事件驅動的計算模型,吸收已有AI計算框架的優勢,設計全新的計算圖表示。

編譯安裝開源版Tengine

安裝相關工具github

sudo apt-get install 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 是一個開源的基礎線性代數子程序庫

下載&編譯性能優化

如下的全部步驟建議在pi用戶下完成(而非root),否則可能報錯。網絡

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=y 這一行解除註釋(刪除行首的井號 #)以開啓BLAS計算庫的實現方式
CONFIG_ARCH_BLAS=y 這一行不須要解除註釋工具

5.編譯並安裝

make -j4
make install

這裏的 -j4 表示開啓四個線程進行編譯

測試

1.下載mobilenet-ssd模型並放置在 Tengine/models 目錄下

兩個文件:MobileNetSSD_deploy.caffemodel 和 MobileNetSSD_deploy.prototxt
下載連接(提取碼爲57vb):https://pan.baidu.com/s/1LXZ8vOdyOo50IXS0CUPp8g
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

指定參數:

./MSSD -p mssd.prototxt -m mssd.caffemodel -i img.jpg

等待良久後,出現例程的運行結果:

 

 

能夠看到例程運行耗時2分鐘,考慮到例程僅識別了一張圖片一次,算法運行速度很不理想。

對比在RK3399上的表現,除了樹莓派的硬件配置較低外(我用的樹莓派3B),所使用的計算庫的不一樣也是重要的緣由,BLAS的庫計算性能要差於Tengine提供的官方庫。

 

 

 

參考連接:

1. https://blog.csdn.net/qq_33287871/article/details/99686969

2. https://songrbb.github.io/2018/08/17/利用Tengine在樹莓派上跑深度學習網絡/?tdsourcetag=s_pctim_aiomsg

3. https://github.com/OAID/Tengine/tree/master/examples/mobilenet_ssd

相關文章
相關標籤/搜索