ubuntu16.04+openpose

ubuntu16.04+openpose

本人配置:ubuntu16.04+cuda9.0+cudnn7.1.4+opencv3.4.2+caffe+openpose

一.cuda9.0+cudnn7.1.4

参考:1.cuda+cudnn
2.cuda+cudnn

1.1. 安装过程中遇到的bug

1.1.1. ubuntu循环登录问题

如参考1中所说卸载nouveau,安装合适的驱动,安装好后要重新启动,这时会遇到这个问题,可以参考1.[解决1]2.[解决2]我遇到的是驱动冲突问题,卸载了之后,再重装合适的就解决了。

1.1.2. nvidia-smi 和 nvcc 结果的cuda不一致

这个问题不用担心,具体分析可以参考 解决 两个显示不一致很正常

二.安装opencv

参考 1. opencv1
2.opencv2

2.1.安装过程

2.1.1.安装依赖项

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

2.1.2.编译安装OpenCV

  1. 下载地址(opencv3.4.2,opencv contrib3.4.2)解压opencv-3.4.2.zip到当前文件夹,生成opencv-3.4.2文件夹;
  2. 解压opencv_contrib-3.4.2.tar.gz到opencv-3.4.2文件夹,生成opencv_contrib-3.4.2文件夹;
  3. 依次执行命令
cd opencv-3.4.6
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_EIGEN=ON ..
make -j4
sudo make install
sudo ldconfig
(不安装扩展库的话   cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..     这么操作也行)

4.检查安装是否成功
在这里插入图片描述

按照上述步骤执行以下看是否能够运行成功

2.2.安装过程中遇到的bug

2.2.1.作者的源码和官方源码问题

这里要注意在安装的时候,看是不是作者提供的源码还是,官方的源码,因为有些作者作者在github上传的源码可能是原作者一些参数都修改完之后上传的,就会导致后面出现一些不必要的错误,最好采用官方文档,找对应的版本。(我一开始就是这样,出现了很多bug,每个都调试不成功,最后我把opencv卸载了,重下了官方文档,然后就成功了,很顺利)

三.安装caffe

参考

  1. caffe1
  2. caffe2
    3.caffe3

这里我主要用的是参考1和3,参考2中,我没用cmake-gui来编译

3.1.安装过程

3.1.1.安装依赖项

这里参考官网,这里面有相应版本系统需要安装的依赖

3.1.2.编译安装caffe

  1. 下载caffe
git clone https://github.com/BVLC/caffe.git

2.复制文件
进入caffe文件夹

sudo cp Makefile.config.example Makefile.config

复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。
3.修改文件
在caffe目录下打开Makefile.config

sudo gedit Makefile.config

①应用 cudnn

将
#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1

②应用 opencv 版本

将
#OPENCV_VERSION := 3 
修改为: 
OPENCV_VERSION := 3

③使用 python 接口

将
#WITH_PYTHON_LAYER := 1 
修改为 
WITH_PYTHON_LAYER := 1

④修改 python 路径

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       

⑤然后修改 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 文件 :

将
#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!

我感觉第6条没用 ,我系统上的这个文件没有找到这条,可能是版本原因吧

  1. 依次在caffe目录下执行命令
make all -j8
sudo make runtest -j8

3.2.安装过程中遇到的bug

3.2.1. 根据自己cuda的安装版本,将Makefile.config文件做相应的更改

# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
# For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.

3.2.2.caffe/proto/caffe.pb.h: 没有那个文件或目录

# In the directory you installed Caffe to
protoc src/caffe/proto/caffe.proto --cpp_out=.
mkdir include/caffe/proto
mv src/caffe/proto/caffe.pb.h include/caffe/proto

参考:解决办法

3.2.3.nvcc fatal:Unsupported gpu architecture’compute_75’

可能是cuda版本太低,升级到10.几版本试试,对应cudnn也要换,不然可能后面会报错,再下载cuda,然后路径指到这个新安装的cuda路径
在这里插入图片描述

四.安装openpose

参考

  1. openpose1
  2. 官方中文文档
  3. openpose2
  4. openpose3

4.1.安装过程

4.1.1.编译安装openpose

# 下载源码
git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git
# 检查是否需要更新
git pull origin master
# 安装cmake-gui
sudo apt-get install cmake-qt-gui 
# 下载模型
cd models
./getModels.sh
cd ..
# 创建build文件
mkdir build

填写openpose源码目录以及build,点击Configure按钮, 选择Unix Makefile和use default native compling,点击finish按钮

sudo cmake-gui

在这里插入图片描述
完成后:在这里插入图片描述

这里我点了build caffe 因为我之前安装的时候,用的是我自己安装caffe的路径,但是后面报错了 ,根据github上面的解决办法,我的bug并没有调试成功,于是我就用了openpose自带3rdparty中的caffe编译,可以避免那条bug

然后点击Generate按钮,显示Generating done。
接下来在openpose文件夹下打开终端,执行:

cd build
make -j`nproc`

安装完成后,在openpose文件夹下执行:

./build/examples/openpose/openpose.bin --video examples/media/video.avi

4.2.安装过程中遇到的bug

4.2.1.运行时报错

./build/examples/openpose/openpose.bin --video examples/media/video.avi
Starting OpenPose demo...
Configuring OpenPose...
Starting thread(s)...
Auto-detecting all available GPUs... Detected 1 GPU(s), using 1 of them starting at GPU 0.
[libprotobuf ERROR google/protobuf/message_lite.cc:123] Can't parse message of type "caffe.NetParameter" because it is missing required fields: layer[0].clip_param.min, layer[0].clip_param.max
F1218 11:40:38.155475 12638 upgrade_proto.cpp:97] Check failed: ReadProtoFromBinaryFile(param_file, param) Failed to parse NetParameter file: models/pose/body_25/pose_iter_584000.caffemodel
*** Check failure stack trace: ***
    @     0x7f7395e885cd  google::LogMessage::Fail()
    @     0x7f7395e8a433  google::LogMessage::SendToLog()
    @     0x7f7395e8815b  google::LogMessage::Flush()
    @     0x7f7395e8ae1e  google::LogMessageFatal::~LogMessageFatal()
    @     0x7f7395a059a1  caffe::ReadNetParamsFromBinaryFileOrDie()
    @     0x7f7395a2feaa  caffe::Net<>::CopyTrainedLayersFromBinaryProto()
    @     0x7f73978ed5a7  op::NetCaffe::initializationOnThread()
    @     0x7f739794af4e  op::addCaffeNetOnThread()
    @     0x7f739794ba08  op::PoseExtractorCaffe::netInitializationOnThread()
    @     0x7f7397950080  op::PoseExtractorNet::initializationOnThread()
    @     0x7f73979476c1  op::PoseExtractor::initializationOnThread()
    @     0x7f7397942851  op::WPoseExtractor<>::initializationOnThread()
    @     0x7f739792a951  op::SubThread<>::initializationOnThread()
    @     0x7f739792fbd8  op::Thread<>::initializationOnThread()
    @     0x7f739792fddd  op::Thread<>::threadFunction()
    @     0x7f739724ac80  (unknown)
    @     0x7f739699c6ba  start_thread
    @     0x7f7396cb941d  clone
    @              (nil)  (unknown)
Aborted (core dumped)

参考:https://github.com/CMU-Perceptual-Computing-Lab/openpose/issues/939

这个bug就是上面我为什么要点 build caffe的原因

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值