【亲测可用】Jetson nano安装openpose

因为项目原因,需要在Jetson nano上跑openpose,在网上找相关资源,只找到了 小乖的晴天的一篇名为Jetson nano安装openpose的文章,这篇文章真的是帮了我大忙,在这里向这位博主表示衷心的感谢。本人按照这位博主的教程一步一步操作,其中因为自己的一些操作失误原因,踩了一些坑,总共写了三次系统,用了四天的时间,终于在板子上跑来了openpose,这里将自己踩过的一些坑分享给大家,希望能够帮助到有同样需要的伙伴们。

参考: 小乖的晴天

本文直接从安装openpose环境开始讲起,此时假设你已经有一块已写入系统的板子。

 

一、准备openpose安装环境——caffe

建议使用openpose自带caffe(不过需要先安装好caffe的依赖)

不需要过多操作,保证openpose——3rdparty——caffe文件夹和github上一样即可

(直接clone整个openpose,3rdparty里会有caffe这个文件夹,但里边是空的,摊手~)

openpose 的 caffe 下载地址:

https://github.com/CMU-Perceptual-Computing-Lab/caffe/tree/b5ede488952e40861e84e51a9f9fd8fe2395cc8a

关于安装caffe依赖:

caffe需要一些依赖,否则后面编译会报错。具体步骤如下。

Jetson nano已经安装好CUDA,cuDNN,以及OpenCV,但是需要配置一些,配置可以参考:

https://blog.csdn.net/beckhans/article/details/89138876(第3部分,检查已经安装的系统组件)

这一块建议按照这个步骤做,可以少踩很多坑!

1.安装protobuf 2.6

因为caffe不支持3.0以上的protobuf,所以这里用2.6,这是在单独安装caffe时出现的问题,不知道使用openpose自带caffe是否还对protobuf有要求,有试过的同学可以交流一下。

protoc --version  可查看当前protoc的版本

whereis protoc 可以查看哪些路径下安装了protoc

下载protobuf 2.6:
https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz

安装:

安装完成,如果可以查看版本号,则证明安装成功,如果出现错误:

protoc: error while loading shared libraries: libprotocbuf.so.9: cannot open shared

 在 /etc/ld.so.conf.d/目录下创建 bprotobuf.conf文件,文件内容如下:

/usr/local/lib

这里要注意:你可能没有在/etc/ld.so.conf.d/目录下创建 bprotobuf.conf文件的权限,所以要给当前用户加读写ld.so.conf.d目录下文件的权。#当前路径为/etc

sudo chmod 777 -R ld.so.conf.d

创建好bprotobuf.conf文件后,在 /etc/ld.so.conf.d/目录下输入命令:

sudo ldconfig

再输入protoc --version,就可以查看protobuf版本号了。

2.安装其他依赖

注意:千万不要去切换apt-get的源。因为apt-get的默认源在国外,下载包速度很慢,当时本人将apt-get的源换成了国内的,结果有些依赖包就下载不下来。

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

安装时,注意不要更新protobuf,不要使用sudo apt upgrade

如果出现sudo apt-get install 命令不能用的情况,kill -9 相关进程也没有用,可以试试万能重启。

 

关于 pybind11

如果这个文件夹为空,后续编译时会报错

openpose——3rdparty——pybind11文件夹也存在可能为空的问题

openpose 的 pybind11 下载地址:

https://github.com/pybind/pybind11/tree/085a29436a8c472caaaf7157aa644b571079bcaa

可以单独下载这两个文件夹,进行替换,注意文件夹名称保持不变,还是“caffe”和“pybind11”,不然可能存在路径问题。


二、编译openpose

1.保证openpose——3rdparty——caffe 和 pybind11 两个文件夹非空且内容和github上一样

2.安装cmake-gui

因为jetson nano的系统是Ubuntu 18,所以需要cmake>=3.12(一般默认为3.10)

卸载低版本cmake(如果已安装)

sudo apt purge cmake-qt-gui

执行

sudo apt-get install qtbase5-dev

下载最新版本cmake:

https://cmake.org/download/

解压文件,使用命令行进入文件夹,依次运行

./configure --qt-gui
./bootstrap && make -j8 && sudo make install -j2

注:make install时,如果不加sudo可能会报权限错误

-j2,可以量力而行,2可以改为更大的数,但需保证是2的倍数

如果安装成功可以看到这样的图标(本文中安装的是cmake 3.14)

 

3.编译openpose

  • 新建build文件夹
  • 打开cmake,源文件:openpose文件夹;目标文件:openpose下新建build文件夹

如果openpose文件夹下之前没有build。会有如下提示,选择“Finish”就好。

实际操作界面

  • Configure

点击“Configure”按钮,如果成功,会提示“Configuring done”。这时,会出现一些选项

使用openpose自带caffe需要按照下图勾选:

千万注意不要勾选错了,否则会很麻烦!

注意:最后一项不要选!!!

说明:

1.BUILD_CAFFE:使用自带caffe进行编译

2.BUILD_EXAMPLE:可以使用openpose示例程序

3.BUILD_PYTHON:如果需要使用Python的API,需要勾选此项

4.USE_CUDNN:使用CUDNN加速,不勾选后期调整网络也能跑

注:WITH_OPENCV_WITH_OPENGL:不用勾选,jetson nano没有OPENGL,如果勾选编译时会报错,或者也可以先安装所需文件,不过本文没有尝试。

注意:如果之前自己安装过caffe,但是现在想用openpose自带的caffe,一定记得删除之前caffe的环境变量。
 

sudo vim  ~/.bashrc

删除环境变量/caffe/python,保存文件后记得source一下

source ~/.bashrc

如果想要使用自己安装的caffe,不需要勾选BUILD_CAFFE,而是设置下面两项内容,让cmake可以找到caffe

  • Generate

点击“Generate”,如果成功,会提示“Generate done”

  • make

进入openpose——build,然后make,然后等待,直到100%。


cd openpose/build/
sudo make -j2

三、运行openpose

如果上面的步骤都没问题,那么恭喜你,基本上可以成功运行openpose程序了。

Jetson nano算力有限,如果直接照搬quickstart的示例,很可能发现Jetson nano卡住不动,最后什么也没出来,提示“killed”。

这时候,需要缩小网络,如果需要外接摄像头,还需要缩小相机画面大小,否则nano也可能自己关机了

比如直接使用摄像头:

 ./build/examples/openpose/openpose.bin -camera_resolution 320x160 -net_resolution 64x32

注意:两个数值可以调整,但需要是16的倍数

其他示例也需要设置网络大小,否则很难在Jetson nano上跑起来,

比如处理视频:

./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

 

注意:处理图片时,example/media/文件中有多张图片,如果想要快速检测,可以只留一张图片在此文件夹中,其他图片另存备份。

 

关于网络大小:

其实128x96效果比较好(这也是本文尝试的最大值),但是很容易自动关机。网络太小时,需要离摄像头很近,才能检测出姿态,如果距离较远,会检测不出姿态或者姿态不准确。而网络较大时,距离较远就可以准确识别姿态,但是会比较紧张,因为Jetson nano随时会关机。

关于摄像头:

可以用树莓派摄像头,但是好像需要进行一些设置。

也可以用usb口的摄像头,即插即用(本文用的这种),比较方便。


【参考】:

安装系统:

https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write

openpose准备工作:

https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/prerequisites.md

openpose安装:

https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/installation.md

openpose在jetson nano上示例:

https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/quick_start.md

https://developer.ridgerun.com/wiki/index.php?title=Setting_up_OpenPose_on_NVidia_Jetson_TX2

安装protobuf:

https://blog.csdn.net/yunyi4367/article/details/78071872

安装caffe依赖:

https://blog.csdn.net/beckhans/article/details/89393280

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章