openpose安装(Linux_ubuntu_16.04+cuda9+cudnn7.1.4+protobuf2.6.1)---第二次
emmmmmm 老板年前把这台服务器借给一个早已毕业的学长了,原因是他们公司(keep)没有塔式的服务器...然后年后还回来之后...发现我的openpose全坏了,bin文件都不知道被他们搞到哪去了,环境也乱了,图形界面循环登陆......坑学弟......只能重新配了
然后第二天老板跟合作公司的负责人开会...夸下海口:我们去年已经把openpose跑起来了 (???瑟瑟发抖不敢说话)
毕竟之前只成功过一次,还是磕磕绊绊的,虽然有操作记录,但是心里还是没底,而且很久也没装机了。带着研零的学弟学妹完全按照上次的方法操作,创建虚拟环境的时候一直报HTTP 403 Forbidden的错误:
Fetching package metadata: .Error: HTTPError: 403 Forbidden http://repo.continuum.io/pkgs/pro/linux-64/
怀疑是Miniconda的版本问题,之前用安装完全没有问题。于是换了各种Anaconda2/3和Miniconda版本,虽然可以成功创建虚拟环境,但是在caffe编译时还是碰到了各种奇奇怪怪的问题,遂觉之前的方法可能有问题了,难道是openpose更新了? 于是又开始上网查......查到了这个 感谢:https://blog.****.net/qq_35468937/article/details/81514198,这个blog没有用到anaconda。
1、安装linux-ubuntu16.04系统
熟悉的大白菜:
制作好启动U盘之后开始重装系统.....................。
2、安装NVIDIA显卡驱动、cuda、cudnn
2.1 ubuntu 16.04默认安装了第三方开源的驱动程序nouveau,安装nvidia显卡驱动首先需要禁用nouveau,不然会碰到冲突的问题,导致无法安装nvidia显卡驱动。
编辑文件blacklist.conf:
sudo vim /etc/modprobe.d/blacklist.conf
在文件最后部分插入以下两行内容:
blacklist nouveau
options nouveau modeset=0
更新系统:
sudo update-initramfs -u
重启(必须)后,验证nouveau是否已禁用:
lsmod | grep nouveau
若无任何显示,则说明禁用成功。按ctrl+alt+f1进入命令行界面关闭图形界面,不执行会出错。在命令行界面下输入:
sudo service lightdm stop
安装:
sudo ./NVIDIA-Linux-x86_64-396.18.run -no-x-check -no-nouveau-check -no-opengl-files
-no-x-check:安装驱动时关闭X服务
-no-nouveau-check:安装驱动时禁用nouveau
-no-opengl-files:只安装驱动文件,不安装OpenGL文件,只有禁用opengl这样安装才不会出现循环登陆的问题
查看显卡信息:
nvidia-smi
2.2安装cuda9.0(这里不需要再安装nvidia显卡驱动)
安装所需依赖:
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
安装cuda9.0:
sudo sh cuda_9.0.xxxxxxxxxxxx.run
安装结果:
将这三行加入环境变量,并用source命令使其生效:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH
2.3安装cudnn7.1.4
解压tar文件:
sudo tar -xzf cudnn-9.0-linux-x64-v7.1.tgz -C /usr/local
把解压后的cudnn.h和libcudnn*放到cuda安装目录里面去:
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*
3、安装opencv
通过apt-get安装opencv2:
sudo apt update
sudo apt upgrade
sudo apt install libopencv-dev python-opencv
查看是否安装成功:
pkg-config --modversion opencv
如果输出了对应opencv的版本信息,说明安装成功
4、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
sudo -H pip install --upgrade numpy protobuf
查看protobuf版本:
protoc --version
若是2.6.1则没问题。
下载caffe:
git clone https://github.com/BVLC/caffe.git
检查caffe版本:
cd caffe/
git checkout f019d0dfe86f49d1140961f8c7dec22130c83154
原因(我在上一次的博客中写了):
修改Makefile.config:
1、进入caffe,将 Makefile.config.example 文件复制一份并更名为Makefile.config ,也可以在caffe目录下直接调用以下命令完成复制操作 :
sudo cp Makefile.config.example Makefile.config
2、修改Makefile.config文件,在caffe目录下打开该文件:
修改内容:
...
将
#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
...
4、然后修改 /usr/local/cuda/include/host_config.h 文件
...
将
#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
...
编译 ,在caffe目录下执行
sudo make all -j
测试:
sudo make runtest -j
测试全部通过则可继续下一步。
5、Openpose编译
下载openpose:
git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git
安装Cmake Gui:
sudo apt-get install cmake-gui
下载模型(这一步可跳过,因为之后会自动下载):
cd openpose
cd models
./getModels.sh
cd ..
打开cmke软件:
cmake-gui
<以下cmake的图片均来源于我参考的博客>
填写openpose源码目录以及build:
点击Configure按钮, 选择Unix Makefile和use default native compling,点击finish按钮
点击Generate按钮,中间会出现一些红色的可配置项。之后按图操作配置caffe编译路径 :
最后点击Generate按钮。
编译项目:
cd build/
sudo make
编译过程中出现过一个错误 cannot find #include “caffe/proto/caffe.pb.h”
通过下图方法解决问题(好像是在caffe目录下输入如下代码,最好按照各个路经确认一下):
测试:
./build/examples/openpose/openpose.bin --video examples/media/video.avi
若(https://blog.****.net/blgpb/article/details/87925768)
可能是因为caffemodel文件下载出错,再下载一遍就好了。
我没下载这个(用不到),直接试了另外一个模型就成功了:
./build/examples/openpose/openpose.bin --video ./examples/media/video.avi --write_video ./video/test.avi --write_json output/ --model_pose COCO
用这行命令可以查看更具体的使用说明(是否显示、是否保存视频以及保存路径、是否保存json以及保存路径、使用的模型...):
./build/examples/openpose/openpose.bin --help