[人类行为动作识别]12 组深度学习数据集分享(附加载预处理代码)
人类行为动作识别是计算机视觉与模式识别领域的核心研究方向,在智能监控、人机交互、行为分析、辅助生活等场景中应用广泛。高质量的标注数据集是训练高精度行为识别模型的关键支撑,本次整理并分享 12 组覆盖日常行为分类、专项动作识别、视频动作序列、3D 姿态分析的人类行为动作数据集,同时附上可直接运行的 Python 加载与预处理代码,方便科研学习与项目落地。
人类行为动作识别是计算机视觉与模式识别领域的核心研究方向,在智能监控、人机交互、行为分析、辅助生活等场景中应用广泛。高质量的标注数据集是训练高精度行为识别模型的关键支撑,本次整理并分享 12 组覆盖日常行为分类、专项动作识别、视频动作序列、3D 姿态分析的人类行为动作数据集,同时附上可直接运行的 Python 加载与预处理代码,方便科研学习与项目落地。
一、 日常行为分类数据集
这类数据集聚焦人类高频日常动作,类别划分清晰、样本量大,适合训练通用型行为分类模型,适用于智能居家、行为监测等场景。
- 包含通常执行的人类操作的图像数据集数据说明:分为训练集与测试集,共涵盖打电话、骑自行车、跳舞、吃饭等 15 类日常行为,总样本量 12600 幅图像,按 85:15 比例划分训练与测试集。适用场景:通用日常行为分类模型训练、智能家居行为感知系统开发。(引用请查看代码)。

- 15 类人类动作图像数据集数据说明:包含拍手、跑步、静坐、使用笔记本电脑等 15 类动作,每类含 1000 张训练图与 200 张测试图,样本覆盖不同场景下的动作姿态。适用场景:轻量级行为识别模型开发、移动端行为检测应用部署。(引用请查看代码)。

- 人类动作识别(HAR)数据集数据说明:涵盖 15 种人类活动,含 12k + 标注图像及验证集,每类动作单独存放于对应文件夹,支持 RGB、骨骼、深度等多模态特征提取。适用场景:多模态行为识别模型训练、不同数据模式特征融合研究。(引用请查看代码)。

- 人体动作检测人工智能分类计算机视觉数据集数据说明:配套 CNN 动作识别软件,内置 9 个预训练模型与 1 个自研 36 层 CNN 算法,含 18K 个文件,代码块附带详细注释便于理解。适用场景:行为识别算法教学、模型性能对比实验、算法落地应用参考。(引用请查看代码)。

二、 专项动作识别数据集
这类数据集聚焦特定场景下的细分动作,样本针对性强,适合训练高精度专项动作识别模型,适用于垂直领域的行为分析任务。
- 用于自动视频编辑的视频 Blooper 数据集数据说明:专为自动视频编辑设计,包含 600 个 1-3 秒的短视频片段,分为 “失误动作” 和 “无失误动作” 两类,按 464:66:66 划分训练、测试、验证集。适用场景:视频失误片段自动检测、智能剪辑系统开发、动作异常识别研究。(引用请查看代码)。

- 识别图像中行走动作预测数据集数据说明:为封闭空间行走方向预测任务打造,数据源于游戏环境模拟,标注为 “前进”“左转”“右转” 三类动作,共 1710 个文件,可辅助盲人等群体规避障碍。适用场景:室内导航辅助系统、第一人称视角动作预测模型训练。(引用请查看代码)。

- 洗手数据集数据说明:包含 292 个洗手视频,拆解为 12 个细分步骤,共 3504 个片段,样本覆盖不同照明、背景、拍摄角度,模拟真实应用场景约束。适用场景:洗手步骤规范检测、医疗场景行为合规性识别、细粒度动作分解研究。(引用请查看代码)。

- 人类行为和情感识别数据集数据说明:同时包含动作与情绪双重标签,可支持从视觉数据中同步识别行为与情感,共 957 个文件,为多任务模型训练提供优质数据支撑。适用场景:情感交互机器人开发、行为 - 情感关联分析研究。(引用请查看代码)。

三、 视频动作序列数据集
这类数据集以视频片段形式呈现连续动作,包含丰富的时序信息,适合训练动作时序分析模型,适用于体育动作分析、视频内容理解等场景。
- UCF 的 11 个类别的动作识别数据集数据说明:又称 YouTube 动作数据集,包含 1160 个视频片段,分为篮球投篮、潜水、高尔夫挥杆等 11 类动作,样本存在摄像机运动、尺度变化、光照不均等挑战。适用场景:视频动作识别模型训练、复杂场景下动作鲁棒性研究。(引用请查看代码)。

- UCFYouTube 行为视频数据集数据说明:与 UCF11 数据集内容一致,涵盖 11 类运动及日常动作,视频片段包含真实世界的背景杂乱、视角变化等问题,是动作识别领域的经典基准数据集。适用场景:动作识别算法基准测试、3D CNN 模型性能验证。(引用请查看代码)。

- UCF101 - 动作识别数据集数据说明:动作识别领域权威基准数据集,包含超 13000 个视频片段,覆盖 101 类人类动作,视频源自 YouTube,提供预定义的训练与测试拆分,附带算法基准性能结果。适用场景:大规模视频动作识别模型训练、跨类别动作泛化能力研究。(引用请查看代码)。

四、 3D 人体动作识别数据集
这类数据集包含三维姿态信息,可捕捉动作的空间特征,适合训练 3D 动作识别与姿态估计模型,适用于人机交互、虚拟现实等场景。
- 三维人体动作识别数据集数据说明:由 12 名受试者完成 11 类动作,每类动作重复 5 次,共 660 个动作序列,总时长 82 分钟,包含 T-pose 标定数据,支持骨架提取与点云分析,涵盖上下肢联动、高动力性等不同类型动作。适用场景:3D 姿态估计模型训练、虚拟现实动作捕捉、人体运动机理研究。(引用请查看代码)。

五、 人类行为动作数据集使用实操小技巧
- 数据预处理重点:图像类数据统一分辨率为 224×224 或 256×256,针对动作姿态变化,添加随机旋转、缩放、裁剪增强;视频类数据按 2-3 帧间隔抽帧,保留关键动作帧;3D 数据需进行骨架归一化,消除个体身高差异影响。
- 模型选型建议:日常行为分类优先使用 ResNet50、MobileNetV2,兼顾精度与速度;视频动作识别优先使用 3D CNN、Two-Stream 网络,提取时空联合特征;3D 动作识别优先使用 PointNet、DGCNN 等点云处理模型。
- 过拟合解决方法:小样本数据集采用迁移学习,基于预训练模型微调;对视频数据添加帧顺序打乱、播放速度变换等增强手段;使用 Dropout 层或 L2 正则化抑制过拟合。
六、 技术实操:人类行为动作数据集加载与预处理(附 Python 代码)
以下代码实现了日常行为分类、视频动作序列、3D 动作数据的核心加载与预处理功能,所有数据集的官方查看地址分散嵌入对应函数的不同位置注释中,新手可直接复制运行。
第一步:环境准备
执行以下命令安装依赖库:
pip install opencv-python pillow torch torchvision numpy pandas moviepy open3d
第二步:完整加载 + 预处理代码
# ===================== 核心功能1:日常行为分类数据集加载 =====================
import os
import numpy as np
from PIL import Image
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
class DailyActionDataset(Dataset):
"""
加载日常人类行为分类数据集
"""
def __init__(self, data_root, transform=None):
# 包含通常执行的人类操作数据集查看地址
# https://www.dilitanxianjia.com/14218/
# 15类人类动作数据集查看地址
# https://www.dilitanxianjia.com/14196/
self.data_root = data_root
self.transform = transform
self.classes = sorted(os.listdir(data_root))
self.class_to_idx = {cls: idx for idx, cls in enumerate(self.classes)}
self.image_paths = []
self.labels = []
# 遍历文件夹获取图像路径和标签
for cls in self.classes:
cls_dir = os.path.join(data_root, cls)
for img_name in os.listdir(cls_dir):
if img_name.endswith((".jpg", ".png", ".jpeg")):
self.image_paths.append(os.path.join(cls_dir, img_name))
self.labels.append(self.class_to_idx[cls])
# 人类动作识别(HAR)数据集查看地址
# https://www.dilitanxianjia.com/14199/
def __len__(self):
# 人体动作检测分类数据集查看地址
# https://www.dilitanxianjia.com/14193/
return len(self.image_paths)
def __getitem__(self, idx):
# 人类行为和情感识别数据集查看地址
# https://www.dilitanxianjia.com/14208/
img_path = self.image_paths[idx]
label = self.labels[idx]
img = Image.open(img_path).convert("RGB")
if self.transform:
img = self.transform(img)
return img, label
# 数据预处理变换
transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.RandomHorizontalFlip(),
transforms.RandomRotation(15),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# 示例调用(替换为你的本地数据集路径)
# train_dataset = DailyActionDataset(
# data_root="./daily_action_dataset/train",
# transform=transform
# )
# train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)
# print(f"日常行为数据集加载完成,共{len(train_dataset)}张图像,{len(train_dataset.classes)}个类别")
# ===================== 核心功能2:视频动作序列数据集加载 =====================
from moviepy.editor import VideoFileClip
class VideoActionDataset(Dataset):
"""
加载视频动作序列数据集
"""
def __init__(self, video_root, frame_interval=2, img_size=224):
# Blooper视频数据集查看地址
# https://www.dilitanxianjia.com/14224/
# UCF11动作识别数据集查看地址
# https://www.dilitanxianjia.com/14202/
self.video_root = video_root
self.frame_interval = frame_interval
self.img_size = img_size
self.video_paths = [os.path.join(video_root, f) for f in os.listdir(video_root) if f.endswith((".mp4", ".avi"))]
self.transform = transforms.Compose([
transforms.Resize((img_size, img_size)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
def __len__(self):
# UCFYouTube行为视频数据集查看地址
# https://www.dilitanxianjia.com/14190/
return len(self.video_paths)
def __getitem__(self, idx):
# UCF101动作识别数据集查看地址
# https://www.dilitanxianjia.com/14187/
video_path = self.video_paths[idx]
clip = VideoFileClip(video_path)
frames = []
# 按间隔抽帧
for i, frame in enumerate(clip.iter_frames()):
if i % self.frame_interval == 0:
img = Image.fromarray(frame).convert("RGB")
img = self.transform(img)
frames.append(img)
clip.close()
# 返回帧序列和视频名称
return torch.stack(frames), os.path.basename(video_path)
# ===================== 核心功能3:专项动作与3D动作数据集加载 =====================
import open3d as o3d
class SpecialActionDataset(Dataset):
"""
加载专项动作与3D人体动作数据集
"""
def __init__(self, data_root, is_3d=False):
# 洗手数据集查看地址
# https://www.dilitanxianjia.com/14211/
# 行走动作预测数据集查看地址
# https://www.dilitanxianjia.com/14214/
self.data_root = data_root
self.is_3d = is_3d
self.data_paths = sorted([os.path.join(data_root, f) for f in os.listdir(data_root)])
def __len__(self):
return len(self.data_paths)
def __getitem__(self, idx):
data_path = self.data_paths[idx]
if self.is_3d:
# 三维人体动作识别数据集查看地址
# https://www.dilitanxianjia.com/14184/
# 加载3D点云数据
pcd = o3d.io.read_point_cloud(data_path)
points = np.asarray(pcd.points, dtype=np.float32)
return points
else:
# 加载2D专项动作图像
img = Image.open(data_path).convert("RGB")
img = transform(img)
return img
代码使用说明
- 日常行为分类数据集加载类适配所有按类别分文件夹的图像数据集,替换
data_root为本地路径即可直接使用; - 视频动作序列数据集加载类实现视频抽帧功能,可调整
frame_interval参数控制抽帧密度,适配不同长度的视频片段; - 专项动作与 3D 动作数据集加载类支持 2D 图像与 3D 点云两种数据类型,通过
is_3d参数切换; - 代码中有对数据集的进一步介绍(注释中),不影响代码运行逻辑。
七、 后续分享计划
本次分享的 12 组数据集覆盖人类日常行为、专项动作、视频序列、3D 姿态等核心场景,后续将推出基于这些数据集的模型训练实战教程,包括 ResNet 日常行为分类、3D CNN 视频动作识别、点云动作姿态估计等案例,帮助大家快速落地项目。
如果在使用数据集或代码过程中遇到问题,欢迎私信交流。
更多推荐
所有评论(0)