ubuntu16.04  openpose编译安装

  • Post author:
  • Post category:其他


太感人了!历时三天终于把openpose编译成功了,(大哭~~



其实openpose安装本身并不难


,按照官方给的教程应该一个钟头就可以装完,这里给个中文贴参考。


安装中文参考贴:https://www.aiuai.cn/aifarm706.html

注意:强烈建议使用openpose团队在

Github

第三方库中给的自带caffe版本,否则容易出错。也就是在使用cmake-gui编译时,勾选BUILD_CAFFE选项,默认编译自带第三方库里的caffe。

本人安装时踩的坑在于:

电脑很久之前装过cuda7.5,后来卸载重新安装cuda9.0,然而

旧版本cuda并没有卸载完全

,导致使用cmake-gui编译时,cmake检测到的cuda版本为7.5,与opencv依赖的cuda版本(9.0)冲突。

当将7.5版本的所有库文件都删除,并将/usr/bin/nvcc文件中内容修改(参考上一篇

博客

),cmake检测到正确版本的cuda,然而编译时又提示opencv中的某个库依赖被删掉的cuda7.5库,吐血。

唔只能重新安装opencv,让opencv纯粹地只依赖cuda9.0。Cuda9.0环境下重新安装opencv3.3.0,安装过程中又踩了一些新坑,记录见这篇

博客

这里提示一下,

如果你的电脑里已经安装了caffe,那么你最好安装与之前相同版本的opencv,因为caffe是依赖opencv的

当然你也可以删掉caffe文件夹,重新安装caffe。caffe的安装可以参考这篇

博客

当下的一个不严谨,放过一个warning,未来的某一天它就有可能变成一个绊你的大坑。血泪教训!

整体电脑环境配置完成后,使用cmake-gui编译openpose。

1、勾选BUILD_CAFFE、BUILD_PYTHON选项,Configure,Generation。

2、关掉cmake-gui,输入命令:

cd build

cmake ..

make -j12   (根据cpu核数具体调整 )

3、到这里,如果100%没有报错的话,就是基本编译成功了。在openpose根目录下,输入命令,验证:

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

如图所示,即安装成功。

问题记录:

1、openpose/3rdparty/pybind11/include/pybind11/detail/common.h:112:20: fatal error: Python.h: 没有那个文件或目录

参考:

https://stackoverflow.com/questions/21530577/fatal-error-python-h-no-such-file-or-directory

解决办法:sudo apt-get install python3.6-dev  (根据自己python具体版本下载)

2、编译成功后,在输入命令验证时,出现以下错误:

./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

解决方法:使用openpose自带3rdparty中的caffe编译,可以避免这个问题。亲测。

以上,祝大家都能快速地成功编译openpose,省下更宝贵的时间学习算法。



版权声明:本文为CYummy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。