资讯详情

FiftyOne 加载 UCF101 视频动作识别数据集:下载、split 划分与 App 可视化实战

📅 2026/9/15 13:05:34 | 华诺云谱 👁 阅读
FiftyOne 加载 UCF101 视频动作识别数据集:下载、split 划分与 App 可视化实战
FiftyOne 加载 UCF101 视频动作识别数据集下载、split 划分与 App 可视化实战【免费下载链接】fiftyoneRefine high-quality datasets and visual AI models项目地址: https://gitcode.com/GitHub_Trending/fi/fiftyone导读UCF101 是动作识别领域最经典的真实场景视频数据集之一本文基于 FiftyOne 仓库中的 数据集文档完整讲解如何在 FiftyOne 中通过 Zoo API 加载该数据集、如何理解其train/testsplit 与fold机制、如何借助 FFmpeg 将原始视频重编码为 App 可直接播放的 H.264 MP4以及如何用 CLI 完成同样的操作。读完本文你将掌握foz.load_zoo_dataset(ucf101)从下载到可视化的完整链路并了解其底层实现fiftyone/utils/ucf101.py 与 ZooDataset 实现。FiftyOne App 中以网格方式浏览 UCF101 test split 的 25 个视频样本缩略图下方的蓝色标签为各样本的动作类别如 FieldHockeyPenalty、GolfSwing、BenchPress 等。数据集概览UCF101 是一个从 YouTube 收集的真实动作识别视频数据集包含101 个动作类别、13,320 段视频。它是 UCF5050 类的扩展版本其核心价值在于真实二字与许多由演员摆拍、场景受控的动作识别数据集不同UCF101 的视频在相机运动、物体外观与姿态、物体尺度、视角、杂乱背景、光照条件等方面都存在巨大变化因此是动作识别研究中公认最具挑战性的基准之一。在数据组织上101 个动作类别的视频被划分为25 个 group每个 group 由同一动作的 47 段视频组成。同一 group 内的视频可能共享某些特征如相似的背景、相似的视角这正是官方训练/测试划分splits的设计基础——保证评测时模型看到的是未见过的 group。数据集关键信息根据 ucf101.rst 与 UCF101Dataset 类定义该数据集在 FiftyOne 中的元信息如下项目值数据集名称nameucf101数据来源UCF中佛罗里达大学CV 实验室官方网站许可证licenseCC0-1.0数据集大小约 6.48 GB标签tagsvideo, action-recognition支持的 splittrain、testZooDataset 类UCF101Dataset在源码中这些信息分别由 UCF101Dataset 的license、tags、supported_splits属性提供并在parameters属性中以{fold: self.fold}的形式暴露可配置参数。环境准备FFmpeg 与解压工具视频数据集与图像数据集不同处理链路依赖两个系统级工具1. FFmpeg必需FiftyOne 需要 FFmpeg 来处理视频编解码。若未安装视频在 App 中虽然看起来能显示但不会以正确的宽高比渲染标签叠加位置也会错位详见 docs/source/installation/troubleshooting.rst#L92-L122。各平台安装方式Linuxsudo apt install -y ffmpegmacOSbrew install ffmpegWindows从 FFmpeg 官网下载构建版本解压后加入 PATH2. RAR 解压工具按需UCF101 官方以.rar压缩包发布原始视频FiftyOne 下载后需要解压。若系统中没有解压.rar的工具需要额外安装例如 macOS 上执行brew install rar该要求与 下载实现 中的etau.extract_rar(rar_path, ...)调用直接对应——解压依赖系统或 Python 环境提供的 RAR 支持。快速上手Python 方式加载 UCF101FiftyOne 通过 Zoo 系统封装了 UCF101 的下载、解压、split 整理与元数据解析一条 API 即可完成import fiftyone as fo import fiftyone.zoo as foz import fiftyone.utils.video as fouv dataset foz.load_zoo_dataset(ucf101, splittest) # Re-encode source videos as H.264 MP4s so they can be viewed in the App fouv.reencode_videos(dataset) session fo.launch_app(dataset)这段代码共三步加载数据集foz.load_zoo_dataset(ucf101, splittest)下载并准备 test split返回一个SampleCollection。重编码视频fouv.reencode_videos(dataset)将原始视频转码为 H.264 MP4使其能被 FiftyOne App 流畅可视化详见下文视频重编码一节。启动 Appfo.launch_app(dataset)在浏览器中打开可视化界面即可浏览视频网格、按动作类别筛选样本如上面的截图所示。关于 fold 参数UCF101Dataset构造函数接受fold参数默认值为1支持1、2、3三种取值。fold 决定使用官方哪一套 train/test 划分文件来整理磁盘上的视频目录# 使用 fold 2 的划分 dataset foz.load_zoo_dataset(ucf101, splittrain, fold2)从 下载实现 可以看到fold直接决定读取的划分文件test 划分文件testlist%02d.txt即testlist01.txt/testlist02.txt/testlist03.txttrain 划分文件trainlist%02d.txt若传入fold之外的非法值download_ucf101_dataset会抛出ValueError(fold must be (1, 2, 3))。快速上手CLI 方式加载 UCF101不写 Python 代码直接通过fiftyone命令行完成同样的流程fiftyone zoo datasets load ucf101 --split test # Re-encode source videos as H.264 MP4s so they can be viewed in the App fiftyone utils transform-videos ucf101-test --reencode fiftyone app launch ucf101-test三步对应关系fiftyone zoo datasets load ucf101 --split test加载 test split数据集在 FiftyOne 中注册为ucf101-test。fiftyone utils transform-videos ucf101-test --reencode对名为ucf101-test的数据集执行视频重编码。该命令在 fiftyone/core/cli.py#L5156-L5167 中定义--reencode之外还支持--fps、--max-size 1920,1080、--max-fps 30.0等参数例如--max-size 1920,1080 --max-fps 30.0可强制所有视频不超过 1920×1080、30fps。fiftyone app launch ucf101-test启动 App 打开该数据集。视频重编码为什么需要如何做UCF101 原始视频并非统一的 H.264 MP4 格式而 FiftyOne App 的视频播放依赖 H.264 编码。reencode_videosfiftyone/utils/video.py#L89-L102正是为此设计将样本集合中的所有视频重编码为可在 App 中可视化的 H.264 MP4。默认情况下底层执行的ffmpeg命令为ffmpeg \ -loglevel error -vsync 0 -i $INPUT_PATH \ -c:v libx264 -preset medium -crf 23 -pix_fmt yuv420p -vsync 0 -an \ $OUTPUT_PATH关键参数含义-c:v libx264使用 H.264x264编码器-preset medium编码速度/压缩率平衡档-crf 23恒定质量因子数值越小画质越高、体积越大-pix_fmt yuv420p强制 YUV 4:2:0 像素格式保证浏览器兼容-an去除音轨动作识别数据集通常无需音频。该函数还暴露了丰富的可选参数可在 fiftyone/utils/video.py#L130-L150 及后续定义中查阅常用的包括force_reencodeTrue是否对已是 MP4 的视频也强制重编码media_fieldfilepath输入视频路径所在字段output_field/output_dir/rel_dir输出路径控制update_filepathsTrue是否用新路径更新样本的filepathdelete_originalsFalse是否删除原始视频未指定output_dir且不删除原始文件时若新文件名冲突原文件会被重命名为name-original.extskip_failuresFalse单个视频转码失败时是否跳过继续其余**kwargs会透传给eta.core.video.FFmpeg用于自定义编码器、码率等细节。一个容易忽略的细节重编码不会自动更新数据集的metadata字段。如果需要刷新元数据时长、帧率、尺寸等需手动执行sample_collection.compute_metadata(overwriteTrue)底层实现下载与 split 整理流程深入 fiftyone/utils/ucf101.py 可以看到完整链路。核心入口download_ucf101_dataset(dataset_dir, scratch_dirNone, fold1, cleanupTrue)的流程为下载视频从UCF101.rar链接下载约 6.48 GB 的压缩包L73-L96已存在的文件不会重复下载。下载划分文件下载UCF101TrainTestSplits-RecognitionTask.zip官方划分压缩包并解压L99-L114。按 fold 整理文件读取testlist%02d.txt与trainlist%02d.txtL117-L119 中的_load_split_info按行解析出视频相对路径把视频逐个移动etau.move_file到dataset_dir/test/与dataset_dir/train/目录L49-L67。清理默认删除 scratch 临时目录。而在 Zoo 层面UCF101Dataset._download_and_prepare 做了两件关键事情去 split 化下载UCF101 官方把全部视频打包在单一文件中无法按 split 单独下载因此该方法会先os.path.dirname(dataset_dir)去掉 split 子目录下载完整数据集只有对应 split 目录已存在时才跳过下载L3423-L3431。这意味着首次无论加载train还是test都要下载完整的 6.48 GB 数据。自动识别元数据下载完成后用VideoClassificationDirectoryTree数据集类型及其 Importer 解析出类别列表classes与样本数num_samples供 FiftyOne 建立索引。正是这一设计让一行代码加载数据集成为可能用户只需要关心split和fold文件组织与元数据推断全部由框架完成。使用建议与常见问题磁盘空间完整数据集约 6.48 GB且首次加载会下载全量数据无论指定哪个 split请预留充足空间重编码后若保留原始文件还会额外占用磁盘。split 与评测规范UCF101 官方划分为 3 个 fold社区通常报告 3 个 fold 的平均准确率。若要在 FiftyOne 中复现该评测流程请分别在fold1/2/3下加载train与test。App 中视频无法正确渲染多半是 FFmpeg 缺失按上文环境准备一节安装即可重编码时注意-pix_fmt yuv420p与浏览器兼容性。元数据过期重编码改变了视频属性若需要基于时长/帧率做分析记得调用compute_metadata(overwriteTrue)刷新。延伸阅读数据集文档原文docs/source/dataset_zoo/datasets/ucf101.rstZoo 数据集类实现fiftyone/zoo/datasets/base.py#L3355-L3440UCF101Dataset注册于 L3762 的_DATASETS字典下载与 split 整理实现fiftyone/utils/ucf101.py视频重编码 APIfiftyone/utils/video.py#L89-L150CLI 实现fiftyone/core/cli.py#L5156-L5167transform-videos子命令FFmpeg 安装与视频故障排查docs/source/installation/troubleshooting.rst#L92-L122数据集 Zoo 总览docs/source/dataset_zoo/index.rst【免费下载链接】fiftyoneRefine high-quality datasets and visual AI models项目地址: https://gitcode.com/GitHub_Trending/fi/fiftyone创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。