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

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推