相關係列文章:
【樹莓派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