【树莓派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

 

展开阅读全文

没有更多推荐了,返回首页