树莓派4B(armv7l,arm32)buster部署英特尔第二代神经计算棒,示例:运行darknet-yolov4-tiny

记录整个部署的步骤

  • 英特尔第二代神经计算棒(Intel® NCS2)的使用需要到OpenVINO官网下载安装某一个版本的软件,目前是支持Windows、Linux和树莓派的Raspbian OS。
  • 下面贴出来的是本教程使用的2020.4版本的官方安装教程和官方安装包,为啥用这么老的版本呢,因为之后异步调用yolov4的python脚本对这个版本的支持比较好。尽管如此,2020.4版本不支持英特尔第一代神经计算棒……
    OpenVINO 2020.4 官方安装教程(Raspbian OS)
    OpenVINO 2020.4 官方安装包(Raspbian OS)
  • 安装包是名为“l_openvino_toolkit_runtime_raspbian_p_2020.4.287.tgz”的文件,下载后放到树莓派的“/home/pi/Downloads”目录下
  • 记录安装使用的命令行代码
  • 解压并安装到/opt/intel/openvino目录下
    cd ~/Downloads/
    sudo mkdir -p /opt/intel/openvino
    sudo tar -xf  l_openvino_toolkit_runtime_raspbian_p_2020.4.287.tgz --strip 1 -C /opt/intel/openvino
    
  • 安装cmake为之后编译官方的Sample做准备,如果不跑Sample的话其实也可以不安装,我就不跑Sample了,省下些空间。
    sudo apt install cmake
    
  • 安装完后设置环境变量,如果临时设置,关闭当前终端之后就不起作用了,永久设置的话,每次打开终端都会在第一行显示“[setupvars.sh] OpenVINO environment initialized”,说明进入了OpenVINO的环境,直接插入神经棒就可以运行。
    • 这是临时设置
      source /opt/intel/openvino/bin/setupvars.sh
      
    • 这是永久设置
      echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc
      
  • 永久设置完后,打开一个新的终端看见第一行显示“[setupvars.sh] OpenVINO environment initialized”就说明设置成功啦。
  • 增添USB规则:因为神经棒是插入USB口使用的,因此需要做这一步设置
    sudo usermod -a -G users "$(whoami)"
    
  • 做完这一步先登出账户,然后登陆账户使命令生效,也可以直接重启一下树莓派
  • 如果之前是临时设置环境变量的话,现在需要再设置一次
    source /opt/intel/openvino/bin/setupvars.sh
    
  • 正式安装USB规则
    sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh
    

现在可以插入英特尔第二代神经计算棒了

  • 在树莓派上安装完OpenVINO,接下来就可以将darknet版本的yolov4-tiny模型(.weights文件)转换成OpenVINO支持的模型文件了,包括Caffe、TensorFlow(2020.4可能只支持1.x的版本)、MXNet、ONNX和Kaldi的模型文件,我们就选择转换成TensorFlow的.pb文件吧。

  • 将.weights转换成.pb还没完,还需要吧.pb转化成.xml(描述神经网络的拓扑结构)和.bin(包含以二进制形式存储的权重与偏置数据)这两个文件,英特尔管这两个文件叫Intermediate Representation(IR)。

  • 这一步需要用到OpenVINO的Model Optimizer,但是树莓派的OpenVINO不包含Model Optimizer和Open Model Zoo,因此我们需要在另一台电脑上安装OpenVINO,且必须包含对应版本——2020.4版本的Model Optimizer,因为不同版本的Model Optimizer转换出的IR文件可能不兼容。

  • 选择在Windows上安装OpenVINO 2020.4,我们如法炮制:
    OpenVINO 2020.4官方安装教程(Windows)
    OpenVINO 2020.4 官方安装包(Windows)

  • 按照如下选择就能下载离线安装包了
    在这里插入图片描述

  • 安装的前提条件如下,操作系统必须是64位的win10,Python版本如果达不到要求的话可以使用Anaconda创建虚拟环境。CMake和VS(C++组件)其实就是用来编译官方给的demo的,不跑那个demo应该就不需要安装。
    在这里插入图片描述

  • 像安装普通软件那样安装OpenVINO就行,不是很大,还是建议装C盘,出现如下画面说xxx is not detected不用管,先装了再说。
    在这里插入图片描述

别急,咱只是完成了第一部分

  • 设置环境变量,找到cmd,右键“以管理员身份运行”,然后执行下列命令

    cd C:\Program Files (x86)\IntelSWTools\openvino\bin\
    // 用conda创建虚拟环境,并激活
    conda create -n python37 python=3.7
    conda activate python37
    // 在该环境下执行设置环境变量的脚本
    setupvars.bat
    
  • 这种环境变量的设置方法是临时的,关闭cmd就失效,也可以手动设置永久的环境变量。

  • 接下来为Model Optimizer做准备,因为我只打算将TensorFlow的模型文件作为我的转换媒介,因此我只做关于TensorFlow的准备,其他模型文件的转换可以参考下面的链接
    Model Optimizer Configuration Steps

  • 接着上述的cmd继续执行,如果你已经关闭了cmd,记得激活刚刚创建的虚拟环境并再设置一遍环境变量。

    • 先进入对应的目录
    cd C:\Program Files (x86)\IntelSWTools\openvino\deployment_tools\model_optimizer\install_prerequisites
    
    • 查看一下都有哪些东西
      在这里插入图片描述
  • 有个protobuf的egg,应该是caffe才需要用的,我们直接执行

    install_prerequisites_tf.bat
    
  • 成功后就算安装完成了,Windows下的安装验证demo就不跑了。

把文件转换成另一个文件

  • 接下来我们需要把.weights转换成.pb文件,用到了一个GitHub项目,把这个项目下载并解压到树莓派上
    OpenVINO-YOLOV4

  • 这个项目中的一个脚本“convert_weights_pb.py”能完成这一步,而且依赖tensorflow 1.x的版本,因此推荐在树莓派上运行这个脚本,命令格式如下:

    // 首先安装tensorflow,直接pip3 install默认就是1.14.0版本,但是1.14.0有bug,我用了1.13.1版本
    // 安装前记得先换源,否则巨慢无比,但实际上还是会很慢,可以在下载的时候把pip需要下载的whl文件单独下载出来,再用pip3 install xxx.whl
    pip3 install tensorflow==1.13.1
    // 进入OpenVINO项目文件夹,执行该脚本
    cd OpenVINO-YOLOV4
    // 命令格式中的.names文件、.weights文件是我们自己的
    python3 convert_weights_pb.py --class_names 你自己的.names --weights_file 你自己的.weights --data_format NHWC --tiny
    
  • 出现“Original error was: libf77blas.so.3: cannot open shared object file: No such file or directory”的问题,直接安装就可解决

    sudo apt-get install libatlas-base-dev
    
  • 还可能出现其他的问题,像是缺了某个python包之类的,直接pip3 install即可,要是慢的话就单独下载whl文件再安装。最后,你能够得到转换后的.pb文件:frozen_darknet_yolov4_model.pb
    在这里插入图片描述

  • 接下来将.pb转换成IR文件(.xml和.bin)

  • 首先把刚才得到的frozen_darknet_yolov4_model.pb文件和文件夹中的yolo_v4_tiny.json文件传到Windows上,此时必须修改.json文件,因为该文件是按照coco数据集设计的,有80个类,开启后改成我们自己的类的数量即可。
    在这里插入图片描述

  • 开启cmd,“以管理员身份运行”,先激活之前创建的虚拟环境并设置环境变量,导航到有.pb文件的地方,使用Windows上的Model Optimizer生成IR文件,按照你自己在Windows上的OpenVINO安装路径来运行下面的代码

    conda activate python37
    cd C:\Program Files (x86)\IntelSWTools\openvino\bin
    setupvars.bat
    python "C:\Program Files (x86)\IntelSWTools\openvino_2020.4.287\deployment_tools\model_optimizer\mo.py" --input_model frozen_darknet_yolov4_model.pb --transformations_config yolo_v4_tiny.json --batch 1 --reverse_input_channels
    

我希望你运行成功了

  • 得到frozen_darknet_yolov4_model.bin和frozen_darknet_yolov4_model.xml
    在这里插入图片描述
  • 把刚刚得到的.xml和.bin文件传到树莓派上的“~/OpenVINO-YOLOV4/pythondemo/2020.4”路径,接下来可以开始运行模型了,由于会弹出图形化界面,因此你需要VNC或者让树莓派连接显示屏才能运行下面的命令
    python3 object_detection_demo_yolov4_async.py -i cam -m frozen_darknet_yolov4_model.xml -d MYRIAD
    
  • FPS应该在5~7之间,加速成功!
    在这里插入图片描述
  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值