Jetson nano 运行openpose

3 篇文章 0 订阅
3 篇文章 0 订阅

声明:仅作为个人学习使用

之前一直在树莓派上使用openpose,需要用到一个树莓派4B+一个Intel神经网络计算棒,即便如此也只能勉强运行openpose的精简版,成本约为1000r左右,后来发现了nvidia公司生产的Jeston nano,在Jetson nano上跑openpose流畅许多,且成本仅为500r左右

在网上找相关资源,找到了华仔的一篇名为Jetson nano安装openpose的文章,这篇文章真的是帮了我大忙,在这里向这位博主表示衷心的感谢。经过一天时间,成功运行openpose,以此贴记录。

一、安装Jeston nano 官方系统

https://developer.nvidia.com/embedded/downloads

可以看到官方系统安装了常用的机器学习库,便于我们进行后续操作。

 二、下载openpose

OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以caffe为框架开发的开源库。故需要安装caffe框架。

openpose地址:https://github.com/CMU-Perceptual-Computing-Lab/openpose

或者使用命令:

git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git

(注:有的blog提到了需要下载模型,这一步可以跳过,之后使用cmake时会自动下载)

  1. cd openpose

  2. cd models

  3. ./getModels.sh

  4. cd ..

openpose 的 caffe 下载地址:

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

openpose 的 pybind11 下载地址:

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

下载完成后,解压,将caffe、pybind11的内容复制到openpose下3rdparty文件夹中。

三、准备openpose安装环境(apt-get千万不要换源)

1、检查Jeston nano自带环境

(1)先进行更新

sudo apt-get update
sudo apt-get full-upgrade

(2)检查安装的组件

1) 检查CUDA

Jetson-nano中已经安装了CUDA10.0版本,但是此时你如果运行 nvcc -V是不会成功的,需要你把CUDA的路径写入环境变量中。

sudo vim  ~/.bashrc


在最后添加

export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.0/bin:$PATH


 然后保存退出

对了最后别忘了source一下这个文件。

source ~/.bashrc


 source后,此时再执行nvcc -V执行结果如下

beckhans@Jetson:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sun_Sep_30_21:09:22_CDT_2018
Cuda compilation tools, release 10.0, V10.0.166
beckhans@Jetson:~$


 2)检查OpenCV

Jetson-nano中已经安装了OpenCV4.1.1版本,可以使用命令检查OpenCV是否安装就绪

pkg-config opencv4 --modversion


如果OpenCv安装就绪,会显示版本号,我的版本是4.1.1

3)检查cuDNN

Jetson-nano中已经安装好了cuDNN,并有例子可供运行,我们运行一下例子,也正好验证上面的CUDA

cd /usr/src/cudnn_samples_v8/mnistCUDNN   #进入例子目录
sudo make     #编译一下例子
sudo chmod a+x mnistCUDNN # 为可执行文件添加执行权限
./mnistCUDNN # 执行


如果成功,如下所示

beckhans@Jetson:/usr/src/cudnn_samples_v7/mnistCUDNN$ ./mnistCUDNN
cudnnGetVersion() : 7301 , CUDNN_VERSION from cudnn.h : 7301 (7.3.1)
Host compiler version : GCC 7.3.0
There are 1 CUDA capable devices on your machine :
device 0 : sms  1  Capabilities 5.3, SmClock 921.6 Mhz, MemSize (Mb) 3964, MemClock 12.8 Mhz, Ecc=0, boardGroupID=0
Using device 0
 
Testing single precision
Loading image data/one_28x28.pgm
Performing forward propagation ...
Testing cudnnGetConvolutionForwardAlgorithm ...
Fastest algorithm is Algo 1
Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.325104 time requiring 3464 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.387500 time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.540729 time requiring 57600 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 4.965156 time requiring 207360 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 7: 5.201146 time requiring 2057744 memory
Resulting weights from Softmax:
0.0000000 0.9999399 0.0000000 0.0000000 0.0000561 0.0000000 0.0000012 0.0000017 0.0000010 0.0000000 
Loading image data/three_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000000 0.0000000 0.9999288 0.0000000 0.0000711 0.0000000 0.0000000 0.0000000 0.0000000 
Loading image data/five_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 0.9999820 0.0000154 0.0000000 0.0000012 0.0000006 
 
Result of classification: 1 3 5
 
Test passed!
 
Testing half precision (math in single precision)
Loading image data/one_28x28.pgm
Performing forward propagation ...
Testing cudnnGetConvolutionForwardAlgorithm ...
Fastest algorithm is Algo 1
Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.113750 time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.119792 time requiring 3464 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.236198 time requiring 28800 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 1.031719 time requiring 207360 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 5: 5.049948 time requiring 203008 memory
Resulting weights from Softmax:
0.0000001 1.0000000 0.0000001 0.0000000 0.0000563 0.0000001 0.0000012 0.0000017 0.0000010 0.0000001 
Loading image data/three_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000714 0.0000000 0.0000000 0.0000000 0.0000000 
Loading image data/five_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006 
 
Result of classification: 1 3 5
 
Test passed!

(3)安装protobuf 2.6(无论使用openpose自带caffe还是自己安装caffe都需要)

因为caffe不支持3.0以上的protobuf,所以这里用2.6

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

安装过程:

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: 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版本号了。

(4)安装其他依赖

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

四、下载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:

Download | CMake

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

./configure --qt-gui

./bootstrap && make -j8 && sudo make install -j2

大约需要1h时间,之后若找不到cmake图标执行命令:

cmake-gui

即可打开gui版本cmake。

五、编译openpose

到这一步,所有前序工作全部完成,终于可以开始编译openpose了

点击“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,如果勾选编译时会报错,或者也可以先安装所需文件,不过本文没有尝试。

点击Generate,之后等待编译完成。

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


sudo make -j2

六、运行openpose

笔者使用了Intel D435深度摄像头

使用如下命令即可运行openpose:

(要将openpose文件夹下models文件夹复制到openpose.bin所在目录下,否则会报错找不到模型models)

./build/examples/openpose/openpose.bin --face --hand

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

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值