Multiple Cameras Fall Dataset (MCFD)
收藏B-MCFD 数据集概述
数据集简介
B-MCFD 是针对多摄像头跌倒数据集(MCFD)的一个以元数据为先的版本。它提供了修正后的元数据、明确的校准语义、可复现的默认清单文件,以及一组用于将原始视频转换为可用于研究的衍生资产的小型脚本。
数据集背景
原始 MCFD 技术报告发布于 2010 年,但其部分官方元数据存在错误。2025 年发布的后续修正解决了一些问题,但在将报告内容转化为代码时,某些表格的解释仍存在模糊之处。这导致了三个实际问题:印刷的元数据无法直接被机器读取;修正后的值分散在报告和勘误来源中;下游用户很容易在延迟、参考摄像头、片段边界和标签方面做出不一致的选择。B-MCFD 通过提供程序友好的元数据发布、明确的语义、来源说明以及用于常见数据准备任务的轻量级脚本来弥补这一差距。
数据集内容
- 修正的元数据:位于
data/metadata目录下。 - 默认校准清单:位于
data/manifests/aligned_manifest_clip16_stride4.csv。 - 独立脚本:位于
scripts目录下。 - 实现代码:位于
src/b_mcfd目录下。 - 文档:位于
docs目录下。
原始数据集
原始 MCFD 数据集可从 https://www.iro.umontreal.ca/~labimage/Dataset/ 下载。预期的原始布局结构如下:
dataset ├── chute01 │ ├── cam1.avi │ ├── cam2.avi │ ├── cam3.avi │ ├── cam4.avi │ ├── cam5.avi │ ├── cam6.avi │ ├── cam7.avi │ └── cam8.avi ├── chute02 │ ├── cam1.avi │ ├── cam2.avi │ ├── cam3.avi │ ├── cam4.avi │ ├── cam5.avi │ ├── cam6.avi │ ├── cam7.avi │ └── cam8.avi ...
核心依赖
该仓库设计为轻量级。不同任务需要不同的依赖项。
| 任务 | 所需依赖 | 备注 |
|---|---|---|
| 读取已提供的元数据和清单文件 | 仅需文本编辑器或 CSV/JSON 工具 | 仓库已包含修正后的元数据和默认清单。 |
运行 scripts/build_manifest.py |
Python 3.9+、torch、torchcodec |
用于视频探测、帧计数和有效性检查。 |
运行 scripts/export_segments.py |
Python 3.9+、opencv-python |
片段导出使用 OpenCV 进行探测和写入,避免在单个进程中混合使用 FFmpeg 运行时。 |
运行 scripts/build_cache.py |
Python 3.9+、torch、torchcodec |
根据清单构建可选的 .pt 剪辑缓存。 |
请注意,torchcodec 要求系统已安装 FFmpeg。
元数据目录
data/metadata 目录包含该仓库机器可读的核心内容。
segments_corrected.csv:在校准后的参考时间线上的修正片段标注。camera_delay_corrected.csv:修正后的每个场景、每个摄像头的帧延迟。camera_calibration_report.json:从技术报告中转录的摄像头校准值。splits_scenario_fixed.json:为方便基准测试提供的默认场景划分。PROVENANCE.md:解释每个元数据文件来源的说明。
更多细节请参阅:https://github.com/xiaoran007/B-MCFD/blob/main/docs/metadata-semantics.md
脚本与典型用法
从仓库根目录运行脚本。
1. 构建校准清单
当需要在共享的校准时间线上采样剪辑中心时使用此脚本。 bash python scripts/build_manifest.py --dataset-root /path/to/MCFD/dataset --output data/manifests/aligned_manifest_clip16_stride4.csv --clip-len 16 --stride 4 --path-mode relative
已提供的默认清单使用 clip_len=16、stride=4 以及相对路径(如 chute01/cam1.avi)。
更多细节请参阅:https://github.com/xiaoran007/B-MCFD/blob/main/docs/manifest-schema.md
2. 导出实际修剪后的片段视频
当需要将原始流中标注值对应的部分导出为实际视频文件时使用此脚本。 bash python scripts/export_segments.py --dataset-root /path/to/MCFD/dataset --output-dir artifacts/segments
可选场景过滤: bash python scripts/export_segments.py --dataset-root /path/to/MCFD/dataset --output-dir artifacts/segments --scenario-ids 1,2,3
导出过程会为每个场景、片段和摄像头生成一个修剪后的视频,同时附带 JSON 元数据旁文件和汇总 CSV 文件。
更多细节请参阅:https://github.com/xiaoran007/B-MCFD/blob/main/docs/segment-export.md
3. 构建可选的剪辑缓存
当需要为下游实验预解码张量时使用此脚本。 bash python scripts/build_cache.py --manifest data/manifests/aligned_manifest_clip16_stride4.csv --dataset-root /path/to/MCFD/dataset --cache-root artifacts/cache --clip-len 16 --workers 1
缓存步骤是可选的。许多工作流仅需要元数据文件或校准清单。但如果希望将该数据集集成到深度学习流水线中(例如 i3d),构建预解码剪辑的缓存可以节省时间并减少 I/O 开销。
对于使用现代 pytorch 的现代 GPU,可以使用 https://github.com/xiaoran007/Kinetics-i3d-for-modern-pytorch 以便于集成。
重要说明
- 预期的原始数据集布局是
chuteXX/camY.avi。 position_code是该仓库保留的主要报告标签。binary_fall_label = int(position_code in {2, 3})是为二元任务提供的便利标签。- 如果替换了
splits_scenario_fixed.json,需要重建任何依赖于它的衍生清单或缓存文件。
致谢与引用
B-MCFD 基于 Auvinet 及其合作者发布的原始 MCFD 数据集构建。如果在学术工作中使用此仓库,请引用原始数据集报告:
Auvinet, Edouard, Caroline Rougier, Jean Meunier, Alain St-Arnaud, and Jacqueline Rousseau. "Multiple cameras fall dataset." DIRO-Université de Montréal, Tech. Rep 1350 (2010): 24.




