由于实验室需要,被安排跑卡内基梅隆大学开源项目openpose。按照网山各种教程安装环境及测试,都遇到各种问题,有的编译成功了测试时还出问题。几经重装与尝试,花了六七天的时间,综合各种帖子的方法,最后成功了。特写博客记录一下,也希望能帮到看到此博客的人。
个人觉得前面的安装驱动、cuda8.0、cudnn5.1等基本都不会有什么太大问题,重点在本文中的 “第六步 caffe及openpose的安装”。
处理器:Intel® Core™ i7-5930K CPU @ 3.50GHz × 12
内存: 16g
硬盘:2T机械硬盘
显卡:NVIDIA GeForce 1080(2块)
nvidia:384.130
cuda:8.0.61
cudnn:5.1.10
opencv:2.4.9.1
caffe:不详(openpose文件自带的)
此处采用简单的方法(毕竟标题说的是简单):依次点击:设置——软件和更新——附加驱动,选择对应的驱动
然后重启,ctrl+alt+t进入终端,输入nvidia-smi如有显卡信息表,则表示成功
下载完毕将其拷贝至home/scu210 (scu210是电脑名,实际就是拷贝在了download的上一级)
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
因为对linux不怎么熟悉,所以为了保证后面的安装不出奇怪的错误,先把可能的依赖文件都装一下比较稳妥,请各位自行决定是否安装: 依次执行下列语句进行安装[2]
sudo apt-get update
sudo apt-get install build-essential cmake git pkg-config
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install libatlas-base-dev
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install libopencv-dev
1.简单方法:
ctrl+alt+t进入终端
sudo sh cuda_8.0.61_375.26_linux.run
a)会先有个阅读声明,一直按q即可,然后accept
b)第一个选项install nvidia accelerated Graphics Driver (n,因为我们之前安装过了nvidia显卡)
之后就选择y或者默认
2.一般出现如图,就表示安上了
3.搭配环境[2]
cuda路径添加
sudo gedit /etc/profile
在profile文件末尾中添加:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64$LD_LIBRARY_PATH
4.依次执行下列语句测试CUDA的samples
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
或者在终端输入
nvcc -V
得到编译器信息则安装成功
点击下载cudnn
下载cudnn 5.1.tgz后解压,cd到解压后的文件夹,里面包含两个文件夹include和lib64,终端输入下述命令即可
我是下载cudnn5.1,解压后,复制到download文件夹的上一级
cd cuda
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/* /usr/local/cuda/lib64/
cd /usr/local/cuda/lib64
sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
sudo ldconfig -v
sudo apt update
sudo apt upgrade
sudo apt install libopencv-dev python-opencv
pkg-config --modversion opencv
若输出opencv2.4的版本信息,则成功
1.OpenPose下载:点击进入
或者直接在终端用git下载
git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git
相关paper:[CVPR2017] Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
下载链接:https://arxiv.org/abs/1611.08050
2.caffe 下载 :点击进入
下载后解压,然后将所有文件复制到,openpose/3rdparty/caffe/
首先进入openpose/3rdparty/caffe/文件夹
cd openpose/3rdparty/caffe/
根据你的系统和cuda版本选择以下命令 我的系统是16.04,cuda是8.0,所以选的cp Makefile.config.Ubuntu16_cuda8.example Makefile.config
cp Makefile.config.Ubuntu14_cuda7.example Makefile.config # Ubuntu 14, cuda 7
cp Makefile.config.Ubuntu14_cuda8.example Makefile.config # Ubuntu 14, cuda 8
cp Makefile.config.Ubuntu16_cuda7.example Makefile.config # Ubuntu 16, cuda 7
cp Makefile.config.Ubuntu16_cuda8.example Makefile.config # Ubuntu 16, cuda 8
如果你的OpenCV是3版本,需要将Makefile.config里的 OPENCV_VERSION := 3的注释去掉。可以到文件夹下找到该文件打开修改,也可以在终端使用sudo gedit Makefile.config修改
# Uncomment if you're using OpenCV 3
OPENCV_VERSION := 3
由于此处我们用的是自带的opencv2.4,所以对于Makefile.config不用修改。
#-j后面的数字写成你cpu的核数即可
make all -j12 && make distribute -j12
然后用以上语句编译caffe,不出问题的话会成功。我遇到缺少python-numpy的包的问题(如下图),用sudo apt-get install python-numpy安装后再编译即可。
sudo apt-get install python-numpy
1.安装cmake-gui
sudo apt install cmake-qt-gui
2.下载模型
cd models
./getModels.sh
3.编译安装
首先在终端输入打开cmake图形界面
cmake-gui
最上面两行填写openpose的路径和该路径下新建一个build文件夹(参考下图),然后点Configure;
然后还有Caffe_INCLUDE_DIRS和Caffe_LIBS的路径(参看下图),然后点Generate生成。
注意:此处因为用的项目自带caffe,所以第一个BUILF_CAFFE要打勾。
下载完成后回到OpenPose主目录,和安装caffe的时候一样,将ubuntu目录下的与你系统对应的Makefile.config.example 文件复制到主目录下。如果你用的OpenCV 3版本,这里同样要将Makefile.config里的 OPENCV_VERSION := 3的注释去掉 意思就是说前面编译caffe的时候对Makefile.config做了什么修改,这里要做出同样的修改,否则编译可能会出错[4]。当然由于我们用的opencv2.4所以不用做修改。复制后进行编译即可。
cd ..
cp ubuntu/Makefile.config.Ubuntu16_cuda8.example Makefile.config
cd build
make all -j12 #后面的数字是cpu核数
最后输出build信息即成功。顺利的话,到这里就安装好了。如果出错了,先找到问题,make clean 一下之后再make all即可。 想卸载的话直接删掉OpenPose目录即可[4]。
# human pose
./build/examples/openpose/openpose.bin --video examples/media/video.avi
# human pose with face and hands
./build/examples/openpose/openpose.bin --video examples/media/video.avi --face --hand
上面命令会对输入视频标记之后输出到屏幕 我们要将标记好的视频输出到文件而不是在屏幕打开,但是openpose目前没有相关命令,因此我们用如下命令输出标记好的图片序列输出到results文件夹下 ./build/examples/openpose/openpose.bin --video openpose_test1.avi --write_images results 然后,采取在用工具将图片序列转化为视频输出[6]。
# human pose
./build/examples/openpose/openpose.bin
# human pose with face and hands
./build/examples/openpose/openpose.bin --face --hand
# human pose
./build/examples/openpose/openpose.bin --image_dir examples/media/
# human pose with face and hands
./build/examples/openpose/openpose.bin --image_dir examples/media/ --face --hand
[1]卡内基梅隆大学开源项目Github,详细内容请点击:https://github.com/CMU-Perceptual-Computing-Lab/openpose#quick-start
[2]来自 linhai1028 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/linhai1028/article/details/79451648
[3]来自 兜售小学生 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq897107499/article/details/79266348
[4]来自 linhai1028 的CSDN 博客,全文地址请点击:https://blog.csdn.net/linhai1028/article/details/79452759
[5]来自 二极管具有单向导电性 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u013512448/article/details/78076670
[6]来自 linhai1028 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/linhai1028/article/details/79452977
[7]来自 brucechen135 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u014436581/article/details/80761930