【樹莓派3b+和 intel movidius 神經元計算棒2代 系列 之三】 將darknet轉的bin和xml文件在樹莓派上測試yolo v3和yolo v3 tiny

相關係列文章:

  樹莓派3B+安裝系統(Raspbian 9)以及環境配置

【樹莓派3b+和 intel movidius 神經元計算棒2代 系列 之一】 安裝與部署神經計算棒NCS2

【樹莓派3b+和 intel movidius 神經元計算棒2代 系列 之二】 darknet的weights模型轉爲計算棒所需的IR模型

 

本篇文章是在完成第二步中 轉換得到的 計算棒支持的bin,xml文件基礎上,在樹莓派3b+和NCS2代上運行yolo v3和yolo v3 tiny;


Step 1. 環境激活

打開樹莓派終端,激活OpenVINO 工具包 環境變量,後續操作都在這個終端窗口下執行;

source /opt/intel/openvino/bin/setupvars.sh

當完成如上操作後,會在終端顯示如下:

[setupvars.sh] OpenVINO environment initialized

表示環境變量初始化完成了!!接下來就可以編譯與運行工具包啦~~

爲計算棒NCS2代設置USB規則

將當前linux用戶加到用戶組:

sudo usermod -a -G users "$(whoami)"

安裝USB規則:

sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh

OK,接下來就可以編譯示例以及運行測試了!


Step 2. 編譯與運行yolo3

將上篇文章(【樹莓派3b+和 intel movidius 神經元計算棒2代 系列 之二】 darknet的weights模型轉爲計算棒所需的IR模型)中轉換得到的模型文件拷貝到板子的 /home/pi/Downloads/yolo_model目錄下(可更改成你自己的目錄);並將coco.names複製兩份,分別重命名爲:frozen_darknet_yolov3_model.labels 和 frozen_darknet_yolov3_tiny_model.labels,所以/home/pi/Downloads/yolo_model目錄下共有以下8個文件(紅色分別是yolov3的和yolov3 tiny的):

 參照‘’系列之一 文章‘’中提到的編譯與運行目標檢測例子部分,將終端目錄切換到build,沒有的話就創建個

mkdir build && cd build

編譯(如果你在系列文章之一種已經執行過以下代碼可不用執行下面指令):

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a" /opt/intel/openvino/deployment_tools/inference_engine/samples

然後編譯目標檢測的例子(此處針對yolo v3):

make -j2 object_detection_demo_yolov3_async

編譯完成後,會在/build/armv 7l/Release下生成可執行文件:object_detection_demo_yolov3_async;接下來就是給執行文件傳入模型文件就可以跑深度學習了!


(測攝像頭)運行如下指令:

./armv7l/Release/object_detection_demo_yolov3_async -m /home/pi/Downloads/yolo_model/frozen_darknet_yolov3_model.xml -d MYRIAD -i cam

此處-i cam表示讀取的是camera;

(測視頻文件)運行如下指令:

./armv7l/Release/object_detection_demo_yolov3_async -m /home/pi/Downloads/yolo_model/frozen_darknet_yolov3_model.xml -d MYRIAD -i /path_to_video

測試視頻需要給-i指定視頻路徑;

檢測結果不上傳了,親測有效,速度大概1.2FPS;


Step 3. 編譯與運行yolo3 tiny (該步驟依據需求)

考慮到yolo v3着實有些慢,打算試試yolo v3 tiny

同樣的編譯和執行流程,在編譯前需要你更改下源cpp文件,我們先找到yolo v3的源文件,我的是在:/opt/intel/openvino/deployment_tools/inference_engine/samples/object_detection_demo_yolov3_async/這個目錄下;你可以發現這個目錄下有

main.cpp

CMakelists.txt

object_detection_demo_yolov3_async.hpp

README.md


這4個文件;

我們需要更改main.cpp(因爲這個文件是針對yolo v3寫的,和yolo v3 tiny有些差異);

先備份個:

sudo cp main.cpp main_copy.cpp

然後對這個main.cpp做如下兩個地方更改:

更改一:

第126行左右,註釋掉原先yolov3的錨點框尺寸,更改成yolo v3 tiny的(共12個數:10, 14, 23, 27, 37, 58, 81, 82, 135, 169, 344, 319)

更改二:

第276行左右,下圖276至278行部分代碼註釋掉,這個是判斷輸出特徵圖有幾個;

 

更改完main.cpp後,保存並退出;

然後重新編譯這個源碼:

 make -j2 object_detection_demo_yolov3_async 

編譯完成後,會在/build/armv 7l/Release下生成可執行文件:object_detection_demo_yolov3_async;接下來就是給執行文件傳入模型文件就可以跑深度學習了!參考,step2部分,就是傳入的xml文件更改成tiny的:

./armv7l/Release/object_detection_demo_yolov3_async -m /home/pi/Downloads/yolo_model/frozen_darknet_yolov3_tiny_model.xml -d MYRIAD -i cam

具體測試結果也不貼出來了,大概有7,8FPS左右;


Python腳本運行yolo v3或yolo 3 tiny

我在文章https://blog.csdn.net/c20081052/article/details/90056746 中提過,此處下載https://github.com/PINTO0309/OpenVINO-YoloV3到樹莓派,解壓,如下圖,我的文件目錄是在Downloads下:

 可運行如下指令來運行yolo v3 tiny,需要你更改openvino_tiny-yolov3_test.py文件中傳入的模型xml文件的路徑;

python3 /home/pi/Downloads/OpenVINO-YoloV3-master/openvino_tiny-yolov3_test.py -d MYRIAD   

注意此處需要用python3, -d MYRIAD不可省略!!

python結果大致2FPS左右~

 

本系列文章完結,都是親測可執行!轉載請註明出處,多謝!

 


 相關鏈接:

1. OpenVINO源碼:

    https://github.com/opencv/dldt

2. NCS2:

    https://ncsforum.movidius.com/discussion/1302/intel-neural-compute-stick-2-information

3. OpenVINO與Movidius SDK的區別:    

    https://www.xianjichina.com/news/details_80102.html

4. Raspberry版本下載:

    https://software.intel.com/en-us/articles/OpenVINO-Install-RaspberryPI

5. OpenVINO下載:

    https://software.intel.com/en-us/openvino-toolkit/choose-download/free-download-linux

6. 從sdk過渡到OpenVINO: 

    https://software.intel.com/en-us/articles/transitioning-from-intel-movidius-neural-compute-sdk-to-openvino-toolkit

7. 模型優化器Developer Guide:

    https://software.intel.com/en-us/articles/OpenVINO-ModelOptimizer

8. 推理引擎Developer Guide:

    https://software.intel.com/en-us/articles/OpenVINO-InferEngine

9. Linux安裝OpenVINO:

    https://software.intel.com/en-us/articles/OpenVINO-Install-Linux

10. darknet轉caffe:https://github.com/marvis/pytorch-caffe-darknet-convert

11. darknet轉tensorflow:

    https://github.com/mystic123/tensorflow-yolo-v3.git

12. tensorflow下訓練yolov3-tiny:

    https://github.com/YunYang1994/tensorflow-yolov3

13. OpenVINO轉換caffe模型參考: 

    https://software.intel.com/en-us/articles/OpenVINO-Using-Caffe

14. OpenVINO+tensorflow+yolov3/yolov3-tiny:

    https://github.com/PINTO0309/OpenVINO-YoloV3

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章