• jetsonnano部署openpose姿态检测 cuda10.2


    希望这篇踩坑记录能给你启发,不枉我身先士卒,如果沉没成本还不高的朋友们,可以选择装cuda10.0版本的系统,那边教程会比较多。

    emmmm很遗憾,我用cuda10.2做到最后失败了,编译都编译完了,结果一运行程序就死机,希望有好心人有头绪的话,能了我一个心愿哈哈哈哈。
    不过还好老师没指定项目,我用jetson inference的posenet,6h就部署完成了。

    1. 系统安装

    在英伟达官网https://developer.nvidia.com/embedded/downloads,下载对应版本镜像,并刷入sd卡

    2.预设软件检查

    1、检查cuda,先执行次nvcc -V,若失败,则将cuda路径写入环境变量

    此处请根据该路径/usr/local/cuda查看自己系统的cuda版本号并更改下方路径名,惨痛教训

    sudo vim  ~/.bashrc
    
    • 1

    在文件最后添加

    export CUDA_HOME=/usr/local/cuda-10.2
    export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
    export PATH=/usr/local/cuda-10.2/bin:$PATH
    
    • 1
    • 2
    • 3

    重载文件

    source ~/.bashrc
    
    • 1

    再次执行

    nvcc -V #查看系统版本
    
    • 1

    在这里插入图片描述
    2.检查opencv版本号

    pkg-config opencv4 --modversion
    
    • 1

    会返回对应的版本号,我的是4.1.1
    3.检查cuDnn

    cd /usr/src/cudnn_samples_v7/mnistCUDNN   #进入例子目录
    sudo make     #编译例子
    sudo chmod a+x mnistCUDNN # 为可执行文件添加执行权限
    ./mnistCUDNN # 执行
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    若出现fatal error: FreeImage.h: No such file or directory,则运行sudo apt-get install libfreeimage3 libfreeimage-dev,再继续上述指令,出现test passed,则代表cudnn可正常使用。

    3.准备

    本段摘自这位博主的博文,非常感谢https://blog.csdn.net/weixin_41750643/article/details/105430654

    1.protobuf2.6

    wget 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 #安装 很快
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    查看protobuf的版本号,如出现protoc: error while loading shared libraries:的报错,则创建bprotobuf.conf文件

    sudo chmod 777 -R /etc/ld.so.conf.d
    sudo vim /etc/ld.so.conf.d/bprotobuf.conf
    #添加的内容为
    /usr/local/lib
    
    • 1
    • 2
    • 3
    • 4

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

    sudo ldconfig
    
    • 1

    再次检查版本,得到版本号即成功

    protoc --version
    libprotoc 2.6.1
    
    • 1
    • 2

    2.cmake-gui
    安装依赖:

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述
    在这里插入图片描述
    如出现报错Could not find OpenSSL. Install an OpenSSL development package or configure CMake with -DCMAKE_US
    安装openssl依赖apt-get install libssl-dev

    4.下载并编译openpose

    下载openpose、caffe、pybind11的源代码,在openpose的3rdparty文件夹下,将caffe和pyblind11源代码复制进去

    openpose地址:https://github.com/CMU-Perceptual-Computing-Lab/openpose
    openpose 的 caffe 下载地址:
    https://github.com/CMU-Perceptual-Computing-Lab/caffe
    openpose 的 pybind11 下载地址:
    https://github.com/pybind/pybind11/tree/085a29436a8c472caaaf7157aa644b571079bcaa

    mkdir openpose/build #创建build文件夹
    sudo cmake-gui #打开cmake 图形化界面
    
    • 1
    • 2

    在图形化界面中,进行配置where is the source code :选择openpose源码文件夹
    where to build the binaries:选择工程文件文件夹
    后点击generate,选择unix Makefiles,再根据报错安装相应包,再点击Generate,直至输出Generate done

    在这里

    报错一:cuDNN version >3 is required.
    解决方法一:in Openpose change the cmake/cuda.cmake file and the /cmake/modules/FindCuDNN.cmake file.
    Find the line that reads:
    file(READ {CUDNN_INCLUDE}/cudnn.h CUDNN_VERSION_FILE_CONTENTS)
    change to: file(READ {CUDNN_INCLUDE}/cudnn_version.h CUDNN_VERSION_FILE_CONTENTS)
    参考链接:https://blog.csdn.net/weixin_34246656/article/details/112538507
    解决方法二:打开cmake文件夹下

    报错二:CUDA_ARCH
    解决方法:https://blog.csdn.net/tukechao/article/details/109097599

    报错三:

  • 相关阅读:
    OpenFeign【与Feign关系 OpenFeign详解】
    操作系统OS/存储管理/内存管理/内存管理的主要功能_基本原理_要求
    实用:AE/PR 视频交换格式哪家强?
    解决mybatis-plus不能俩表联查分页之手动写分页
    十四、SpringBoot原理——SpringBoot应用是怎么启动的?从创建容器到运行容器,逐行分析完整过程
    多线程的创建及状态描述
    SpringBoot自动装配详解_回顾一下2
    cloud探索 - AWS容器
    el-form动态表单嵌套验证
    [云原生之k8s] Kubernetes原理
  • 原文地址:https://blog.csdn.net/weixin_44376152/article/details/126157244