文档开发者中心
我的

【综合】姿态估计之 Human3.6M dataset

作者:HW-LC

在CV领域COCO数据集使用非常广泛,COCO官方也提供了COCO数据集的解析工具,支持Lua,Matlab和Python,我们常用的是Python版本,也就是pycocotools,具体链接如下:

但是如果单纯的做姿态估计,COCO数据集也有很明显的缺点,比如:场景复杂,单幅图片目标多,物体非中心分布,小目标也多(一般小目标只有bbox和segmentation,没有keypoints,而没有keypoints的annotation对姿态估计来说是无效数据)。

我的项目的工作场景一般常见于室内,物体中心分布,单幅图片目标一般不超过4人,最多不超过10人,对姿态识别的准确性和实时性要求很高,所以单纯的使用COCO数据集不能很好的满足项目需求,所以同事给我推荐的本文的主角:Human3.6 M dataset,官网链接如下:,这个数据集跟我项目的场景比较吻合:室内,物体中心分布,姿态标注准确,既然如此那就有必要来研究下这个比较冷门的数据集了。

首先当然是下载链数据集了,数据集一般包括:数据(图片)和标注,下载链接如下(Human3.6M应该有360W张图片和标注,这个网盘只有整个数据集的十分之一左右):,这个链接我没法访问,是请同事帮忙下载的,解压之后数据集文件结构如下:

lechao@Alien2:/Disk2T/H36M-images/images$ ls -l| head -n10

total 318360

-rw-rw-r-- 1 lechao lechao 214789536 12月 14 2016 annot_train.h5

-rw-rw-r-- 1 lechao lechao 75592688 12月 14 2016 annot_val.h5

drwxrwxr-x 2 lechao lechao 20480 8月 9 19:25 s_01_act_02_subact_01_ca_01

drwxrwxr-x 2 lechao lechao 20480 8月 9 19:25 s_01_act_02_subact_01_ca_02

drwxrwxr-x 2 lechao lechao 20480 8月 9 19:25 s_01_act_02_subact_01_ca_03

drwxrwxr-x 2 lechao lechao 20480 8月 9 19:25 s_01_act_02_subact_01_ca_04

drwxrwxr-x 2 lechao lechao 24576 8月 9 19:25 s_01_act_02_subact_02_ca_01

drwxrwxr-x 2 lechao lechao 24576 8月 9 19:25 s_01_act_02_subact_02_ca_02

drwxrwxr-x 2 lechao lechao 24576 8月 9 19:25 s_01_act_02_subact_02_ca_03

这里没截完整,但是大致能看出来如下信息:

annot_train.h5:这个是train annotation file,h5是HDF5格式文件的后缀,在python中使用h5py包可以读取此文件,关于h5py的用法可以自行百度,这里不再赘述。

annot_val.h5:这个是evaluate annotation file。

s_01_act_02_subact_01_ca_01:这个是包含数据的文件夹,这些文件夹命名比较规整,其实是有规律的,这个后面再讲。

可以使用如下方法打印标注文件里面的属性:

with h5py.File(args.trainfile, 'r') as f:

key_list = list(f.keys())

print('train key list:', key_list)

打印结果如下:train key list: ['action', 'bbox', 'camera', 'id', 'joint_2d', 'joint_3d_mono', 'subaction', 'subject'],可以看到标注文件中有这些属性,这些属性在官网有些解释,不过不是解释的很模糊,一般人看了也是一脸懵逼,所以我还是有必要再解释下:

action:就是场景(scenarios),官网说的比较明白,总共有15个场景:directions,discussion,eating等等,编号02 ~ 16(我也没搞懂为啥不是从00或者01开始)。

bbox:boundary box,这个很明显了,是给object detection用的,我们项目是姿态估计,用不上这个属性。

camera:摄像机编号,这个官网有介绍,整个Human3.6M是用四个摄像机拍摄而成,摄像机位于场景的四个角落。

id:这个应该是annotation id。

joint_2d:person keypoints,也是我们姿态估计需要用到的关键信息。

joint_3d_mono:目标的3D信息,这个其实是Human3.6M的特色,为数不多的提供3D数据的数据集,不过我们工程用不上。

subaction:action的子动作,比如direction(id为02)这个动作,每个person做两次(id分别是01和02),就有了不同的subaction。

subject:person,官网上有说明,整个Human3.6M数据集使用了11个person(6 male和5 female),person的BMI从17到29(增加数据的多样性),7个用来训练和验证,4个用来测试。

bbox,joint_3d_mono等属性我们姿态检测完全用不到,所以不需要关注。

action,camera,subaction,subject,id等属性我们会用到,具体用法是我们需要根据这五个属性组合出annotation对应的image文件(要不然模型咋知道这个标注是对应哪个文件的呢?),比如我们打印一个annotation的这些信息:

action[0]: 2

camera[0]: 1

id[0]: 1

subaction[0]: 1

subject[0]: 1

subject 1可以解析出s_01,action 2可以解析出act_02,subaction 1可以解析出subact_01,camera 1可以解析出ca_01,组合起来就得到了annotation对应的image文件的文件夹:s_01_act_02_subact_01_ca_01,id 1可以解析出0000001,继续组合可以得到image文件的文件名:s_01_act_02_subact_01_ca_01_000001.jpg,这样就得到了annotation对应的image文件的绝对路径:s_01_act_02_subact_01_ca_01/ s_01_act_02_subact_01_ca_01_000001.jpg。

剩下就是最重要的joint_2d属性了,这个属性的值我们也打印一个看看:

joint_2d[0]: [[137.13937378 203.28787231]

[122.1421051 151.10655212]

[134.17036438 104.0575943 ]

[102.84673309 100.52474976]

[108.69631958 154.72946167]

[115.01844788 209.65567017]

[118.64239502 102.30228424]

[126.88787079 75.29245758]

[122.8181839 42.86528397]

[125.51329803 18.51787758]

[142.40003967 108.83320618]

[145.15391541 84.32307434]

[138.22865295 52.01548004]

[107.46088409 53.87348557]

[ 93.84050751 85.6969986 ]

[ 84.14053345 106.81880951]]

标准的16个[x, y]坐标点,比COCO数据集少一个,由于Human3.6M数据集场景状况十分良好,所以16个特征点是全标注的,不存在未标注和遮挡等情况。

有了标注的2D keypoints信息和标注对应的image文件,我们可以把对应的keypoint画出来看看:


最后放一张Human3.6M数据集的关节点图:

点赞
1
收藏
回复
16
分享
举报
浏览4271 发布于2019-11-25 05:50未知归属地
全部评论
最多点赞
最新发布
最早发布
楼主你好,请问可以给个下载的链接吗?多谢了!
16楼回复于2022-09-26 01:49 未知归属地

不错的文章

15楼回复于2019-11-25 08:54 未知归属地

怒赞一个

14楼回复于2019-11-25 08:47 未知归属地

好帖子必须顶上去

13楼回复于2019-11-25 08:43 未知归属地

转走了,希望更多开发者看到这样好的文章

12楼回复于2019-11-25 07:43 未知归属地

这么优秀必须点赞

11楼回复于2019-11-25 07:43 未知归属地

我转走了,感谢啦

10楼回复于2019-11-25 07:17 未知归属地

这位老师的系列文章都很不错呢,值得推荐

9楼回复于2019-11-25 07:17 未知归属地

作者其他帖子:姿态估计之 Human3.6M dataset

8楼回复于2019-11-25 05:55 未知归属地

作者其他帖子:CNN参数量评估

7楼回复于2019-11-25 05:55 未知归属地
共2页
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。