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

相关文章

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

IDEA中配置Tomcat全过程

《IDEA中配置Tomcat全过程》文章介绍了在IDEA中配置Tomcat的六步流程,包括添加服务器、配置部署选项、设置应用服务器及启动,并提及Maven依赖可能因约定大于配置导致问题,需检查依赖版本... 目录第一步第二步第三步第四步第五步第六步总结第一步选择这个方框第二步选择+号,找到Tomca

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的