CVML-TueAI/HMDB51
收藏Hugging Face2025-12-10 更新2025-12-20 收录
下载链接:
https://hf-mirror.com/datasets/CVML-TueAI/HMDB51
下载链接
链接失效反馈官方服务:
资源简介:
---
dataset_info:
features:
- name: video_path
dtype: string
- name: label
dtype: string
- name: subset
dtype: int64
splits:
- name: split1
num_bytes: 636609
num_examples: 6766
- name: split2
num_bytes: 636609
num_examples: 6766
- name: split3
num_bytes: 636609
num_examples: 6766
download_size: 351201
dataset_size: 1909827
configs:
- config_name: default
data_files:
- split: split1
path: data/split1-*
- split: split2
path: data/split2-*
- split: split3
path: data/split3-*
---
# 📘 HMDB51 Dataset (with Protocol Splits + Video Streaming Support)
This repository hosts the **HMDB51** human action recognition dataset in a format optimized for modern deep learning research.
It provides:
- Three official evaluation protocols (`split1`, `split2`, `split3`)
- JSONL metadata files containing action labels and train/test assignments
- Raw video files stored directly on HuggingFace Hub
- Optional **WebDataset** tar shards for high-performance streaming
---
## 📁 Folder Layout
```
HMDB51/
│
├── metadata_split1.jsonl
├── metadata_split2.jsonl
├── metadata_split3.jsonl
│
├── Videos/
│ ├── brush_hair/
│ ├── climb/
│ └── ... (all 51 classes)
│
└── webdataset/
├── 000000.tar
├── 000001.tar
└── ...
```
Each JSONL record:
```json
{
"video_path": "Videos/brush_hair/example.avi",
"label": "brush_hair",
"subset": 1
}
```
---
## 🔹 1. Load Metadata (HF-native)
```python
from datasets import load_dataset
ds = load_dataset("json", data_files="metadata_split2.jsonl")["train"]
train = ds.filter(lambda x: x["subset"] == 1)
test = ds.filter(lambda x: x["subset"] == 2)
```
---
## 🔹 2. Load a Video File
### Decord
```python
from decord import VideoReader
vr = VideoReader(train[0]["video_path"])
frame0 = vr[0]
```
### TorchVision
```python
from torchvision.io import read_video
video, audio, info = read_video(train[0]["video_path"])
```
---
## 🔹 3. WebDataset Version (Optional)
```python
import webdataset as wds, jsonlines
ids = [rec["video_path"] for rec in jsonlines.open("metadata_split2.jsonl") if rec["subset"]==1]
train_wds = wds.WebDataset("webdataset/*.tar").select(lambda s: s["__key__"] in ids)
```
---
## 🔹 4. PyTorch DataLoader Example
```python
from torch.utils.data import Dataset, DataLoader
from decord import VideoReader
class VideoDataset(Dataset):
def __init__(self, subset): self.subset = subset
def __getitem__(self, i):
item = self.subset[i]
vr = VideoReader(item["video_path"])
return vr.get_batch([0,8,16]), item["label"]
def __len__(self): return len(self.subset)
loader = DataLoader(VideoDataset(train), batch_size=4)
```
---
## 🔹 5. Protocol Files
```
metadata_split1.jsonl
metadata_split2.jsonl
metadata_split3.jsonl
```
Each matches the official HMDB51 evaluation protocol.
---
## 📚 Citation
```bibtex
@inproceedings{kuehne2011hmdb,
title={HMDB: a large video database for human motion recognition},
author={Kuehne, Hildegard and Jhuang, Hueihan and Garrote, Est{'\i}baliz and Poggio, Tomaso and Serre, Thomas},
booktitle={2011 International conference on computer vision},
pages={2556--2563},
year={2011},
organization={IEEE}
}
```
---
---
dataset_info:
特征:
- 名称: video_path
数据类型: string
- 名称: label
数据类型: string
- 名称: subset
数据类型: int64
数据划分:
- 名称: split1
字节大小: 636609
样本数量: 6766
- 名称: split2
字节大小: 636609
样本数量: 6766
- 名称: split3
字节大小: 636609
样本数量: 6766
下载总大小: 351201
数据集总占用大小: 1909827
配置项:
- 配置名称: default
数据文件:
- 划分: split1
路径: data/split1-*
- 划分: split2
路径: data/split2-*
- 划分: split3
路径: data/split3-*
---
# 📘 HMDB51 数据集(带官方划分协议 + 视频流式加载支持)
本仓库托管**HMDB51**人类动作识别数据集,采用适配现代深度学习研究的格式存储。其提供如下能力:
- 三套官方评估划分协议(`split1`、`split2`、`split3`)
- 包含动作标签与训练/测试分配信息的JSONL元数据文件
- 直接存储于HuggingFace Hub的原始视频文件
- 可选的WebDataset tar分块文件,用于高性能流式加载
## 📁 文件夹结构
HMDB51/
│
├── metadata_split1.jsonl
├── metadata_split2.jsonl
├── metadata_split3.jsonl
│
├── Videos/
│ ├── brush_hair/
│ ├── climb/
│ └── ... (共51个动作类别)
│
└── webdataset/
├── 000000.tar
├── 000001.tar
└── ...
每条JSONL记录格式如下:
json
{
"video_path": "Videos/brush_hair/example.avi",
"label": "brush_hair",
"subset": 1
}
## 🔹 1. 加载元数据(HuggingFace 原生接口)
python
from datasets import load_dataset
# 加载指定划分的元数据文件
ds = load_dataset("json", data_files="metadata_split2.jsonl")["train"]
# 筛选子集1作为训练集,子集2作为测试集
train = ds.filter(lambda x: x["subset"] == 1)
test = ds.filter(lambda x: x["subset"] == 2)
## 🔹 2. 加载视频文件
### Decord 视频读取库
python
from decord import VideoReader
# 读取首个训练样本的视频
vr = VideoReader(train[0]["video_path"])
# 获取第一帧图像
frame0 = vr[0]
### TorchVision 视频工具库
python
from torchvision.io import read_video
# 读取视频、音频与元信息
video, audio, info = read_video(train[0]["video_path"])
## 🔹 3. WebDataset 版本(可选)
python
import webdataset as wds, jsonlines
# 获取所有训练样本的视频路径
ids = [rec["video_path"] for rec in jsonlines.open("metadata_split2.jsonl") if rec["subset"]==1]
# 创建WebDataset数据集,仅保留训练样本
train_wds = wds.WebDataset("webdataset/*.tar").select(lambda s: s["__key__"] in ids)
## 🔹 4. PyTorch DataLoader 示例
python
from torch.utils.data import Dataset, DataLoader
from decord import VideoReader
# 自定义视频数据集类
class VideoDataset(Dataset):
def __init__(self, subset): self.subset = subset
def __getitem__(self, i):
item = self.subset[i]
vr = VideoReader(item["video_path"])
# 获取第0、8、16帧作为样本
return vr.get_batch([0,8,16]), item["label"]
def __len__(self): return len(self.subset)
# 创建数据加载器,批次大小为4
loader = DataLoader(VideoDataset(train), batch_size=4)
## 🔹 5. 划分协议文件
metadata_split1.jsonl
metadata_split2.jsonl
metadata_split3.jsonl
上述三个元数据文件均符合HMDB51官方评估协议要求。
## 📚 引用
bibtex
@inproceedings{kuehne2011hmdb,
title={HMDB:用于人类动作识别的大型视频数据库},
author={Kuehne, Hildegard 和 Jhuang, Hueihan 和 Garrote, Estíbaliz 和 Poggio, Tomaso 和 Serre, Thomas},
booktitle={2011年国际计算机视觉大会},
pages={2556--2563},
year={2011},
organization={IEEE}
}
提供机构:
CVML-TueAI搜集汇总
数据集介绍

背景与挑战
背景概述
HMDB51是一个用于人类动作识别的视频数据集,包含51个动作类别,总计约20,000个视频样本。该数据集提供了三个官方评估协议(split1、split2、split3),并支持视频流处理和多种加载方式(如Hugging Face Datasets、Decord、TorchVision),适用于深度学习模型训练和评估。
以上内容由遇见数据集搜集并总结生成



