
CVAT 标注术语详解Label、Attribute、Track 等核心概念及其在源码中的实现【免费下载链接】cvatComputer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well as labeling services, for image, video, and 3D annotation with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvatCVATComputer Vision Annotation Tool文档中有一份专门解释标注领域术语的词汇表覆盖了 Label、Attribute、Track、Annotation、Mode、State、Stage 等几乎所有核心概念。本文以该词汇表为骨架逐项展开并结合 engine 模块的数据模型 说明每个术语在后端是如何被定义和约束的——读完之后你既能统一阅读 CVAT 官方文档、API 文档时的术语口径也能在开发插件、编写 SDK 脚本或排查标注数据问题时直接定位到对应的模型字段。Label标注对象的类型Label标签表示被标注对象的类别例如person、car、vehicle等。在 CVAT 中每个 shape、track 或 tag 都必须关联一个 label它是数据集标签体系label set的基本单元。从后端模型看Label定义在 cvat/apps/engine/models.py 中关键字段包括name标签名称最长 64 个字符。模型元数据中的唯一性约束models.py保证同一 task/project 下顶层标签名唯一重名会抛出InvalidLabel异常type限制该标签允许使用的形状取值来自 LabelType 枚举包括any、rectangle、polygon、polyline、points、ellipse、cuboid、mask、skeleton、interval、tag。例如一个typecuboid的 3D 标签只能画包围盒parent指向自身的可空外键支持建立父子标签sublabel层级实现细粒度分类color用于界面显示的颜色值。也就是说文档里“Label 是标注对象的一种类型”这句话在代码层面体现为Label模型 LabelType枚举 属性规格AttributeSpec的组合标签决定了“能画什么、有哪些可填属性、以什么颜色呈现”。Attribute对象的属性分 Unique 与 Temporary 两类Attribute属性是标注对象的一项性质例如color、model、quality。CVAT 将属性分为两种Unique不可变属性Unique属性一经设置便不可变不能逐帧修改例如age、gender、color。这类属性在整个 track 的生命周期内保持同一个值语义上属于该对象“固有”的特征。Temporary可变属性Temporary属性是可变mutable的可以在任意一帧上单独修改例如quality、pose、truncated适合描述随时间变化的状态比如遮挡程度或截断情况。在源码中这两种属性的区分就是mutable布尔字段。AttributeSpec 模型 定义了属性的完整规格class AttributeSpec(models.Model): label models.ForeignKey(Label, on_deletemodels.CASCADE) name models.CharField(max_length64) mutable models.BooleanField() # True 即 temporaryFalse 即 unique input_type models.CharField(max_length16, choicesAttributeType.choices()) default_value models.CharField(blankTrue, max_length128) values models.CharField(blankTrue, max_length4096)mutable对应文档中的 unique/temporary 二分法——mutableFalse即 unique 属性mutableTrue即 temporary 属性input_type属性的控件类型取值来自 AttributeType 枚举checkbox、radio、number、text、select。例如gender常用radioage常用numbertruncated常用checkboxvalues对于radio/select等枚举型属性存放可选值列表number类型则存放取值范围元数据约束unique_together (label, name)保证同一标签下属性名不重复。实际填写的值则通过抽象基类 AttributeVal 落库并按宿主对象拆分为LabeledShapeAttributeVal、LabeledTrackAttributeVal、TrackedShapeAttributeVal、LabeledImageAttributeVal、LabeledIntervalAttributeVal等具体模型——注意TrackedShapeAttributeVal的存在正说明 temporary 属性可以逐帧记录到 track 的每一帧TrackedShape上。Track同一对象在多个帧上的形状集合Track轨迹是不同帧上属于同一对象的一组形状。Track 在Track mode下创建是视频标注区别于图像标注的核心概念你只需在若干“关键帧”上画形状CVAT 会处理对象在时间维度上的连续性。从数据模型看Track 由两个协作的模型组成models.pyLabeledTrack继承自抽象基类Annotation携带label、frame、source等信息代表轨迹本身TrackedShape通过外键track挂在LabeledTrack之下表示该轨迹在某一帧上的具体形状type、points、rotation等。也就是说“一个 track 一个 LabeledTrack 若干帧的 TrackedShape”。这一结构与后文的 Interpolation 模式直接相关中间帧的TrackedShape可以由关键帧形状线性插值生成而不需要人工绘制。Annotation由 shape 与 track 构成的标注及其来源Annotation标注是一组 shapes 和 tracks 的集合。文档将其按产生方式分为三类Manual手动由人直接创建Semi-automatic半自动主要由程序自动生成但用户提供了部分数据例如插值时的关键帧Automatic全自动完全由程序生成无需人工参与。源码里这一分类并非文档专属的口头约定而是数据模型中的一等字段。抽象基类 Annotation 带有source字段其取值来自 SourceType 枚举class SourceType(str, Enum): AUTO auto SEMI_AUTO semi-auto MANUAL manual FILE file CONSENSUS consensussource默认值为manualmodels.py。文档列出的三种类型对应其中的manual、semi-auto、auto枚举还额外提供了file从标注文件导入和consensus共识标注结果。在导出数据集时source会随每条标注一起被写入导出文件这正是文档中新增的“按标注来源过滤”能力的字段基础。按几何形态annotation 家族还派生出具体模型LabeledShape单帧形状含type、points、occluded、outside、score等字段、LabeledTrack轨迹、LabeledInterval音频等 1D 数据上的时间区间标注start/stop界帧。其中形状类型本身由 ShapeType 枚举给出rectangle、polygon、polyline、points、ellipse、cuboid、mask、skeleton。Approximation多边形近似减少点数Approximation近似用于减少多边形的点数从而压缩标注文件体积、让多边形更易编辑。在 CVAT 的标注界面中可以对多边形应用近似处理得到更平滑的轮廓点更少但几何形状基本保持。从源码结构看前端cvat-core包中提供了多边形简化相关的实现如 poly-simplify.ts用于对标注集合执行形状简化操作。近似程度通常与“精度”参数相关精度要求越低保留的顶点越少文件越小编辑越轻快。对大规模 polygon 数据集如分割转多边形场景开启近似是控制标注体积的常用手段。Trackable可被自动追踪的对象Trackable可追踪的对象具有这样的行为如果上一帧是该对象的最新关键帧CVAT 会调用跟踪算法自动把它追踪到当前帧减少手工在每帧上拖拽框体的工作量。关于跟踪算法tracker的选择、初始化与运行细节可参考官方文档中的 trackers 章节。这一机制与 Track 模式、tracker 自动标注工具AI tools配合使用trackable 标志相当于给某个 track 打了“可以交给 tracker 接管”的开关是半自动视频标注sourcesemi-auto的典型工作流组成部分。ModeAnnotation 与 Interpolation 两种任务模式任务task创建时会选定一种工作模式文档中对应两个术语Interpolation插值模式用于视频标注使用track对象。只有关键帧上的对象需要手工标注中间帧由 CVAT 对关键帧形状做线性插值自动生成。相关文档见 Track mode 基础。Annotation标注模式用于图像标注使用shape对象。每一帧相互独立没有帧间关联也不需要 track。相关文档见 Shape mode 基础。在后端这一选择落在 TaskMode 枚举上class TaskMode(TextChoices): ANNOTATION annotation task is a set of independent MediaType elements INTERPOLATION interpolation task is an ordered sequence of MediaType elements两个枚举值的注释精确概括了二者的数据模型差异annotation 模式下元素彼此独立interpolation 模式下元素是有序序列——“有序”正是插值能够成立的前提。Task模型以mode字段models.py持久化该选择。Dimension由任务数据类型决定的维度Dimension维度取决于创建任务时定义的数据类型。文档区分了 2D 与 3D 两类2D2D 任务的数据格式是图像和视频images and videos支持矩形框、多边形、椭圆、掩码等 2D 形状。相关文档见 创建标注任务。3D3D 任务的数据格式是点云point cloud标注对象为 3D 包围盒cuboid。数据格式说明见 3D 任务的数据格式工作区与标注方法分别见 3D task workspace 和 3D Object annotation。从模型定义看维度字段是 DimensionType 枚举1d、2d、3d1D 对应音频区间标注具体媒体类型则由 MediaType 枚举给出image、point_cloud、audio。二者在Task模型中分别以dimension和media_type字段保存models.py。因此“任务的维度/媒体类型在创建时确定”这一文档表述在实现上就是这两个创建后基本固定的任务级字段。State 与 StageJob 的两条状态轴Job任务被切分后的最小标注单元有两条相互独立的状态轴State状态Job 的当前状态可以由被分配的用户在 Job 内的顶部菜单中修改。可能的状态有四个new、in progress、rejected、completed。Stage阶段Job 所处的流程阶段在 任务页面 的下拉列表中指定共有三个阶段annotation标注、validation校验、acceptance验收。该值会影响任务进度条的计算。在 Job 模型 中这两个概念对应独立字段stage models.CharField(max_length32, choicesStageChoice.choices(), defaultStageChoice.ANNOTATION) state models.CharField(max_length32, choicesStateChoice.choices(), defaultStateChoice.NEW)StageChoiceannotation/validation/acceptanceStateChoicenew/in progress/completed/rejected模型中另有一个status字段源码注释明确标注其“deprecated, use StageChoice and StateChoice instead”models.py即旧的单一状态字段已拆分为“阶段 状态”两条轴。这一拆分在语义上很清晰Stage 表达流程位置标注→校验→验收的流水线阶段由任务管理方在任务页调整State 表达该阶段内的完成度被分配者可以自行在 Job 内切换例如校验者把 job 标记为rejected。进度条统计“通过当前 stage 的 job 数”时读取的正是这两个字段的组合。Subset项目内的任务分组Subset子集是项目project内对任务的分组便于按数据集用途组织工作例如test、train、validation或任意自定义名称。该字段直接落在 Task 模型 上subset models.CharField(max_length64, blankTrue, default)即任务级的最长 64 字符自由文本字段。其典型用法是在项目中创建 train/val/test 三个子集并将任务归入导出数据集时即可按 subset 分别导出实现训练集、验证集、测试集的划分。Credentials 与 Resource云存储接入术语这两个术语出现在 挂载云存储 的场景中Credentials凭证指云存储的身份认证信息具体形式包括Key secret key密钥与私密密钥、Account name and token账户名与令牌、Anonymous access匿名访问、Key file密钥文件四种。Resource资源指bucket name存储桶名或container name容器名即凭证要访问的具体云存储容器。二者组合起来就是“用哪套凭证、访问哪个桶”的完整配置CVAT 依赖它把远端数据挂载为任务数据源或标注导出目标。小结术语到字段的速查术语含义源码锚点Label标注对象的类型Label 模型、LabelTypeAttribute (unique/temporary)对象属性不可变/可逐帧变AttributeSpec.mutableTrack同一对象跨帧的形状集合LabeledTrack / TrackedShapeAnnotation (manual/semi-auto/auto)shapes 与 tracks 的集合及来源SourceTypeApproximation减少多边形点数poly-simplify.tsTrackable关键帧后由 tracker 自动跟随trackers 文档Modeannotation / interpolationTaskModeDimension1d / 2d / 3dDimensionType、MediaTypeStatenew / in progress / rejected / completedStateChoiceStageannotation / validation / acceptanceStageChoiceSubset项目内任务分组train/val/test 等Task.subsetCredentials / Resource云存储凭证 / 桶名attach-cloud-storage 文档掌握这套词汇后再阅读 CVAT 的其他文档——如 tasks 页面、track mode、AI tools——基本不会再遇到术语歧义而表中给出的模型字段与枚举则是把文档概念落到 API、数据库与导出文件层面的直接依据。【免费下载链接】cvatComputer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well as labeling services, for image, video, and 3D annotation with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考