樹莓派是國內比較流行的一款卡片式計算機,可是受限於其硬件配置,用樹莓派玩深度學習彷佛有些艱難。最近OPENAI爲嵌入式設備推出了一款AI框架Tengine,其對於配置的要求相比傳統框架下降了不少,我嘗試着在樹莓派上進行了搭建併成功運行了Mobilenet-SSD。c++
安裝相關工具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
下載&編譯性能優化
如下的全部步驟建議在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