ubuntu18.04+CUDA10+caffe+openpose环境配置与应用

2023-11-07 19:20

本文主要是介绍ubuntu18.04+CUDA10+caffe+openpose环境配置与应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        最近老板谈到了一个项目,需要通过人的行为姿势来初步判断人在干嘛,然后我就找到了openpose,找到源码之后,我又粗略的看了下别人写的相关博客还有其他资料,觉得也没什么大不了,虽然内部算法原理我不了解,但是先把别人的实验结果复现一遍,我觉得这对我来说肯定是小case,哈哈哈~~~,然后,你懂的,我就走上了不归路,无数次掉进坑里,真的想放弃,但最后还是咬牙坚持住,成功复现,这里我就讲一下我遇到的问题和解决方式~~~

      在进入正题之前,我要提醒一句:你的ubuntu系统在分区时,主分区/分了多大,别跟我说20G,如果是的话,哈哈哈,恭喜,准备重装系统吧,别笑我废话,因为这个真的太尼玛坑了,我当时就是看了别人的博客,说主分区/20G就够了,直到我做这个实验,我才知道UBUNTU的主分区,就相当于windows系统的C盘,怎么样,现在明白了吧,额,所以我就重装了系统,将这个区分了100个G左右吧。

言归正传

实验用到的软件及版本:NVIDIA驱动435,CUDA10.0,cuDNN7.6.2,opencv3.4.7

STEP1:安装NVIDIA驱动

其实在网上有很多相关的安装教程,但我建议我的懒人安装法,打开电脑的软件与更新,选择上面的附加驱动,等待一会,会出现好几个选项,然后我就选择了NVIDIA435,点击应用更改,就OK了,安装结束之后,打开终端,输入nvidia-smi,这样就能看到一个矩形列表,有显卡信息和推荐安装的CUDA版本,如果没有显示,可能是需要重启电脑。

STEP2:安装CUDA10.0

首先下载cuda10.0文件

安装依赖项

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

再进入下载的cuda10.0同级目录内,打开终端,输入:

sudo sh cuda_10.0.130_410.48_linux.run

安装时,会出现一个白色的更多,这时可以一直按空格健,直到更多消失,也可以直接按个q键,直接跳过,然后就是下面这些了:

Do you accept the previously read EULA?
accept/decline/quit: acceptInstall NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: nInstall the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: yEnter Toolkit Location
[ default is /usr/local/cuda-10.0 ]:Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: yInstall the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: y

然后配置环境变量

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

最后在随意打开终端,输入nvcc -V,若正常的话,就会显示你安装的CUDA版本。

STEP3:安装cuDNN7.6.2

首先下载与CUDA10.0对应版本的cuDNN

网上有人说下载其他的,但我就下载了红圈那个,下载好以后,解压,打开这个解压的文件,打开终端,执行以下命令:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

也就是把cudnn解压后,把cudnn.h和libcudnn*放到cuda安装目录里去

STEP4:安装opencv3.4.7

呵,在你找到我这篇文章之前,可能你已经被opencv的安装过程FUXK了N+1次了,哎,心累~~~

推荐看下这篇文章,真的炒鸡棒,比那些垃圾文章强太多~~~

额,在安装opencv之前,还是先把anaconda安装下吧,不然可能会出问题。。。

下载opencv3.4.7,选择source版本,下载好后,解压,在解压后的opencv文件夹,打开终端,然后执行下列命令:

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_GTK=ON -D WITH_OPENGL=ON ..
sudo make -j8    #(我看到的资料都说8是电脑上cpu的核数,但我对两台不同的电脑配置,证明这是cpu的线程数,我的电脑是4核8线程,你的是多少,自己google)
sudo make install
#查看物理cpu个数: grep 'physical id' /proc/cpuinfo | sort -u
#查看核心数量: grep 'core id' /proc/cpuinfo | sort -u | wc -l
#查看线程数: grep 'processor' /proc/cpuinfo | sort -u | wc -l

这样opencv的编译过程就结束了,再将opencv的库添加到路径:

sudo gedit /etc/ld.so.conf.d/opencv.conf 

输入这段指令之后,会直接打开一个文本,而且是空的,什么都没有,然后我们就在这个文本里面加入以下内容:

/usr/local/lib

再执行下面命令使刚才的更改生效:

sudo ldconfig 

然后配置bash

sudo gedit /etc/bash.bashrc 

此时又会打开一个新的文本,我们就在文本的最下面添加下面内容:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH

接下来,我们来测试下,看行不行,也就是能不能打开摄像头

在opencv目录下,打开终端,然后

cd samples/cpp/example_cmake

依次执行下面命令

cmake .
make
./opencv_example

这样的话,正常情况下,电脑会打开连接在电脑上的摄像头,能看见画面,而且左上角会有一个hello opencv.

做到这里,也许你会长长的嘘了一口气,终于解决了opencv的安装啦,哈哈哈,Too young,too simlpe,NAIVE!!!

不信你就进入终端,输入python,再输入import cv2,你会惊喜的发现“no module named cv2”,握草,真的崩溃~~~

其实也就小case啦,解决的办法就是在终端执行:

pip install opencv-python

这样的话,才是真的搞定了。

STEP5:caffe搭建

全过程中,这个地方是最头疼的,因为看别人的文章总是千奇百怪,不是讲的不对,就是讲的粗略,反正就是头疼~~~

先安装依赖库

sudo apt-get --assume-yes install build-essential
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
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

下载openpose,我是直接解压到主目录下的sofewares里面,将解压的文件名openpose-master改为openpose。

下载caffe,解压到softwares/openpose/3rdparty里面,对了,放进去之前要将3rdparty里面的原有的那个caffe空文件删除,再将解压的文件名称从caffe-f019d0dfe86f49d1140961f8c7dec22130c83154改为caffe。

修改Makefile.config
1、进入caffe ,將 Makefile.config.example 文件复制一份并改名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作 :

sudo cp Makefile.config.example Makefile.config

复制一份的原因是编译 caffe 時需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用來编译caffe。

2、修改 Makefile.config 文件,在 caffe 目录下打开该文件:

sudo gedit Makefile.config

进行以下几处的替换:
 

...
將
#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1
......
#如果此處是OpenCV2,則不用修改
將
#OPENCV_VERSION := 3 
修改爲: 
OPENCV_VERSION := 3
......
將
#WITH_PYTHON_LAYER := 1 
修改爲 
WITH_PYTHON_LAYER := 1
......
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 
修改爲: 
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial       
......
將
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \-gencode arch=compute_20,code=sm_21 \-gencode arch=compute_30,code=sm_30 \-gencode arch=compute_35,code=sm_35 \-gencode arch=compute_50,code=sm_50 \-gencode arch=compute_52,code=sm_52 \-gencode arch=compute_60,code=sm_60 \-gencode arch=compute_61,code=sm_61 \-gencode arch=compute_61,code=compute_61
修改爲
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \-gencode arch=compute_35,code=sm_35 \-gencode arch=compute_50,code=sm_50 \-gencode arch=compute_52,code=sm_52 \-gencode arch=compute_60,code=sm_60 \-gencode arch=compute_61,code=sm_61 \-gencode arch=compute_61,code=compute_61
...

对了,既然是替换,就把之前的删了,换成新的就行了。

3、接下来修改caffe目录下的Makefile文件,直接找到文件,打开就行。

...
將:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替換爲:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
......
將:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改爲:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
...

网上别人还说修改 /usr/local/cuda/include/host_config.h 文件,但是我直接在终端输入命令:

sudo gedit  /usr/local/cuda/include/host_config.h

打开了这个文本,但是并没有看见让我修改的那个error,所以我也就没管了,继续前进~~~

4、编译caffe

还是打开softwares/openpose/3rdparty/caffe,打开终端,执行:

#8为cpu线程数
sudo make all -j8

STEP6:openpose搭建

安装cmake gui,我就是直接在ubuntu软件里面下载的这个软件,当然也可以通过指令下载:

sudo apt-get install cmake-gui

对了,在softwares/openpose/models/里面有face,hand,pose三个文件夹,里面需要下载一共5个训练好的模型,但是如果直接通过指令下载,速度慢的感人,所以推荐这个连结,这样下载速度快点,下载好后,按要求将文件放到对应的文件夹里面就行。

当然也可以指令下载:

cd openpose
cd models
./getModels.sh
cd ..

没骗你,真慢,还是算了吧,哈哈哈

这个搞定之后,再在openpose文件夹里面建一个build文件夹,打开cmake软件,填写source code和build the binaries

此时界面是空白的,然后点击configure,选择Unix Makefile和use default native compling,点击finish按鈕 ,编译,若过程中没有报错,并且出现了configuring done,中间会出现一些红色的可配置项,

注意下图红圈之内的改变,一定要选择对应的文件!!!!!!!!!!!!!!!!!!!!!!

选择完成后,点击Generate按钮。

接着,打开softwares/openpose/build,可以直接进入这个文件夹下面,打开终端,或者在openpose那一层目录,直接cd build

在终端输入

sudo make -j8

编译结束后,差不多真的就配置成功了~~~

STEP7:检测

打开softwares/openpose文件夹,打开终端,执行以下命令:

视频:

./build/examples/openpose/openpose.bin --video examples/media/video.avi

其实在执行之前可以进/build/examples/openpose/这个文件夹里看下,到底有没有openpose.bin这个文件,

摄像头:

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

图片:

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

注意:我在实验时发现算法可以检测.avi的视频文件,但是不能打开.mp4的文件,后期再解决吧,先就到这里啦,谢谢欣赏,再见~~~

 

 

 

 

 

这篇关于ubuntu18.04+CUDA10+caffe+openpose环境配置与应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/365739

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示