ubuntu下人体姿态识别OpenPose编译运行
相关链接:
1、项目gayhub:https://github.com/CMU-Perceptual-Computing-Lab/openpose
2、官方BVLC版本Caffe:https://github.com/BVLC/caffe
3、openpose指定的CMU版本Caffe:https://github.com/CMU-Perceptual-Computing-Lab/caffe
4、openpose的ros项目包:https://github.com/firephinx/openpose_ros
5、电脑环境配置:9代i5+1660Ti、ubuntu18.04、nvidia418.74、cuda10.0.130、anaconda 4.3.0、tensorflow-gpu 1.13.1、opencv3.4.1、ros-melodic(后来觉得,好像可以不用anaconda)
- Ubuntu18.04 安装nvidia驱动、cuda、cudnn、tensorflow(GPU版)
- Ubuntu、Anaconda下编译opencv和opencv_contrib(with cuda)
- Anaconda和ROS联合使用
6、openpose速度优化:https://www.aiuai.cn/aifarm715.html
一、前提:caffe
1、依赖库
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
# Python libs
sudo -H pip install --upgrade numpy protobuf
2、caffe编译及测试
我先用的caffe是BVLC官方版本https://github.com/BVLC/caffe,编译过程略。
编译前记得修改Makefile.config文件,最后对caffe进行测试,能用
muxi@muxi-Z2-Air:~/caffe$ sudo make runtest #caffe测试通过
注意:与caffe相关的两种openpose编译方式
参考https://blog.csdn.net/qq_33764934/article/details/103406443 openpose 的编译需要caffe,若caffe未单独编译过则down下来解压放于openpose/3rdparty/caffe。openpose它编译时本身默认cmake的参数 BUILD_CAFFE 就是 ON,会编译openpose/3rdparty/caffe路径中的caffe,即下参数的第一种:联合caffe编译。
联合caffe编译
#第一种,联合caffe编译:caffe未单独编译过,需要down下来解压放于openpose/3rdparty/caffe cmake -DOpenCV_CONFIG_FILE=/home/muxi/opencv_cuda_anacondabase/opencv-3.4.1/build/OpenCVConfig.cmake -DPROFILER_ENABLED=ON -DBUILD_PYTHON=ON WITH_OPENCV_WITH_OPENGL ..
- link外部caffe编译
#第二种,link外部caffe编译:caffe放在其他路径单独编译过 cmake -DOpenCV_CONFIG_FILE=/home/muxi/opencv_cuda_anacondabase/opencv-3.4.1/build/OpenCVConfig.cmake -DCaffe_INCLUDE_DIRS="/home/muxi/caffe/include;/home/muxi/caffe/build/include" -DCaffe_LIBS=/home/muxi/caffe/build/lib/libcaffe.so -DBUILD_CAFFE=OFF -DPROFILER_ENABLED=ON -DBUILD_PYTHON=ON WITH_OPENCV_WITH_OPENGL ..
cmake的参数通过cmake-gui编译更方便,但是我下载不了有问题,于是就直接将参数写入cmake命令中,对openpose进行无cmake-gui图形界面的cmake。
二、openpose的编译
考虑到官方文档openpose/doc/prerequisites.md里的警告“Anaconda should not be installed on your system. Anaconda includes a Protobuf version that is incompatible with Caffe. Either you uninstall anaconda and install protobuf via apt-get, or you compile your own Caffe and link it to OpenPose.” 说若已安装anaconda,在编译openpose时需要单独link外部编译好的caffe。于是看到这里,考虑用link外部caffe编译吧。
1、link外部caffe编译
重新clone个openpose
##下载openpose
muxi@muxi-Z2-Air:~/gesture_recognition/October$ git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git
#下载指定caffe
#muxi@muxi-Z2-Air:~/gesture_recognition/October/openpose/3rdparty$ git clone https://github.com/CMU-Perceptual-Computing-Lab/caffe
编译时需要将~/caffe里原先编译好的caffe链接进来,也就是用cmake命令的第二种:link外部caffe编译
#编译
muxi@muxi-Z2-Air:~/gesture_recognition/October/openpose/build$ cmake -DOpenCV_CONFIG_FILE=/home/muxi/opencv_cuda_anacondabase/opencv-3.4.1/build/OpenCVConfig.cmake -DCaffe_INCLUDE_DIRS="/home/muxi/caffe/include;/home/muxi/caffe/build/include" -DCaffe_LIBS=/home/muxi/caffe/build/lib/libcaffe.so -DBUILD_CAFFE=OFF -DPROFILER_ENABLED=ON -DBUILD_PYTHON=ON ..muxi@muxi-Z2-Air:~/gesture_recognition/October/openpose/build$ make -j`nproc`muxi@muxi-Z2-Air:~/gesture_recognition/October/openpose/build$ sudo make install
#运行测试
muxi@muxi-Z2-Air:~/gesture_recognition/October/openpose$ ./build/examples/openpose/openpose.bin --model_pose BODY_25 --render_pose 1 --net_resolution "800x320" --number_people_max 1
编译正常,运行报错 [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
参考https://blog.csdn.net/blgpb/article/details/87925768 说caffe不能是caffe官方提供的caffe(https://github.com/BVLC/caffe),需要OpenPose官方支持的版本(https://github.com/CMU-Perceptual-Computing-Lab/caffe)
2、联合caffe编译
还是换成联合caffe编译吧!不必删除系统中原有的Caffe安装此Caffe版本,可以直接在编译OpenPose时开启BUILD_CAFFE=ON功能。于是,下载caffe到openpose/3rdparty,用第一种联合caffe编译来cmake,openpose的例程能成功,但帧数真低,更别提移植在无GPU的NUC上,够呛啊。
三、ROS上的openpose姿态识别
1、ros环境搭建
本电脑跑通了,不过要部署实际项目需要ros,先建立ros的workspace(土老冒的我还是用的ros1)。
anaconda和ros共存是个坑啊,我安装anaconda环境后ros就用不了了,后来重装ros了,参考Anaconda和ROS联合使用
#建立ros的workspace
mkdir -p catkin_openpose/src
cd catkin_openpose/src
catkin_init_workspace #生成catkin_openpose/src/CMakeList.txt
cd ..
catkin_make #编译生成catkin_openpose/build/和catkin_openpose/devel/
#创建功能包
#cd src
#catkin_create_pkg bagname std_msgs roscpp rospy #后面仨是包的依赖
2、openpose_ros包的下载
官方给出俩ROS examples。
- https://github.com/ravijo/ros_openpose
- https://github.com/firephinx/openpose_ros
先试star最多的第2个包,come on试试就逝世:
muxi@muxi-Z2-Air:~/gesture_recognition/catkin_openpose/src$ git clone https://github.com/firephinx/openpose_ros.git
clone下来是以下两个包,这俩包要直接放到catkin_openpose/src路径里。
3、openpose_ros包编译
在openpose_ros/src/openpose_flags.cpp里修改openpose的路径为之前编译好的openpose的路径为~/gesture_recognition/October/openpose/models/如下:
DEFINE_string(model_folder, "~/gesture_recognition/October/openpose/models/", "Folder path (absolute or relative) where the models (pose, face, ...) are located.");
输入openpose的图像的话题名是/camera/image,可以在openpose_ros/launch/openpose_ros.launch中修改。
muxi@muxi-Z2-Air:~/gesture_recognition/catkin_openpose$ catkin_make
4、openpose_ros运行及报错
ros包编译成功后,运行
rosrun openpose_ros openpose_ros_node
会报错 /home/muxi/gesture_recognition/catkin_openpose/devel/lib/openpose_ros/openpose_ros_node: error while loading shared libraries: libcaffe.so.1.0.0: cannot open shared object file: No such file or directory
原因可能是:link外部caffe编译出错后,换成联合caffe编译了,忽视了第二步警告(已安装anaconda,在编译openpose时需要单独link外部编译好的caffe),即使联合caffe编译openpose后demo也能跑通。
预计解决方式:仍然该使用link外部caffe的方式编译openpose,而不是联合caffe编译。可试试不链接caffe官方版本,而是外部链接编译好的CMU版本的caffe,来编译openpose。
openpose帧数太低了,考虑实际工程算力,换个姿态识别项目吧。
ubuntu下人体姿态识别OpenPose编译运行相关推荐
- ubuntu下vscode使用cmake编译运行c++配置文件
在gcc/g++能编译运行c++的情况下,使用cmake编译只需要修改以下两个文件. launch.json {// 使用 IntelliSense 了解相关属性. // 悬停以查看现有属性的描述./ ...
- Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法
Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 最近由于老师要求要在Ubuntu下QT上进程多线程服务器的开发,虽然只是单纯的调用qt的network模块,但是为了避免麻烦,我 ...
- tfpose与openpose区别_人体姿态识别--Openpose+Tensorflow
目的复现代码 完成视频中的人体姿态识别 复现过程 视频来源:https://www.youtube.com/watch?v=cMhWNGBW1Xgwww.youtube.com 视频动图 检测结果下 ...
- ubuntu java反编译,[原创]Ubuntu下简单配置反编译工具以及其开发环境
0x0:前言 个人电脑重新换了下系统,Ubuntu14.04,刚好需要配置下android的反编译环境,这里简单记录一下,以供有需要的朋友参考. 其实最简单的,只需要apktool就可以了,不过有编码 ...
- linux boost 卸载,Ubuntu下boost库的编译安装步骤及卸载方法详解
最近由于编译一个程序用到了C++的boost库,所以便安装了这个库.但是,其中遇到了一些小问题.所以记录下来,以供别人参考. 首先说一下我的环境:Ubuntu 12.04 32bit, gcc 4. ...
- ubuntu下C编程,编译基础( 转)
buntu下C编程,编译基础 C 编程中相关文件后缀 .a 静态库 (archive) .c C源代码(需要编译预处理) .h C源代码头文件 .i C源代码(不需编译预处理) .o 对象文件 .s ...
- Ubuntu下使用单目相机运行ORB SLAM2
环境:Ubuntu16.04+ROS Kinetic+USB单目摄像头 虽然ORB SLAM2的官方说明中表示没有ROS也可以编译运行,但要实时的跑ORB SLAM2还是需要ROS平台的,所以之前没有 ...
- linux 网络管理器未运行怎么解决,Ubuntu下提示网络管理器未运行解决方法
刚折腾修改主机名(hostname),不小心把主机名去掉了,发现不能上网了,提示网络管理器未运行.最终发现就是因为缺少主机名导致的,又摸索了一下,发现缺少主机名有如下几个特征: 1.开机有一屏不是下划 ...
- c 运行 java linux命令行参数,Linux下用命令行编译运行Java总结
最近使用腾讯云的Cloud Studio写Java,只能使用命令行进行编译运行,趁此机会,学习一下Linux的一些常用命令.平时windows下IDE用习惯了,现在用命令行进行编译运行,发现其实问题还 ...
- Linux环境下用vim编写编译运行C/C++程序
在Linux环境下编写编译运行C程序 首先在终端下输入命令进入编写 vim hello.c #include <stdio.h> int main() {printf("hell ...
最新文章
- HashedWheelTimer时间轮定时任务原理分析
- 舍选法抽样matlab,12 重要抽样法 | 统计计算
- Docker框架使用系列教程(五)容器间的链接
- 过滤请求绝技 — 布隆过滤器与布谷鸟过滤器
- linux git删除的文件怎么还原,从Git仓库中恢复已删除的分支、文件或丢失的commit...
- java配置运行环境和配置
- C#获取摄像头拍照显示图像
- 安卓简单天气预报app源码_七个个小众但实用的APP,效率翻倍~
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区...
- 信安教程第二版-第23章云计算安全需求分析与安全保护工程
- jdk,jre,jvm的区别以及联系
- MySQL索引,MySQL中索引的限制?
- 你们都会的防抖与节流
- 正则匹配emoji字符
- 拆书笔记27|孔夫子和机器人
- IP2188中文数据手册
- 【ECshop错误集锦】解决ECShop发送邮件提示:Error: need RCPT command
- 正点原子第四期环境搭建
- 轻博客只是大众喜新厌旧的产物
- 数字孪生与3D可视化
热门文章
- 关于JlinkV8在SEGGSE-JLINK驱动V6.0以上版本连接调试不了的解决方法
- 新版中日交流标准日本语多媒体版(全25CD)下载
- 360提高计算机运行速度,简单操作,360优化加速帮你优化电脑运行速度
- 定时任务cron表达式规则
- Navitas GaN IC 驱动 Vivo 可折叠手机
- 我们分析了5万多场英雄联盟比赛,教你如何轻松用Python预测胜负
- 关于killer网卡在linux 2.6.11版本以上的驱动安装
- java中this和this()区别
- 测试工程师必备技能之缺陷分析
- 虚拟机镜像文件高速下载方法之一