使用Jetson AGX Orin部署Openpose实现肢体姿态检测:学习笔记

前言

使用SDK Manager 烧录系统默认安装了CUDA等环境配置,查看Jetson AGX OrinJetPack 版本和 CUDAcuDNNOPENCVTensorRT版本

  • 安装pip3jtop
  • sudo apt-get update
    sudo apt-get install python3-pip python3-dev -y
    sudo -H pip3 install jetson-stats
    sudo jtop
    

  • 换国内源
  • sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
    sudo vim /etc/apt/sources.list
    

    #清华源
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
    deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
    deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
    deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main universe restricted
    deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main universe restricted

    sudo apt-get update
    

    一、Openpose环境配置

    1.安装 protobuf

  • 下载 protobuf 2.6:下载链接
  • 安装 protobuf 2.6
  • sudo apt-get install build-essential 
    tar -zxvf protobuf-2.6.1.tar.gz
    cd protobuf-2.6.1/
    sudo ./configure 
    sudo make 
    sudo make check 
    sudo make install 
    
  • 查看 protobuf
  • sudo gedit /etc/ld.so.conf.d/bprotobuf.conf   //创建 bprotobuf.conf文件
    

    #添加的内容
    /usr/local/lib

    sudo ldconfig
    protoc --version
    

    2.安装依赖库

    sudo apt-get install g++ gcc libssl-dev make
    sudo apt-get install qtbase5-dev
    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
    

    3.安装 cmake

  • 下载Cmake源码:Cmake官网

    直接安装 Cmake 时出现 Could not find OpenSSL 错误,所以就先安装 openssl

  • 下载openssl源码:openssl 官网

  • 安装 openssl

  • tar -zxvf openssl-3.0.7.tar.gz
    cd openssl-3.0.7/
    sudo ./config --prefix=/usr/local --openssldir=/usr/local/openssl
    sudo make
    sudo make test
    sudo make install
    
    
  • 安装 Cmake
  • sudo apt purge cmake-qt-gui				//卸载低版本的cmake
    tar -zxvf cmake-3.25.0.tar.gz
    cd cmake-3.25.0/
    sudo ./configure --qt-gui
    sudo ./bootstrap
    sudo make -j8
    sudo make install 
    cmake --version
    

    二、安装 Openpose

    1.下载 openpose 、caffe、pybind11

    github 下载的 openpose-master 文件夹3rdparty目录中的caffe目录和pybind11为空的,自己下载,然后将解压好的caffepybind11替换掉即可

  • openpose 链接 openpose
  • caffe 链接caffe
  • pybind11 链接 pybind11
  • unzip openpose-master.zip
    unzip caffe-master.zip
    unzip pybind11-master.zip
    cd caffe-master/
    cp -r * ../openpose-master/3rdparty/caffe/			//将下载的caffe复制到openpose-master/3rdparty/caffe/目录下
    cd ../pybind11-master
    cp -r * ../openpose-master/3rdparty/pybind11/		//将下载的pybind11复制到openpose-master/3rdparty/pybind11/目录下
    

    2.编译 Openpose

    sudo cmake-gui			//打开cmake编译界面
    cd openpose-master/ && mkdir build    //在openpose目录下创建build文件夹
    

    source code 选择 openpose 文件夹
    binaries 选择刚刚新建的build文件夹
    Specify the generator for this project 选择 Unix Makefiles,点击 finish

  • 点击 Configure 等待一会儿在 NameValue 出现一些选项,按照下图选择即可

  • 再次点击 Configure ,出现 Configuring done;点击 Generate 出现 Generating done,编译好之后关闭cmake-gui

  • 编译

  • cd openpose-maste/build
    sudo make -j8 
    

    三、测试 Openpose

    1.调试

  • 编译完成之后直接测试出现了一些错误:
  • 1.错误信息,Gtk-Message:Failed to load module "canberra-gtk-module"

    安装相应的依赖库

    sudo apt install libcanberra-gtk-module
    
    1. 错误信息:check filed: ReadProtoFromBinaryFile(param_file, param) Failed to parse NetParameter file: models/pose/body_25
    cd openpose-master/models
    bash ./getModels.sh				//下载过程比较长							
    

    2.关键参数

    --face :开启 Face 关键点检测
    --hand:开启 Hand 关键点检测
    --video input.mp4:读取 Video
    --camera 0:读取 webcam number 0
    --image_dir path_to_images/: 运行图像路径内的图片
    --ip_camera http://iris.not.iac.es/axis-cgi/mjpg/video.cgi?resolution=320x240?x.mjpeg:在 streamed IP camera 上运行
    --write_video path.mp4:将处理后的图片保存为 Video
    --write_images folder_path: 将处理后的图片保存到指定路径
    --write_keypoint path/: 在指定路径输出包含人体姿态数据的 JSON, XML 或 YML 文件
    --process_real_time: 对于视频,可能在实时运行时,跳过某些视频帧
    --disable_blending:如果 --disable_blending=True,则在很色背景上渲染估计结果(如 keypoints skeletons 和 heatmaps),而不显示原始图像
    --part_to_show: 可视化的预测通道(Prediction channel).
    --display 0: 不打开可视化显示窗口. 对于服务器部署和 OpenPose 加速很帮助.
    --num_gpu 2 --num_gpu_start 1::多 GPUs 时,设置开始的 GPU id. 默认使用所有可用的 GPUs.
    --model_pose MPI:采用的模型Model,影响 Keypoints 的数量、运行速度和精度.
    --logging_level 3:Logging messages threshold, range [0,255]: 0 – 输出所有信息e & 255 – 不输出任何信息

    3.运行测试

    3.1 测试图片

  • 传递的参数是 image_dir测试图片可以使用官方自带的图片文件夹examples/meida,这里我用自己的图片文件夹./test/,添加面部关键点检测,然后将检测结果保存到指定的文件夹下./check
  • sudo ./build/examples/openpose/openpose.bin --image_dir ./test/  --net_resolution 320x160  --write_images ./check --face
    

  • 传递参数是--camera,我的摄像头是/dev/video0,添加面部、手部关键点检测
  • sudo ./build/examples/openpose/openpose.bin --camera 0  --net_resolution 320x160  --face --hand
    

    3.3 测试mp4视频

  • 传递参数是--video,添加测试视频路径
  • sudo ./build/examples/openpose/openpose.bin --video examples/media/a.mp4 --net_resolution 320x160
    

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用Jetson AGX Orin部署Openpose实现肢体姿态检测:学习笔记

    发表评论