FiftyOne 视频轨迹标注入门数据集 quickstart-trajectories 详解:Instance 跨帧关联与轨迹标注实践
FiftyOne 视频轨迹标注入门数据集 quickstart-trajectories 详解Instance 跨帧关联与轨迹标注实践【免费下载链接】fiftyoneRefine high-quality datasets and visual AI models项目地址: https://gitcode.com/GitHub_Trending/fi/fiftyoneQuickstart Trajectories 是 FiftyOne 数据集仓库fiftyone/zoo/datasets/base.py中内置的一个小型视频数据集专为对象轨迹trajectory标注场景设计。它复用 quickstart-video 的 10 段视频片段但将各帧中的目标检测通过Instance标签跨帧串联为完整对象轨迹是学习视频标注、轨迹关联与帧级采样工作流的理想起点。读完本文你将掌握该数据集的加载方式、底层数据模型与源码实现并能独立完成从视频元数据计算到帧采样、再到 App 内轨迹标注的完整实战流程。数据集概述与设计定位Quickstart Trajectories 的核心定位是「用于轨迹标注的小型视频数据集」。与同为 quickstart 系列的 quickstart-video 数据集 相比它包含相同的 10 段视频片段但标注结构发生了关键变化每一帧中的对象检测object detections通过其instance属性中的Instance标签跨帧链接为对象轨迹早期版本中用于关联的遗留index属性已被移除关联信息统一收敛到instance字段中。从源码可以看出这一设计意图。在 fiftyone/core/labels.py 中_HasInstancemixin 明确说明与每个标签唯一的id字段不同instance字段对每个标签实例无论是时间维度还是跨不同模态都是唯一的因此可以用来跨样本识别同一个逻辑标签class _HasInstance(Label): Mixin for :class:Label classes that contain an instance configuration via an instance attribute. Contrary to the id field, which is unique to each label, the instance field is unique to each label instance either temporally or across different modalities, allowing you to identify the same logical label across different samples. property def instance_id(self): The labels instance ID, or None if it does not have one. try: return self.instance.id except AttributeError: return None而Instance类本身fiftyone/core/labels.py是一个极简的EmbeddedDocument仅包含一个id字段用于作为跨帧/跨样本的实例标识class Instance(EmbeddedDocument): A label instance. Args: id (None): the label instance ID id fof.ObjectIdField(defaultlambda: str(ObjectId()), db_field_id) property def _id(self): return ObjectId(self.id)Detection标签fiftyone/core/labels.py通过继承_HasInstance获得instance字段从而支持轨迹关联class Detection(_HasAttributesDict, _HasID, _HasMedia, _HasInstance, Label): An object detection. ... Args: ... index (None): an index for the object instance (None): an instance of :class:Instance to link this detection label to other similar labels ... _MEDIA_FIELD mask_path label fof.StringField() bounding_box fof.ListField(fof.FloatField()) mask fof.ArrayField() mask_path fof.StringField()可以看到Detection的instance参数正是「将此检测标签链接到其他相似标签」的通道——这正是轨迹关联的实现基础。数据集关键属性该数据集在 Zoo 注册表中的元数据如下对应 fiftyone/zoo/datasets/base.py 的源码属性实现属性值源码佐证数据集名称quickstart-trajectories_ARCHIVE_NAME quickstart-trajectories.zipname属性返回quickstart-trajectories数据集大小35.20 MB类 docstring 标注Dataset size: 35.20 MB许可证CC-BY-4.0license属性返回CC-BY-4.0标签video, quickstarttags属性返回(video, quickstart)支持的 splitsN/A无supported_splits返回NoneZooDataset 类QuickstartTrajectoriesDataset注册于 fiftyone/zoo/datasets/base.py 的_DATASET_MAP键为quickstart-trajectories从源码结构看该数据集类继承自FiftyOneDataset其下载与准备流程在_download_and_prepare中实现fiftyone/zoo/datasets/base.pydef _download_and_prepare(self, dataset_dir, scratch_dir, _): _download_and_extract_archive( self._GDRIVE_ID, self._ARCHIVE_NAME, self._DIR_IN_ARCHIVE, dataset_dir, scratch_dir, ) logger.info(Parsing dataset metadata) dataset_type fot.FiftyOneDataset() importer foud.FiftyOneDatasetImporter num_samples importer._get_num_samples(dataset_dir) logger.info(Found %d samples, num_samples) return dataset_type, num_samples, None值得注意的是与 quickstart-video 使用FiftyOneVideoLabelsDataset导入器不同本数据集以FiftyOneDataset格式导出——因为轨迹关联需要保留instance这类跨帧的标签结构无法用单纯的视频标签格式完整表达。下载源由_GDRIVE_ID 1474CYDOP3x3TVNWE0ftRE8M05pzd1w0Y指定。环境准备ffmpeg 前提条件由于该数据集是视频数据集使用前需要确保系统中已安装 ffmpeg。官方文档明确指出处理视频数据集必须安装 ffmpeg参见 视频相关故障排查文档 中的 ffmpeg 安装说明。ffmpeg 的作用贯穿整个视频处理链路无论是后续的dataset.compute_metadata()读取视频时长、分辨率、帧率还是dataset.to_frames(sample_framesTrue)将视频采样为逐帧图像底层都依赖 ffmpeg 完成视频解码与帧抽取。快速上手加载数据集Python 方式import fiftyone as fo import fiftyone.zoo as foz dataset foz.load_zoo_dataset(quickstart-trajectories) session fo.launch_app(dataset)CLI 方式fiftyone zoo datasets load quickstart-trajectories fiftyone app launch quickstart-trajectories两条命令分别完成「从 Zoo 下载并加载数据集」与「在 FiftyOne App 中启动该数据集的可视化会话」。加载完成后在 App 中可以看到与 quickstart-trajectories 官方截图docs/source/images/dataset_zoo/quickstart-trajectories.png一致的界面视频帧上叠加着紫色对象检测框person、vehicle、road sign 等类别底部的时间轴以不同色块呈现各目标随时间的轨迹区间右侧面板可在 Explore 与 Annotate 两种模式间切换用于查看和编辑轨迹标注。轨迹标注前的必要预处理这是本数据集使用中最关键的实操步骤。官方文档明确指出在标注轨迹之前必须先计算视频元数据并将视频采样为帧dataset.compute_metadata() dataset.to_frames(sample_framesTrue)下面分别说明这两个调用的作用与底层实现。compute_metadata()填充视频元数据compute_metadata方法fiftyone/core/collections.py会为集合中所有样本填充metadata字段包括视频时长、分辨率、帧率等def compute_metadata( self, overwriteFalse, num_workersNone, skip_failuresTrue, warn_failuresTrue, progressNone, ): Populates the metadata field of all samples in the collection. Any samples with existing metadata are skipped, unless overwrite True. ... 关键参数说明参数默认值说明overwriteFalse是否覆盖已存在的元数据已有元数据的样本默认跳过num_workersNone建议使用的线程数用于并行计算skip_failuresTrue某样本元数据计算失败时是否优雅跳过而非抛错warn_failuresTrue失败时是否输出警告日志progressNone是否渲染进度条True/False传None时使用fiftyone.config.show_progress_bars的默认值轨迹标注需要知道每个视频的总帧数、帧率等信息因此该步骤是后续帧采样的前提。to_frames(sample_framesTrue)视频采样为帧to_frames方法fiftyone/core/collections.py创建「视频中每一帧对应一个样本」的视图The returned view will contain all frame-level fields and thetagsof each video as sample-level fields, as well as asample_idfield that records the IDs of the parent sample for each frame.当sample_framesTrue时每个视频会被采样到一目录逐帧图像并将文件路径写入源数据集的filepath帧字段。默认情况下每帧图像文件夹与输入视频同名例如/path/to/video1.mp4 → /path/to/video1/ 000001.jpg 000002.jpg ...还可以通过可选的output_dir与rel_dir参数定制采样帧文件夹的位置与结构。例如output_dir /tmp、rel_dir /path/to时源视频/path/to/folderA/video1.mp4会被采样为/tmp/folderA/video1/000001.jpg、/tmp/folderA/video1/000002.jpg……在轨迹标注场景中逐帧采样后每一帧上带有instance关联信息的检测框才能在 App 的时间轴中被连续呈现、编辑为跨帧轨迹。轨迹数据模型instance 与 index 的演进理解本数据集的核心在于理解instance字段在轨迹关联中的作用id字段每个标签唯一用于标识单条标签记录本身instance字段指向一个Instance文档仅含id用于标识同一逻辑对象在不同帧/不同样本中的出现——同一辆车的所有检测框共享同一个instance.id从而构成一条轨迹遗留的index字段在旧版本中用于对象索引关联在本数据集中已被移除轨迹信息统一由instance承载。因此当你用fo.launch_app(dataset)打开该数据集时App 正是依据各帧检测框的instance.id分组在时间轴上绘制出每个目标对象的运动轨迹色块。进一步探索与延伸查看完整的数据集 Zoo 文档数据集 Zoo 总览、数据集 Zoo API 参考对比同一系列的 quickstart-video 文档理解「仅含逐帧检测」与「含跨帧轨迹」两种标注结构的差异深入阅读 fiftyone/zoo/datasets/base.py 中QuickstartTrajectoriesDataset的完整实现以及 fiftyone/core/labels.py 中Instance与_HasInstance的源码若在视频处理过程中遇到 ffmpeg 相关问题可查阅 安装与故障排查文档。小结Quickstart Trajectories 是 FiftyOne 中进入视频轨迹标注领域的低门槛入口35.20 MB 的体积、CC-BY-4.0 许可证、10 段带跨帧轨迹关联的视频片段配合compute_metadata()to_frames(sample_framesTrue)两步预处理即可在 FiftyOne App 的时间轴视图中直观地查看和标注对象轨迹。其底层instance字段的数据模型也为你理解 FiftyOne 中跨帧/跨模态对象关联机制提供了最简洁的参考实现。【免费下载链接】fiftyoneRefine high-quality datasets and visual AI models项目地址: https://gitcode.com/GitHub_Trending/fi/fiftyone创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Wasp 多认证方式与单一身份约束:解读 Auth 实体模型与账户合并机制

Wasp 多认证方式与单一身份约束:解读 Auth 实体模型与账户合并机制

Wasp 多认证方式与单一身份约束:解读 Auth 实体模型与账户合并机制 【免费下载链接】wasp The batteries-included full-stack framework for the AI era. Develop JS/TS web apps (React, Node.js, and Prisma) using declarative code that abstracts away comple…

2026/11/1 0:40:28 阅读更多 →
Axolotl 全链路实战指南:从 YAML 配置驱动到 SFT / RLHF / GRPO 的完整技术图谱

Axolotl 全链路实战指南:从 YAML 配置驱动到 SFT / RLHF / GRPO 的完整技术图谱

Axolotl 全链路实战指南:从 YAML 配置驱动到 SFT / RLHF / GRPO 的完整技术图谱 【免费下载链接】axolotl Go ahead and axolotl questions 项目地址: https://gitcode.com/GitHub_Trending/ax/axolotl 本文以仓库根目录的 AGENTS.md 为骨架,系统梳…

2026/10/24 21:49:11 阅读更多 →
抖音下载器批量下载抖音视频与合集完整指南

抖音下载器批量下载抖音视频与合集完整指南

抖音下载器批量下载抖音视频与合集完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具&…

2026/10/25 21:10:11 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/9 14:01:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/9 14:56:39 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/9 1:59:56 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/9 14:01:10 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/9 7:45:06 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/9 14:01:11 阅读更多 →

日新闻

周新闻

月新闻