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

2023-05-16

记录整个部署的步骤

  • 英特尔第二代神经计算棒(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之间,加速成功!
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • keil教程——串口调试

    原来keil也有串口窗口 xff0c 现在就试试打印倒金字塔图形 1 程序设计 span class token macro property span class token directive hash span span class
  • 为什么飞机不悬停在天上 等地球从下方通过呢?

    我们都知道 xff0c 地球绕地轴每24小时完成一个自转周期 那么很多人可能就会这么想 xff0c 为什么飞机不直接停在天上 xff0c 等着地球自转 xff0c 然后在目的地转过来的时候 xff0c 然后再直接着陆呢 xff1f 这样不是
  • esp32FreeRTOS教程——内核分配

    Esp32 模块中已经提供了 FreeRTOS xff08 实时操作系统 xff09 固件 FreeRTOS有助于提高系统性能和管理模块的资源 FreeRTOS允许用户处理多项任务 xff0c 如测量传感器读数 xff0c 发出网络请求 x
  • (三)串口调试工具和串口下载工具的区别:ST-LINK、J-LINK、U-LINK;SWD、JTAG、SWIM

    基础知识 一 串口 xff08 1 xff09 什么是串口 xff08 2 xff09 串行接口的划分标准 同步 异步 xff08 3 xff09 Uart串口与RS232串口的区别 xff08 4 xff09 串口的用途 二 烧录方式IS
  • RTOS信号量、邮箱、队列与事件

    一 定义 信号量 xff0c 邮箱 xff0c 队列的最大不同在于它们发送的内容不同 1 信号量是一个触发信号 xff0c 也是一个计数器 xff0c 等待接收信号的任务一般只有接收到信号才可以执行 xff0c 否则任务一直暂停 xff08
  • px4|添加自己的topic并记录至日志

    用于添加自己新建的话题并保存需要的数据至日志方便后续调试分析 目录 一 新建 msg文件 二 添加 msg文件路径至CMakeLists txt 三 添加该话题至日志中 四 编译与使用 一 新建 msg文件 在工程文件目录下的msg文件夹中
  • PX4|mavros offboard控制

    在px4官网中有相关mavros的教程MAVROS Offboard control example C 43 43 PX4 自动驾驶用户指南 本文将对该教程进行复现 xff0c 并加以细节补充 首先安装mavros sudo apt ge
  • PX4|电脑端发送自定义mavros消息至飞控端(mavros二次开发

    本文将实现在电脑端利用mavros将自定义消息发送至飞控端 xff0c 并在飞控段将接受到的信息打印至日志输出 针对mavros二次开发需要对相关ros包进行源码编译 xff0c 具体步骤如下 建立工作空间 span class token
  • Fidder判断前后端的问题

    第一种情况 xff1a fiddler 在没有设置过过滤器的情况下面没有抓到请求信息 xff0c 可能是前端页面元素没有绑定事件 xff0c 也有可能是前端发生了JS 错误 xff0c 这就是前端的bug 第二种情况 xff1a 若抓取到的
  • C++中::和:的用法

    前言 xff1a 虽然C 43 43 中 xff1a xff1a 和 xff1a 比较常见 xff0c 但是闭上眼睛回忆一下两者的用法 xff0c 但还真不一定能全部回答上来 xff0c 现在就做个总结 xff1a 1 单冒号 xff1a
  • 树莓派安装系统和ROS,并换成国内软件源。

    这里直接放出我参考的几位博主的帖子 xff1a 树莓派社区网站 xff1a 树莓派资源下载 树莓派实验室 一 安装ubuntu mate系统 在树莓派4B上安装Ubuntu Mate 20 04 和ROS 老孟 xff08 MLY xff0
  • ROS中无法定位软件包问题

    一 ROS版本不对 ROS 和ubuntu版本对应关系 二 ROS软件源有问题 类似于以下问题多半是ROS软件源不对 更换ROS软件源 在目录 etc apt sources list d中 软件源更换为中科大的软件源 deb https
  • 手机用久了就慢,卡到不行,怎么回事?三招帮你搞定!

    大家使用智能手机时 xff0c 是不是都有这样的困扰 手机用久了 xff0c 速度越来越慢 手机为什么会越来越慢 xff0c 如何才能发挥手机的最大性能 xff1f 别急 xff0c 小4妹三招帮你搞定 xff01 安卓手机提速秘笈 内存大
  • Matlab 读取txt文件指定行的数据

    方法1 方案1 filename 61 39 volume sress displace txt 39 替换为实际的文件名 line number 61 4 替换为实际的行号 打开文件并读取行 fid 61 fopen filename f
  • 树莓派从入门到放弃之VNC开机自启动和修改语言

    一 VNC开机自启动配置 使用VNCviewer连接树莓派或者使用Putty连接 xff0c 打开终端 首先编辑vncserver配置文件键入 xff1a sudo nano etc init d vncserver 复制以下代码 xff0
  • 审稿中ff是什么意思

    f 或者 ff 都是表示引用页数的 xff0c 意思是 xff1a and following page or pages 比如 36 ff xff0c 表示36页之后的页数被用作参考 如果只有1个f 90f 就表示90页和91页 refe
  • mesoscale hydrologic model (mHM) 和multiscale parameter regionalization (MPR)

    文章目录 常见问题what is mesoscale hydrologic model mHM how does the mHm model upscale the parameterswhat is the multiscale para
  • Word转PDF

    首先在投稿的时候发现上转的文件转成PDF有一些图片缺失了 xff0c 推测是图片太大的原因 xff08 但是图片并不是很大 xff0c 目前还不知道原因 x1f622 xff09 尝试使用先本地用Microsoft Print to PDF
  • 新bing/New bing配置和操作

    申请进入候补名单完成任务获得加速使用header editor插件防止跳转到国内bing使用user agent修改浏览器的ui
  • PCA-APCA-MLR

    全称 principal component analysis absolute principal component score multiple linear regression 原理 绝对因子分析 多元线性回归受体模型 APCS

随机推荐