Wholebody 3D keypoint估计:从H3WB开始



前言

这份工作是首次尝试去检测3D全人体姿态的工作.我们使用的数据集是基于Human3.6M的3D全人体关键点数据集.


一、H3WB

H3WB: Human3.6M 3D WholeBody Dataset and Benchmark
它是一个大规模的3D全人体姿态估计数据集.他是Human3.6M的一个扩展,包含133个关键点,其骨架展开与COCO whole body一样.
在这里插入图片描述

1.下载

原始的图片可以从Human3.6M官网下载:
Link:Human3.6M

注意:进入官网,需要申请一个帐号登录,才能下载里面的内容.这里,我们进入:Download->Training Data->By subject,将所有列举的Videos下载.
每个Subject的视频都比较长,6-11G的大小,慢慢下载.

参看H3WB的官网,提供来脚本,来处理Human3.6m视频,建立图片到对应标注的连接.

script代码如下(示例):

import cv2
import os

def convert_mp4_to_image(inpath, outpath, each_x_frame=1):
    print("load "+inpath)
    vidcap = cv2.VideoCapture(inpath)
    success, image = vidcap.read()
    count = 0
    while success:
        if count % each_x_frame == 0:
            cv2.imwrite(outpath+str(count).zfill(4)+".jpg", image)  # save frame as JPEG file
        success, image = vidcap.read()
        if success:
            count += 1
            if count % 100 == 0:
                print('Finish frame: ', count)
                # time.sleep(1)
    print("Finish all ", count, " images")


def convert_h36m_mp4_to_image(base_path, each_x_frame=1):
    subjects = ['S1', 'S5', 'S6', 'S7', 'S8']
    # subjects = ['S1', 'S5', 'S6', 'S7', 'S8', 'S9', 'S11']
    for subject in subjects:
        inpath_base = base_path+subject+"/Videos"
        outpath_base = base_path+subject+"/Images"
        if not os.path.exists(outpath_base):
            os.makedirs(outpath_base)
        videos = os.listdir(inpath_base)
        for video in videos:
            inpath = inpath_base + "/" + video
            outpath = outpath_base + "/" + video[:-4]
            if not os.path.exists(outpath):
                os.makedirs(outpath)
            outpath = outpath + "/frame_"
            convert_mp4_to_image(inpath, outpath, each_x_frame)

if __name__ == "__main__":
    path = "./"
    convert_h36m_mp4_to_image(path+'Human36m/')

对应的标注下载链接如下:
H3WB annotations
并且默认放在datasets/json/文件夹下

2.标注格式

每个json文件参考以下的格式,但不是每个json都包含这所有值.
Json结构(示例):

XXX.json --- sample id --- 'image_path'
                        |
                        -- 'bbox' --- 'x_min'
                        |          |- 'y_min'
                        |          |- 'x_max'
                        |          |- 'y_max'
                        |
                        |- 'keypont_2d' --- joint id --- 'x'
                        |                             |- 'y'
                        |
                        |- 'keypont_3d' --- joint id --- 'x'
                                                      |- 'y'
                                                      |- 'z'
                        

作者同样提供处理Json文件的脚本,详情:json_loader

3.任务分析

我们要做的端到端的3D全人体姿态估计,即给定一张GRB图片,就能给出图片中的人体3D全姿态。官网也给了分析流程:
1、使用RGBto3D_train.json用于训练和验证。它包含了80K图片路径,边界框和2D关键点。
2、它包含有与2Dto3D_train.json相同的样本,因此也可以访问2D关键点,如果有必要的话。
3、使用RGBto3D_test_img.json用于在排行榜上进行测试。它包含20K图片路径和边界框。此测试集的图片id打乱了。

验证

作者没有提供验证集,但建议采用5-fold的交叉验证去得到均值和标准差。

评估

可以将预测的3D全人体结果保存为“XXto3D_pred.json”,并提供一个可下载的链接到此邮箱:[email protected]
with subject Test set evaluation request。样式文件可以参考以下链接:
json_test_samples


总结

这就是H3WB的调查现状,更多细节可以参考:benchmark.md

猜你喜欢

转载自blog.csdn.net/wqthaha/article/details/131649273
今日推荐