本文主要是介绍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环境配置与应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!