毕设需要在Jetson nx上跑openpose。花了前后一周时间,爬尽所有坑,吐血整理
1、试过像在服务器一样配置openpose,结果一运行就killed。
2、试过重装cuda和cudnn,以为是版本的问题,结果把板子搞崩了
感谢 小乖的晴天的文章,才踏入正轨。
准备阶段
https://blog.csdn.net/zbb297918657/article/details/106403331
NX配有cuda10、Cudnn8和opencv4。这些版本是可以运行openpose的,不需要必须适配官方的版本
下载源码
https://github.com/CMU-Perceptual-Computing-Lab/caffe/tree/b5ede488952e40861e84e51a9f9fd8fe2395cc8a
下完发现有个问题,里面3rdparty的caffe和pybind11是空的,我也不知道是什么问题。但直接在终端git clone是可以的
cd openpose-master
cd 3rdparty
rm -r caffe #把空的caffe删了
git clone https://github.com/CMU-Perceptual-Computing-Lab/caffe.git
rm -r pybind11
git clone https://github.com/pybind/pybind11.git #需要python API 的要下这个
下不动的,可以到我分享这下,里面还有cmake和models的文件,都是后续要用到的
链接:https://pan.baidu.com/s/16w2hSPBUsrbBMIjFW5vhYA
提取码:7777
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V4的分享
配置环境
直接用openpose自带的caffe,不要自己配caffe
安装protobuf 2.6
先把这个下了,后面编译需要
https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
下完之后传到板子上
tar -zxvf protobuf-2.6.1.tar.gz #解压
sudo apt-get install build-essential
cd protobuf -2.6.1
./configure
make
make check
sudo make install
#装完之后查看版本号
protoc --version
一般会有下面问题
protoc: error while loading shared libraries: libprotocbuf.so.9: cannot open shared
在 /etc/ld.so.conf.d/目录下创建 bprotobuf.conf文件
sudo vi bprotobuf.conf #用vim编辑器,我也是第一次使用,上网查查怎么写入和保存即可。写入/usr/local/lib
#保存后
sudo chmod 777 -R ld.so.conf.d
sudo ldconfig
安装其他依赖
sudo apt-get install libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git build-essential
编译openpose
安装cmake和cmake gui
在我分享的文件中有cmake3.14是可用的。
安装cmake
tar -zxvf cmake-3.14.tar.gz#解压
#cd 进解压后的目录
./bootstrap && make && make install #要点时间的,等待
cmake -version#查看版本
安装cmake-gui
sudo apt-get install qtbase5-dev
sudo apt-get install qt4-default
sudo apt-get install cmake-qt-gui
编译openpose
在openpose根目录中新建build文件夹
打开cmake,照抄下图
Configure
点击“Configure”按钮,如果成功,会提示“Configuring done”。我在这一步进度条卡住了,把网盘了的model都放进根目录的models文件夹就可以了。可能是没检测到models
这时,会出现一些选项。勾上图中的前5个,下了我分享的model,download model那几个可以不勾了,慢的一比。再勾上USE_CUDNN,最后一个不勾
再点击generate。这时你的openpose的build中就生成了很多文件
进入openpose——build,然后make
cd openpose-master/build/
sudo make -j8
运行openpose
实时摄像
我用的USB摄像头
先检查摄像头能否工作
ls /dev/video*#会显示出端口,一般是0
sudo apt-get install camorama
camorama
cd openpose-master
./build/examples/openpose/openpose.bin -camera_resolution 320x160 -net_resolution 64x32 --camera 0
#两个数值可以调整,但需要是16的倍数
#其他示例也需要设置网络大小,否则很难板子上跑起来
我运行时出现了Prototxt file not found: models/pose/body_25/pose_deploy.prototxt
是我一开始github下的openpose就莫名其妙少了pose_deploy.prototxt这个文件,我分享的链接中加上了
处理视频
./build/examples/openpose/openpose.bin --video examples/media/video.avi --net_resolution 64x32
处理图片
./build/examples/openpose/openpose.bin --image_dir examples/media/ --net_resolution 64x32
他是整个文件夹批量处理的,不是传具体的图片,如果想要快速检测,可以只留一张图片在此文件夹中