相关链接

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编译运行相关推荐

  1. ubuntu下vscode使用cmake编译运行c++配置文件

    在gcc/g++能编译运行c++的情况下,使用cmake编译只需要修改以下两个文件. launch.json {// 使用 IntelliSense 了解相关属性. // 悬停以查看现有属性的描述./ ...

  2. Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法

    Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 最近由于老师要求要在Ubuntu下QT上进程多线程服务器的开发,虽然只是单纯的调用qt的network模块,但是为了避免麻烦,我 ...

  3. tfpose与openpose区别_人体姿态识别--Openpose+Tensorflow

    目的复现代码 完成视频中的人体姿态识别 复现过程 视频来源:https://www.youtube.com/watch?v=cMhWNGBW1Xg​www.youtube.com 视频动图 检测结果下 ...

  4. ubuntu java反编译,[原创]Ubuntu下简单配置反编译工具以及其开发环境

    0x0:前言 个人电脑重新换了下系统,Ubuntu14.04,刚好需要配置下android的反编译环境,这里简单记录一下,以供有需要的朋友参考. 其实最简单的,只需要apktool就可以了,不过有编码 ...

  5. linux boost 卸载,Ubuntu下boost库的编译安装步骤及卸载方法详解

    最近由于编译一个程序用到了C++的boost库,所以便安装了这个库.但是,其中遇到了一些小问题.所以记录下来,以供别人参考. 首先说一下我的环境:Ubuntu 12.04 32bit,  gcc 4. ...

  6. ubuntu下C编程,编译基础( 转)

    buntu下C编程,编译基础 C 编程中相关文件后缀 .a 静态库 (archive) .c C源代码(需要编译预处理) .h C源代码头文件 .i C源代码(不需编译预处理) .o 对象文件 .s ...

  7. Ubuntu下使用单目相机运行ORB SLAM2

    环境:Ubuntu16.04+ROS Kinetic+USB单目摄像头 虽然ORB SLAM2的官方说明中表示没有ROS也可以编译运行,但要实时的跑ORB SLAM2还是需要ROS平台的,所以之前没有 ...

  8. linux 网络管理器未运行怎么解决,Ubuntu下提示网络管理器未运行解决方法

    刚折腾修改主机名(hostname),不小心把主机名去掉了,发现不能上网了,提示网络管理器未运行.最终发现就是因为缺少主机名导致的,又摸索了一下,发现缺少主机名有如下几个特征: 1.开机有一屏不是下划 ...

  9. c 运行 java linux命令行参数,Linux下用命令行编译运行Java总结

    最近使用腾讯云的Cloud Studio写Java,只能使用命令行进行编译运行,趁此机会,学习一下Linux的一些常用命令.平时windows下IDE用习惯了,现在用命令行进行编译运行,发现其实问题还 ...

  10. Linux环境下用vim编写编译运行C/C++程序

    在Linux环境下编写编译运行C程序 首先在终端下输入命令进入编写 vim hello.c #include <stdio.h> int main() {printf("hell ...

最新文章

  1. HashedWheelTimer时间轮定时任务原理分析
  2. 舍选法抽样matlab,12 重要抽样法 | 统计计算
  3. Docker框架使用系列教程(五)容器间的链接
  4. 过滤请求绝技 — 布隆过滤器与布谷鸟过滤器
  5. linux git删除的文件怎么还原,从Git仓库中恢复已删除的分支、文件或丢失的commit...
  6. java配置运行环境和配置
  7. C#获取摄像头拍照显示图像
  8. 安卓简单天气预报app源码_七个个小众但实用的APP,效率翻倍~
  9. C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区...
  10. 信安教程第二版-第23章云计算安全需求分析与安全保护工程
  11. jdk,jre,jvm的区别以及联系
  12. MySQL索引,MySQL中索引的限制?
  13. 你们都会的防抖与节流
  14. 正则匹配emoji字符
  15. 拆书笔记27|孔夫子和机器人
  16. IP2188中文数据手册
  17. 【ECshop错误集锦】解决ECShop发送邮件提示:Error: need RCPT command
  18. 正点原子第四期环境搭建
  19. 轻博客只是大众喜新厌旧的产物
  20. 数字孪生与3D可视化

热门文章

  1. 关于JlinkV8在SEGGSE-JLINK驱动V6.0以上版本连接调试不了的解决方法
  2. 新版中日交流标准日本语多媒体版(全25CD)下载
  3. 360提高计算机运行速度,简单操作,360优化加速帮你优化电脑运行速度
  4. 定时任务cron表达式规则
  5. Navitas GaN IC 驱动 Vivo 可折叠手机
  6. 我们分析了5万多场英雄联盟比赛,教你如何轻松用Python预测胜负
  7. 关于killer网卡在linux 2.6.11版本以上的驱动安装
  8. java中this和this()区别
  9. 测试工程师必备技能之缺陷分析
  10. 虚拟机镜像文件高速下载方法之一