CMU开源:价值百万美元的多目标人体关键点实时检测

相关文章:开源|2017 CVPR(Oral Paper):多目标实时体态估测 项目开源

主要内容介绍:

OpenPose是一个利用OpenCVCaffe并以C++写成的开源库,用来实现多线程的多人关键点实时检测,作者包括Gines Hidalgo,Zhe Cao,Tomas Simon,Shih-En Wei,Hanbyul Joo以及Yaser Sheikh

即将加入(但是已经实现!)身体+手势+人脸估计展示:

尽管该库使用了Caffe,但是代码还是很容易向其他框架(如Tensorflow 或者Torch 等)中移植。如果你实现了任何这方面的代码,请发出合并请求我们会很乐意在该库中添加你的实现。

OpenPose对于自由的非商业用途的使用是免费的,同时也可以在这种情况下被重新发布。请查看证书了解详情。如果有商业用途请联系作者。

OpenPose库的主要功能性:

  • 多人15或18关键点身体位姿估计和渲染:

  • 多人2*21关键点手势估计和渲染(未来1-2月内开源!)

  • 多人70关键点人脸估计和渲染(未来2-3月内开源!)

  • 灵活并且易于配置的多线程模块。

  • 图像,视频以及网络相机读取器。

  • 能够以多种格式(JSON,XML,PNG,JPG,...)保存和加载结果。

  • 用于结果可视化的小型显示窗口以及GUI。

  • 所有这些功能性都封装进了一个易于使用的OpenPose Wrapper类中。

姿态估计的成果基于ECCV 2016样例"RealtimeMultiperson Pose Estimation",Zhe Cao,Tomas Simon,Shih-En Wei,Yaser Sheikh中的C++代码。完整的项目库包含MatlabPython版本,以及训练代码。

ECCV 2016姿态估计视频

如何安装:

安装步骤详见Github内的:doc/installation.md文件。

如何快速上手:

大部分用户用例不需要对该库有太深入的了解,这样的用户可能只能够使用Demo或者简单的OpenPoes封装。因此你大可不必太在意OpenPose库中的细节。

样例:

如果在你的用例中你只是想处理一个图像或视频又或者网络相机文件夹并显示或者存储位姿结果。

那么你不必在意OpenPose库的实现细节同时只要阅读doc/demo_overview.md文件中一页的内容就可以了。

OpenPose封装:

在你的用例中如果你打算读取某一特定的图像格式并且/或者添加某个特定的后处理函数并且/或者实现你自己的显示或存储功能。

(几乎可以)不用理会该库本身的实现,只要看一下examples/tutorial_wrapper/.中关于Wrapper的教程即可。

注意:你并不需要修改OpenPose源代码或者例程,这样你将来就能随时无需修改你的代码直接升级OpenPose库。你可以在examples/user_code/中创建你自定义的代码并在OpenPose文件夹下使用make all命令编译它。

OpenPose库:

在你的用例中如果你想要改变内部函数并且/或者扩展它的功能性。首先,请先看一眼样例以及OpenPose封装。其次,阅读以下两个小节:OpenPose概览和功能性扩展。

1.OpenPose概览:在doc/library_overview.md中学习关于我们库源码的基础。

2.功能性扩展:在doc/library_extend_functionality.md中学习如何扩展我们的库。

3.添加一个额外的模块:在doc/library_add_new_module.md中学习如何添加一个额外的模块。

Doxygen文档自动生成

你可以通过运行如下命令来生成文档。文档将会在此doc/doxygen/html/index.html生成。你只需要双击就可以打开它(你的默认浏览器会自动显示它)。

cd doc/doxygen doc_autogeneration.doxygen

如何输出:

1.输出格式

这里有两种可替换的方法用来存储身体各部位的位置信息(x,y,score)。标志write_pose使用OpenCVcv::FileStorage的默认格式存储(JSON,XMLYML)。然而,JSON格式只有OpenCV3.0以后的版本才支持。因此,标志位write_pose_json专门用来将人体位姿数据以自定义的JSON格式存储。这样一来,每一个JSON文件都有一个people对象数组,其中的每个对象都具有一个body_parts数组,该数组中包含了身体各部位的位置信息和检测置信度,其格式为x1,y1,c1,x2,y2,c2,...坐标xy可以被归一化至区间[0,1],[-1,1],[0,源尺寸],[0,输出尺寸],等等,这取决于标志位scale_mode。另外,c值是位于区间[0,1]的置信度。

至于身体部位关键点的顺序,无论是COCO18个身体部位)还是MPI15个身体部位),都是由头文件include/openpose/pose/poseParameters.hpp中的POSE_BODY_PART_MAPPING来描述的。拿COCO格式举例:

对于热点图的存储格式,并不是独立存储67张热点图(18个身体部位+背景+2*19PAF文件),而是将这些图垂直拼接起来形成一个巨大的(宽*热点图数量)*(高)矩阵。也就是说该库将热点图按列拼接起来。比如,向量[0,单个热点图宽]包含了第一张热点图,向量[单个热点图宽度+1,2*单个热点图宽]包含了第二章热点图,等等。要注意,有些显示工具在给定的尺寸下不能显示结果图像。然而,ChromeFirefox能够恰当地打开他们。

存储的顺序是身体部位+背景+PAF文件。其中的任何一类信息都可以用程序的标志位屏蔽掉。如果背景被屏蔽了,那么最终的图像将会是身体部位和PAF信息的组合。身体部位信息和背景遵从POSE_COCO_BODY_PARTSPOSE_MPI_BODY_PARTS中的顺序,同时PAF信息遵循头文件poseParameters.hppPOSE_BODY_PART_PAIRS指定的顺序。比如,对于COCO格式:

POSE_COCO_PAIRS {1,2, 1,5, 2,3, 3,4, 5,6, 6,7, 1,8, 8,9, 9,10, 1,11, 11,12, 12,13, 1,0, 0,14, 14,16, 0,15, 15,17, 2,16, 5,17};

其中每一个索引都是POSE_COCO_BODY_PARTS中相应身体部位的键值,比如0对应Neck,1对应RShould,诸如此类。

2.读取存储的结果

我们使用标准格式(JSON,XML,PNG,JPG,...)来存储结果,这样一来之后就有很多框架可以读取它们,但是你也可以直接在include/openpose/filestream.hpp上使用我们的函数。特别是使用loadData(针对JSON,XMLYML文件)和loadImage(针对例如PNG或者JPG这样的图像格式)将数据加载到cv::Mat格式中。

3.给我们发送反馈

对于研究目的,我们的库是开源的,同时我们也想要持续改善它!所以请让我们知道如果...

1.你发现了任何bug(在功能性或者速度方面)

2.你向某些类或者新的Worker子类中添加了某种功能性,我们可能会将其糅合进我们的库中

3.你知道如何提高速度或者让这个库的任何地方变得简洁

4.你有关于可能的功能性的需求

5.诸如此类

请在GibHub上评论或者发出合并请求!我们会尽快答复你!

4.自定义Caffe

我们仅仅修改了一些Caffe的汇编标志和一点点细节。你可以使用你自己的Caffe版本,下面是我们添加和修改的文件:

1.添加的文件:install_caffe.sh;以及Makefile.config.Ubuntu14.example,Makefile.config.Ubuntu16.example,Makefile.config.Ubuntu14_cuda_7.exampleMakefile.config.Ubuntu16_cuda_7.example(从Makefile.config.example中抽取)。基本上你必须使能cuDNN

2.修改的文件:在Makefile中搜索“#OpenPose:”来查找修改过的代码。总的来说我们添加了C++11标志来避免一些旧版机器上的问题。

3.可选项-删除Caffe文件:Makefile.config.example

4.最后,在你的Caffe版本上运行make all && make distribute命令并在./Makefile.config.UbuntuX.example(其中X1416,取决于你的Ubuntu版本)中修改Caffe目录空间的变量,设置CAFFE_DIR参数为Caffe文件夹中includelib所在的路径。

引用

如果这对你的研究有所帮助请在你的出版物中引用本文。

姿态估计:

论文地址:https://arxiv.org/abs/1611.08050

GitHub地址:https://github.com/CMU-Perceptual-Computing-Lab/openpose#output

热门文章推荐

资源|5本深度学习和10本机器学习书籍(免费下载)

热文|成人网站PornHub爬虫,一天可爬取500万以上的视频(附源码)

重磅|中国医疗机器人行业图谱:2家上市,12家获融资,近1/3的团队来自哈工大

重磅|这家只上了中小板的AI公司市值或将超万亿!!!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值