基本配置 | 版本号 |
---|---|
CPU | Intel® Core™ i5-8400 CPU @ 2.80GHz × 6 |
GPU | GeForce RTX 2070 SUPER/PCIe/SSE2 |
OS | Ubuntu18.04 |
openjdk | 1.8.0_242 |
python | 3.6.9 |
gcc | 5.5 |
g++ | 8.4 |
opencv | 3.4.3 |
cmake | 3.17.2 |
protobuf | 3.0.0 |
hint:
见我的博客https://blog.csdn.net/weixin_43056275/article/details/106005112
见我的博客https://blog.csdn.net/weixin_43056275/article/details/105790929
因为我编译新版openpose时, 出现了has no member named ‘set-gpu-data’openpose.dir/core/arrayCpuGpu.cpp.o’ failed 此类错误, 看了官网谷歌百度都没解决. 于是安装编译了旧版的openpose. 最后成功!
下载地址
https://download.csdn.net/download/weixin_43056275/12402443
打开openpose-master/models
./getModels.sh
最好是提前先下载好, 虽然编译的时候也会自动下载, 但是网速不好会下载不完全, 导致编译失败, 我就因为这个问题看了别人错误的解决措施, 绕了一大圈弯路
如果你在终端下载速度慢, 可以网页下载并放到指定的文件下. coco比较大, 可以等需要用的时候再下载. 他们下载后放置的位置就是他们的网址后半段.
http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/coco/pose_iter_440000.caffemodel
http://posefs1.perception.cs.cmu.edu/OpenPose/models/face/pose_iter_116000.caffemodel
http://posefs1.perception.cs.cmu.edu/OpenPose/models/hand/pose_iter_102000.caffemodel
http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/mpi/pose_iter_160000.caffemodel
http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/body_25/pose_iter_584000.caffemodel
在openpose-master路径下
执行
mkdir build
cd build
cmake -DBUILD_CAFFE=OFF -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0 -DCaffe_INCLUDE_DIRS=/home/ying/usb/key_points/caffe_train-master/include -DCaffe_LIBS=/home/ying/usb/key_points/caffe_train-master/build/lib/libcaffe.so ..
make all -j`nproc`
关闭build caffe, 指定cuda和caffe的路径
视频测试
在openpose-master路径下
./build/examples/openpose/openpose.bin --video examples/media/video.avi
或者可以保存到本地
在openpose-master路径下
mkdir output
./build/examples/openpose/openpose.bin --video examples/media/video.avi --write_video output/result.avi --write_json output/ --display 0
图片测试:
mkdir output_image
./build/examples/openpose/openpose.bin --image_dir examples/media/ --face --hand --write_images output_image/ --display 0
./build/examples/openpose/openpose.bin --help可以查看有哪些命令
error详细内容:
ptxas /tmp/tmpxft_00002121_00000000-5_pyramidalLK.ptx, line 9; fatal : Unsupported .version 6.1; current version is ‘6.0’
ptxas fatal : Ptx assembly aborted due to errors
CMake Error at openpose_generated_pyramidalLK.cu.o.Release.cmake:279 (message):
Error generating file
/home/a421/YuWentao/huawei_fatigue_driving_detection/openpose/build/src/openpose/CMakeFiles/openpose.dir/tracking/./openpose_generated_pyramidalLK.cu.o
src/openpose/CMakeFiles/openpose.dir/build.make:112: recipe for target ‘src/openpose/CMakeFiles/openpose.dir/tracking/openpose_generated_pyramidalLK.cu.o’ failed
make[5]: *** [src/openpose/CMakeFiles/openpose.dir/tracking/openpose_generated_pyramidalLK.cu.o] Error 1
make[5]: *** Waiting for unfinished jobs…
CMake Error at openpose_generated_renderFace.cu.o.Release.cmake:279 (message):
Error generating file
/home/a421/YuWentao/huawei_fatigue_driving_detection/openpose/build/src/openpose/CMakeFiles/openpose.dir/face/./openpose_generated_renderFace.cu.o
src/openpose/CMakeFiles/openpose.dir/build.make:63: recipe for target ‘src/openpose/CMakeFiles/openpose.dir/face/openpose_generated_renderFace.cu.o’ failed
make[5]: *** [src/openpose/CMakeFiles/openpose.dir/face/openpose_generated_renderFace.cu.o] Error 1
CMake Error at openpose_generated_renderHand.cu.o.Release.cmake:279 (message):
Error generating file
/home/a421/YuWentao/huawei_fatigue_driving_detection/openpose/build/src/openpose/CMakeFiles/openpose.dir/hand/./openpose_generated_renderHand.cu.o
指定-DCUDA_TOOLKIT_ROOT_DIR时 不能使用默认的/usr/local/cuda, 需要加上版本号, 正确的应该是: -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0
在成功编译OpenPose后,测试时,报如下错误:
root@/openpose# ./build/examples/openpose/openpose.bin
Starting OpenPose demo…
Configuring OpenPose…
Starting thread(s)…
Desired webcam resolution 1280x720 could not being set. Final resolution: 640x480 in /home/a421/YuWentao/huawei_fatigue_driving_detection/openpose/src/openpose/producer/webcamReader.cpp:WebcamReader():36
Auto-detecting camera index… Detected and opened camera 0.
Auto-detecting all available GPUs… Detected 2 GPU(s), using 2 of them starting at GPU 0.
[libprotobuf ERROR google/protobuf/message_lite.cc:118] Can’t parse message of type “caffe.NetParameter” because it is missing required fields: layer[0].clip_param.min, layer[0].clip_param.max
F0224 20:12:24.419100 309 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: ***
@ 0x7f9caf6f60cd google::LogMessage::Fail()
@ 0x7f9caf6f7f33 google::LogMessage::SendToLog()
@ 0x7f9caf6f5c28 google::LogMessage::Flush()
@ 0x7f9caf6f8999 google::LogMessageFatal::~LogMessageFatal()
@ 0x7f9caf294d71 caffe::ReadNetParamsFromBinaryFileOrDie()
@ 0x7f9caf2742ba caffe::Net<>::CopyTrainedLayersFromBinaryProto()
@ 0x7f9cb15246c8 op::NetCaffe::initializationOnThread()
@ 0x7f9cb154066e op::addCaffeNetOnThread()
@ 0x7f9cb1541971 op::PoseExtractorCaffe::netInitializationOnThread()
@ 0x7f9cb15467f0 op::PoseExtractorNet::initializationOnThread()
@ 0x7f9cb153d281 op::PoseExtractor::initializationOnThread()
@ 0x7f9cb1537c91 op::WPoseExtractor<>::initializationOnThread()
@ 0x7f9cb1575b11 op::Worker<>::initializationOnThreadNoException()
@ 0x7f9cb1575c50 op::SubThread<>::initializationOnThread()
@ 0x7f9cb1578b68 op::Thread<>::initializationOnThread()
@ 0x7f9cb1578d6d op::Thread<>::threadFunction()
@ 0x7f9cb08878f0 (unknown)
@ 0x7f9caffa96db start_thread
@ 0x7f9cb02e288f clone
Aborted (core dumped)
caffe model下载不完全, 参考我上面的4.2手动下载model并放入指定目录.
完成编译后, 测试时出现
./build/examples/openpose/openpose.bin --video examples/media/video.avi的时候 出现 OpenCV(4.0.0) /home/ying/usb/Download2/opencv-4.0.0/modules/highgui/src/window_gtk.cpp:146: error: (-215:Assertion failed) dst.data == widget->original_image->data.ptr in function ‘cvImageWidgetSetImage’ .
原因是, opencv4.0版本过高, 卸载重新安装opencv3.4.3, 具体安装过程可参考我的另一个博客.
runtime library [libcublas.so.10.0] in /usr/local/cuda/lib64 may be hidden by files in: /usr/local/lib
/usr/bin/ld: cannot find -lcudart /usr/bin/ld: cannot find -lcurand /usr/bin/ld: cannot find -lcudnn
原因是之前安装opencv默认直接安装到/usr/local, 导致cmake访问了多个libcublas.so.10.0. 解决: 卸载干净opencv, 手动删除/usr/local/lib中没有删除干净的文件, 如下图.
删除/usr/local/share中的OpenCV, /usr/local/include中的opencv和opencv2.
重新下载编译opencv时, 注意一定要指定到一个空的文件夹, 并且必须要/usr/local下, 不然openpose找不到(就算指定opencv路径也找不到). 比如cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv343 … 指定到/usr/local/opencv343目录下.
has no member named ‘set-gpu-data’
openpose.dir/core/arrayCpuGpu.cpp.o’ failed
这是新版openpose的问题, 安装旧版本的openpose. 我上文有讲.
cmake-gui的时候出现.
Caffe not found. Either turn on the BUILD _CAFFE option or specify the path of Caffe includes and libs using -DCaffe_INCLUDE_DIRS and -DCaffe_LIBS.
这是因为cmake-gui出问题了, 我卸载了cmake-gui重新安装还是有这个问题. 于是我删除build, 使用cmake编译, 不使用cmake-gui就成功了.
如果还有什么不清楚的可以留言. 问题补充可以写在评论区.