因特尔神经计算棒(NCS)+树莓派+yolo-v3实现object-detection

因特尔神经计算棒(NCS)+树莓派+yolo-v3实现object-detection

踩了好多坑啊。。一言难尽

Step1:在树莓派上安装环境

首先安装openVINO工具包(最好不要在树莓派上装NCSDK..太坑了),详情见这篇文章(https://blog.csdn.net/qqqzmy/article/details/85213414)。

Step2:在windows中安装openVINO

我要先说明一下,因为树莓派中安装的openVINO是阉割版功能不全。所以为了实现tensorflow格式转换成movidius的格式,还得在windows上安装一遍openVINO。emmm,安装方法我就直接贴文章了吧(https://blog.csdn.net/qq_36556893/article/details/81385008)

Step3:将keras转换为tensorflow格式

因为NCS只支持转换tensorflow格式,而yolo-v3又是keras格式,所以还要转换一遍。不过还好在git上找到了大神写的代码(https://github.com/mystic123/tensorflow-yolo-v3)
1、git clone https://github.com/mystic123/tensorflow-yolo-v3
2、cd tensorflow-yolo-v3
3、下载yolo文件至当前文件夹
    coco.name(https://raw.githubusercontent.com/pjreddie/darknet/master/data/coco.names)
    yolo-v3.weight(wget https://pjreddie.com/media/files/yolov3.weights)
4、开始转换得到frozen_darknet_yolov3_model.pb
    用cmd运行
    python ./convert_weights.py
    python ./convert_weights_pb.py
5(可选)、按照GitHub上的说明用pb文件运行一遍

Step4:将tensorflow转换为movidius格式(.xml & .bin)

打开openVINO的根目录,进入(这是我的路径)D:\Intel\computer_vision_sdk\deployment_tools\model_optimizer 
1、进入目录\install_prerequisites,运行install_prerequisites_tf.bat文件
2、返回上一目录运行python mo_tf.py --input_model E:\tensorflow-yolo-v3\frozen_darknet_yolov3_model.pb --tensorflow_use_custom_operations_config D:\Intel\computer_vision_sdk\deployment_tools\model_optimizer\extensions\front\tf\yolo_v3.json --input_shape=[1,416,416,3]  --data_type=FP16(请自行替换文中路径)
得到.xml和.bin文件

Step5:在树莓派中部署

进入inference_engine_vpu_arm文件夹(就是树莓派中openVINO的根目录),打开/deployment_tools/inference_engine/samples/python_samples文件夹,找到object_detection_demo_yolov3.py文件然    cap.set(3,320)
cap.set(4,240)
cap.set(5,30)后,运行:python3 object_detection_demo_yolov3.py -m /home/pi/image-dec/yolo.xml -d MYRIAD -i cam
请自行替换xml文件目录(注意,xml和bin文件要在同一目录且同名),-i 后面可以接视频文件地址,我这里用cam就是摄像头实时传输。

注意:如果你用的是usb摄像头且运行失败,用文本编辑打开该代码文件搜索cap,找到那一行往上看,有input_stream = 0 if args.input == "cam" else args.input,将“0”改为1再次运行,如果不行再改成2、3、4....不过一个NCS帧数着实有点低,建议自行搜索opencv代码改视频清晰度,反正我是在 cap = cv2.VideoCapture(input_stream)下面加了:   
cap.set(3,320)
cap.set(4,240)
cap.set(5,30)

那么教程就到此为止了,我是小白,写文章有点混乱,见谅。不说了,先上个图(瞎JB拍的):
在这里插入图片描述

展开阅读全文

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