前言
一、树莓派配置
二、安装openvino
三、运行human_pose_estimation_demo
研一刚上来,导师就让部署从来没碰过的树莓派和人体姿态识别,网上将人体姿态识别部署至树莓派上的资料属实少之又少,搞了快一周算是实现了(头快秃了都),为了对得起我的头发,用博客来祭奠一下。。。
本文不涉及神经网络理论以及代码的解读,所以对于稍微有点计算机基础的人应该都不成问题,next,备齐家伙开始搞。
所需硬件:树莓派(我用的4B),外接摄像头,神经计算棒2,micro hdmi转换器,usb hub。
树莓派的配置主要是镜像文件的烧入(就是给小电脑装系统),ssh远程连接的配置,自动连接wifi的配置。
如果有像我一样之前没有接触过树莓派的hxd,可以去b站关注一个叫同济子豪兄的up,他讲的非常好很多知识可以学习到,树莓派相关视频链接在此:
以上教程的代码仓库:点这里复制代码吧
4.最后加一步安装cmake,这个东西用于最后human_pose_estimation_demo代码的编译,在命令行输入
sudo apt-get update//更新一下包管理工具
sudo apt-get install cmake
如果出现这种问题
先用sudo apt-get install libcurl3下载一下再下载cmake
这里我们要安装的是针对树莓派的openvino
安装包链接:https://pan.baidu.com/s/1g-pCfJY0wkwTCclqOCKOng
提取码:48z7
通过ssh将压缩包传入~/Downloads文件夹下,输入解压语句
tar -xf l_openvino_toolkit_runtime_raspbian_p_2020.4.287.tgz
然后把解压出来的文件夹用mv命令改成这个名字inference_engine_vpu_arm,别问,问就是它可能比较短。
之后在Downloads文件夹下输入三条语句
source inference_engine_vpu_arm/bin/setupvars.sh
sh inference_engine_vpu_arm/install_dependencies/install_NCS_udev_rules.sh //添加神经棒规则
sed -i "s||$(pwd)/inference_engine_vpu_arm|" inference_engine_vpu_arm/bin/setupvars.sh
接下来配置环境变量
sudo nano /home/pi/.bashrc
最后一行增加
source /home/pi/Downloads/inference_engine_vpu_arm/bin/setupvars.sh
如图
断开ssh连接重新连接出现下面,说明安装成功
[setupvars.sh] OpenVINO environment initialized
现在树莓派和计算棒的环境都已经配置完成,就差最后一个主角了human_pose_estimation_demo,虽说现在这个openvino里的samples也都可以跑,但是很不幸因为这个openvino是针对树莓派的所以说他是个mini版,里面的demo没有ubantu,windows版本的全,所以你在这个opevino的samples里是找不到human_pose_estimation_demo的(普通版本是在demos文件夹下,mini就是mini,小demo都放到samples文件夹下了),所以我们要将普通版本里的human_pose_estimation_demo复制到树莓派的samples文件夹下对其进行编译再运行。
总的来说分为三部:1.复制human_pose_estimation_demo到samples文件夹下2.cmake编译源码3.运行
说着很简单,但对于我来说,不知道试错了多少次。希望可以前人栽树,后人乘凉。。。
因为我之前已经在windows上实现了human_pose_estimation_demo加神经棒,所以直接在普通版本的openvino文件夹中找到
我的在这里,我是用u盘拷到树莓派的(感觉好low的方法),考到树莓派这个文件夹下
先说一下,编译分为两步,cmake和make,这两步需要一个叫cmakelists.txt的文件,这个文件每个要编译的文件夹都有。
但是因为树莓派的openvino对其目录下的demo(也就是sample)的编译文件(也就是cmakelists.txt)和我们复制来的 human_pose_estimation_demo的编译文件不一样!!因为这两个编译文件不一样导致编译时候很多 human_pose_estimation_demo里cpp文件的依赖找不到,我就在这里因为这个问题编译失败了好多次,之后把树莓派在sample 文件里的cmakelist.txt和windows那个demo文件夹下的cmakelist.txt换了一下就可以正常编译了。。。只用换这两个文件夹下的 编译文件就行,除此之外还有一个在树莓派cpp文件夹下和windows中demo文件夹下都有的common文件夹需要互换才可以让复 制来的human_pose_estimation_demo代码正常编译。以下操作是在换完这两个文件夹的情况下工作的。
首先我们在cpp文件夹下创建一个build文件夹,并进入
mkdir build && cd build
之后开始cmake
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a"
有时候不管用可以自己手敲一遍。然后开始make
make human_pose_estimation_demo
make成功之后就算是编译成功啦!还有最后一步就可以运行啦!想要代码运行我们还需要openvino对于不同demo做的预训练模型,其实就是一个xml文件,下载地址,要下载FP16的因为神经棒只支持FP16的。你可以在树莓派上直接wget这两个文件,也可以windows下载传输。最后存放这两个文件路径你要记住,一会执行要用。
接下来就是运行。首先拿出摄像头,我没有用树莓派自带的那种排线式的摄像头,实验室有个罗技的usb,一插就能用,主要是要知道你的摄像头在树莓派中如何获取,方法是先不插摄像头,用ls /dev/video* 命令看一下有哪些设备,之后再插上摄像头,再次输入ls /dev/video*,看多了哪个设备哪个就是你的摄像头。
此时因为你make成功在build文件夹下应该有一个armv7l/Release路径,进去输入
./human_pose_estimation_demo -i /dev/video+摄像头号 -d MYRIAD -m 路径/human-pose-estimation-0001.xml
之后就是成功的运行啦,就酱
fps到达了6点多,比在我的华硕破顽石上好太多了。。。