NTU RGB+D 120 划分训练集和测试集,生成标签文件。

NTU RGB+D 120 总共有120类和114,480个样本。大小约为262G。包括
RGB视频分辨率为1920x1080,

深度图和IR(红外)视频的分辨率均为512x424,

3D骨骼数据包含每帧25个人体关节的3D坐标。

每个数据集由三台Kinect V2摄像机同时捕获。

原文名称

NTU RGB+D 120: A Large-Scale Benchmark for 3D Human Activity Understanding

处理之后的效果如下图所示

 原文中的两种划分方式

在运行代码之前需要自己弄懂代码,修改对应文件的文件的目录。否则将自己的文件弄乱了很麻烦。

 Cross-Subject Evaluation 划分训练集和测试集

import os
import shutil  
# 我的开始目录为data/ntu_rgb_d/nturgbd_rgb_s001/nturgb+d_rgb
#data/ntu_rgb_d/nturgbd_rgb_s002/nturgb+d_rgb
#...
#data/ntu_rgb_d/nturgbd_rgb_s032/nturgb+d_rgb


dataset = 'test' #此处为划分出test数据集。划分出train数据集,只需修改为train再一次运行。
path = "data/ntu_rgb_d/" # 总的文件路径
nturgb = 'nturgb+d_rgb' 
dirs = os.listdir(path)
for file in dirs: #循环每一个目录中的每一个文件
    file_path = path + file + '/' + nturgb #到达具有视频的文件目录之下
    file = os.listdir(file_path)
    for video_id in file: #循环每一个每一个文件中的每一个视频名字
        person_id = int(video_id.split('P')[1][:3])
        # 以扩展名为名称的子文件夹
        person_id_training = [1, 2, 4, 5, 8, 9, 13, 14, 15, 16, 17, 18, 19, 25, 27, 28, 31, 34, 35, 38, 45, 46, 47, 49, 50, 52, 53, 54, 55, 56, 57, 58, 59, 70, 74, 78, 80, 81, 82, 83, 84, 85, 86, 89, 91, 92, 93, 94, 95, 97, 98, 100, 103]
        if dataset == 'train':
            person_id_to_keep = person_id_training
        else:
            person_id_to_keep = list(range(1, 107))
            person_id_to_keep = [p for p in person_id_to_keep if p not in person_id_training]
        
        if person_id in person_id_to_keep :
            folder_name = "data/NTU_RGB/" + dataset
            f = file_path + '/' + video_id
            # 如果不存在该目录,先创建,再移动文件
            if not os.path.exists(folder_name):
                os.makedirs(folder_name)
                shutil.move(f, folder_name)
            else:
                shutil.move(f, folder_name)

Cross-Subject Evaluation 生成标签文件

import os
import shutil 
path = "data/NTU_RGB/test/"
dirs = os.listdir(path)
train_videos = "data/NTU_RGB/test_videos.txt"
for video_id in dirs:   
    with open(train_videos, 'a+') as f:
        f.writelines(video_id + ' ')
    action_id = int(video_id.split('A')[1][:3]) - 1
    action_id = str(action_id)
    with open(train_videos, 'a+') as f:
        f.writelines(action_id + '\n')

Cross-Setup Evaluation划分训练集和测试集

import os
import shutil   
#划分为训练集和测试集
dataset = 'test'
path = "data/NTU_RGB_CS2/"
nturgb = 'nturgb+d_rgb'
dirs = os.listdir(path)
for file in dirs:
    file_path = path + file + '/' + nturgb
    file = os.listdir(file_path)
    for video_id in file:
        S_id = int(video_id.split('P')[1][:3])
        # 以扩展名为名称的子文件夹
        S_id_testing = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105]
        if dataset == 'test':
            S_id_to_keep = S_id_testing
        else:
            S_id_to_keep = list(range(1, 107))
            S_id_to_keep = [p for p in S_id_to_keep if p not in S_id_testing]
        
        if S_id in S_id_to_keep :
            folder_name = "data/NTU_RGB2/" + dataset
            f = file_path + '/' + video_id
            # 如果不存在该目录,先创建,再移动文件
            if not os.path.exists(folder_name):
                os.makedirs(folder_name)
            # 举例:这里的f为 1.png 等同于 ./1.png (因为是相对路径)
                shutil.move(f, folder_name)
            # 直接移动文件
            else:
                shutil.move(f, folder_name)

Cross-Setup Evaluation 以及生成标签文件

#生成标签文件  
path = "data/NTU_RGB2/train/"
dirs = os.listdir(path)
train_videos = "data/NTU_RGB2/train_videos.txt"
for video_id in dirs:   
    with open(train_videos, 'a+') as f:
        f.writelines(video_id + ' ')
    action_id = int(video_id.split('A')[1][:3]) - 1
    action_id = str(action_id)
    with open(train_videos, 'a+') as f:
        f.writelines(action_id + '\n')

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值