十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

FiftyOne 中的 ActivityNet 200 数据集:Dataset Zoo 加载、局部下载与实战用法

FiftyOne 中的 ActivityNet 200 数据集:Dataset Zoo 加载、局部下载与实战用法 FiftyOne 中的 ActivityNet 200 数据集Dataset Zoo 加载、局部下载与实战用法【免费下载链接】fiftyoneRefine high-quality datasets and visual AI models项目地址: https://gitcode.com/GitHub_Trending/fi/fiftyoneActivityNet 是大规模人体活动理解视频数据集支持全局视频分类、裁剪片段活动分类与时间动作检测三类任务。本文围绕 FiftyOne Dataset Zoo 内置的activitynet-200200 类版本含视频与时间动作检测标注展开介绍其数据集结构、全量/局部下载的完整参数体系以及通过 Python API 与 CLI 加载并在 App 中可视化的实战方案帮助你按需下载、低成本探索这一 500 GB 规模的视频数据集。数据集概览ActivityNet 200 是 FiftyOne Dataset Zoo 中内置的视频数据集ZooDataset 类为ActivityNet200Dataset核心信息如下数据集名称activitynet-200数据集来源http://activity-net.org/index.html许可证CC-BY-4.0数据集大小500 GB标签video, classification, action-recognition, temporal-detection支持的分割train, validation, testZooDataset 类ActivityNet200Dataset从源码看ActivityNet200Dataset的属性定义了该数据集在 Zoo 中的注册信息license返回CC-BY-4.0、supported_splits返回(train, test, validation)并且supports_partial_downloads返回True这意味着该数据集天然支持下文介绍的按需局部下载机制。与其他版本的关系ActivityNet 200 是 ActivityNet 100 的超集ActivityNet 100 与 200 在活动类别数量和各分割的视频数量上均不相同二者在磁盘上共享视频文件集成文档明确指出ActivityNet 100 的 Zoo 目录中的视频会被 ActivityNet 200 直接复用每个视频在磁盘上只保存一份拷贝避免重复存储见 docs/source/integrations/activitynet.rst。全量分割统计分割视频数标注实例数Train10,02415,410Test5,044标签未公开withheldValidation4,9267,654需要注意test 分割不提供标注其标签在官方发布时被保留withheld。加载前的重要说明局部下载会从 YouTube 下载视频若视频仍可获取全量分割必须先向 ActivityNet 维护者申请官方源文件后才能加载原因见下文操作视频数据集需要本机安装ffmpeg参见 故障排查视频相关否则视频无法解码与预览。局部下载按需获取数据子集由于 ActivityNet 体量高达 500 GBFiftyOne 提供了丰富的参数用于高效下载特定子集。指定新的子集时FiftyOne 会优先复用本地已下载的数据仅在必要时才从 YouTube 补充下载缺失视频。底层由download_activitynet_split()驱动它通过ActivityNetDatasetManager统一管理已下载样本与待下载样本的比对与调度。参数详解以下参数均可通过load_zoo_dataset()传入参数默认值说明splitNone字符串指定要加载的单个分割支持(train, test, validation)splitsNone字符串列表指定要加载的多个分割source_dirNone存放手动下载的 ActivityNet 官方文件的目录用于避免从 YouTube 下载视频classesNone字符串或字符串列表指定必须加载的类别提供后仅加载包含至少一个指定类别实例的样本max_durationNone仅下载时长秒小于等于该值的视频默认下载全部视频copy_filesTrue填充dataset_dir时对源文件是移动False还是复制True仅在提供source_dir时生效num_workersNone下载单个视频时使用的进程数默认使用multiprocessing.cpu_count()shuffleFalse是否随机打乱局部下载时样本的选取顺序seedNone打乱时使用的随机种子max_samplesNone每个分割最多加载的样本数若同时指定classes则最多加载包含指定类别中至少一个的样本数默认加载所有匹配样本参数校验与选取策略的源码细节在ActivityNetDownloadConfig中可以看到两层校验逻辑validate_split()分割必须是_SPLIT_MAP中的键否则抛出ValueErrorvalidate_max_duration()max_duration必须是正数整数或浮点小于等于 0 会直接报错。而load_entire_split属性则揭示了全量 vs 局部的判定规则当max_duration、max_samples、classes三者均为空时test 分割不受classes影响才被认为是加载全量分割。当同时指定classes与max_samples时样本的选取遵循明确优先级见download_necessary_samples()优先选取已下载且包含全部指定类别的样本直至max_samples其次选取已下载且包含至少一个指定类别的样本若仍有配额再按包含全部类别 → 包含任一类别的顺序从 YouTube 下载新视频补齐若匹配类别的视频不足以填满max_samples则只加载可用的视频。这套策略保证了重复执行局部加载时后续加载基本不再触发 YouTube 下载。Python 实战示例import fiftyone as fo import fiftyone.zoo as foz # # 从 validation 分割随机加载 10 个样本 # # 仅在必要时下载所需视频 # dataset foz.load_zoo_dataset( activitynet-200, splitvalidation, max_samples10, shuffleTrue, ) session fo.launch_app(dataset) # # 加载 validation 分割中包含 Bathing dog 和 Walking the dog # 动作的 10 个样本 # # 包含全部指定类别的视频会被优先选取其次才是包含至少一个 # 指定类别的视频。如果匹配样本不足 max_samples则只加载可用的视频。 # # 仅在必要时下载视频后续再次局部加载 validation 分割 # 将不再需要下载任何视频。 # dataset foz.load_zoo_dataset( activitynet-200, splitvalidation, classes[Bathing dog, Walking the dog], max_samples10, ) session.dataset datasetCLI 实战示例同样通过 FiftyOne CLI 完成上述操作# # 从 validation 分割随机加载 10 个样本 # # 仅在必要时下载所需视频 # fiftyone zoo datasets load activitynet-200 \ --split validation \ --kwargs max_samples10 fiftyone app launch activitynet-200-validation-10 # # 加载 validation 分割中包含 Archery 和 Cricket # 动作的 10 个样本 # # 包含全部指定类别的视频会被优先选取其次才是包含至少一个 # 指定类别的视频。如果匹配样本不足 max_samples则只加载可用的视频。 # # 仅在必要时下载视频后续再次局部加载 validation 分割 # 将不再需要下载任何视频。 # fiftyone zoo datasets load activitynet-100 \ --split validation \ --kwargs \ classesArchery,Cricket \ max_samples10 fiftyone app launch activitynet-100-validation-10加载完成后可以通过fo.launch_app(dataset)在 FiftyOne App 中浏览视频与时间动作检测标注App 中每个样本会展示视频关键帧及对应的时序检测框。全量分割下载自 ActivityNet 发布以来大量视频已从 YouTube 下架。因此若你不指定上一节中的任何局部下载参数就必须先从 ActivityNet 维护者处下载官方源文件才能将某个完整分割加载进 FiftyOne。具体步骤填写 ActivityNet 官方申请表 获取源文件通过source_dir参数将源文件目录传给load_zoo_dataset()。从源码看全量加载有硬性约束在download_activitynet_split()中若load_entire_split为真且本地已存在样本数不等于该分割的官方总数见_NUM_TOTAL_SAMPLES会直接抛出ValueError提示必须先下载官方源文件或改用max_samples/max_duration/classes从 YouTube 下载子集。source_dir的处理由ActivityNetDatasetManager.process_source()完成它识别官方发布包中的 zip 归档如各分割视频包、missing_files.zip与解压目录按需解压后把视频文件复制copy_filesTrue或移动copy_filesFalse到 Zoo 数据目录同时自动跳过已在本地存在的视频。完整的全量分割加载指引见 ActivityNet 集成文档。进阶自定义导入与元数据除 Zoo 下载外activitynet-200还可以通过ActivityNetDatasetImporter直接导入本地数据。该 Importer 继承自FiftyOneTemporalDetectionDatasetImporter支持以下可选参数data_path显式控制媒体文件位置可以是dataset_dir下的子目录名如data、绝对目录路径、dataset_dir下的 JSON 清单文件名如data.json或绝对文件路径默认为data/或data.json中已存在的那个labels_path显式控制标注文件位置默认为labels.jsonclasses/max_duration/max_samples与 Zoo 下载同名参数语义一致用于筛选导入的样本compute_metadata默认False是否在导入时为每个视频生成VideoMetadata实例shuffle/seed是否随机打乱导入顺序及对应种子。导入后get_dataset_info()会返回数据集的classes与taxonomy类别层次结构信息方便后续分析与评估。小结ActivityNet 200 是视频理解领域的经典基准数据集通过 FiftyOne Dataset Zoo 可以轻松完成加载、可视化与评估。核心要点回顾数据规模大500 GB优先使用max_samples、classes、max_duration等局部下载参数按需取数局部下载会先复用本地已有视频再回源 YouTube重复加载几乎不产生额外流量加载全量分割必须先从官方申请源文件并配合source_dir使用结合 FiftyOne App 可直观浏览视频与时间动作检测标注快速验证模型假设与数据质量。【免费下载链接】fiftyoneRefine high-quality datasets and visual AI models项目地址: https://gitcode.com/GitHub_Trending/fi/fiftyone创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表