记录整个部署的步骤
- 英特尔第二代神经计算棒(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之间,加速成功!
更多推荐
树莓派4B(armv7l,arm32)buster部署英特尔第二代神经计算棒,示例:运行darknet-yolov4-tiny
发布评论