资讯动态

Label Studio VideoVector 标签实战:基于关键帧插值的视频矢量标注完整指南

发布时间:2026/9/13 7:28:55 来源:尧图企业网站定制
Label Studio VideoVector 标签实战基于关键帧插值的视频矢量标注完整指南【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studioVideoVector是 Label Studio 中面向视频帧的矢量标注标签它将图像领域的矢量多边形/折线/骨架能力扩展到视频并以关键帧 线性插值的方式让标注结果随时间轴自动跟随目标。本文以 videovector.md 为主干结合仓库前端源码web/libs/editor下的标签定义、区域模型与绘制工具与 SAM2 视频教程完整讲解标签配置、交互操作、关键帧原理、参数含义与导出结果格式帮助你快速搭建可复制的视频矢量标注方案。一、VideoVector 标签概述VideoVector为视频帧带来矢量标注能力通常与Video/承载视频对象和Labels/提供类别标签组合使用。它支持可闭合路径closable和骨架模式skeleton并通过基于关键帧的插值在视频帧之间平滑过渡。适用数据类型video可用范围VideoVector与VideoVectorLabels两个标签当前仅在Label Studio Enterprise含自托管版与 Starter Cloud中可用。在配置层面VideoVector是一个独立于Labels的矢量绘制控制标签因此可以单独控制矢量样式颜色、粗细、点大小而 VideoVectorLabels 则是VideoVector与Labels的合并标签把“绘制矢量”和“选择类别”合并进一个标签适合配置更简洁的场景。二、结合 SAM2 实现视频分割与目标追踪VideoVector最有价值的用法是与Segment Anything Model 2SAM2配合用于视频分割与目标追踪工作流先在关键帧上手工放置一个矢量或由 SAM2 交互式提示生成由 SAM2 后端跨视频帧跟踪并传播目标对象标注者只需修正模型漂移的帧无需逐帧手动画矢量。这种“关键帧引导 模型传播 人工修正”的组合正是这两个标签最擅长的场景。逐步配置教程见 SAM2 with Videos ML backend 教程仓库中的segment_anything_2_video.md包含从源码启动 ML 后端、设置LABEL_STUDIO_URL/LABEL_STUDIO_API_KEY环境变量、将http://localhost:9090接入项目Settings - Machine Learning - Add Model的完整流程以及推荐的基础标注配置。需要注意SAM2 视频后端存在已知限制——仅支持 GPU 服务器、目前只支持单个目标的跟踪等配置前请阅读教程中的 “Known limitations” 章节。值得补充的是源码层面已经为“SAM2 交互式后端 矢量控制”预留了规则skeleton.ts 中的isVectorSkeletonEnabled()表明——当控制标签绑定 SAM2 交互式 ML 后端时hasInteractiveBackend true即使配置了skeletontrue也会被忽略因为 SAM2 始终产出闭合的 mask骨架模式与交互式后端不兼容对应源码注释 BROS-1434。也就是说配置skeleton属性的行为在不同后端环境下会有所不同。三、关键帧Keyframe机制原理关键帧是VideoVector的核心数据模型当你在某一帧上标注矢量时Label Studio 将该帧保存为关键帧之后当你移动点、添加点或闭合路径时会在对应帧上创建新的关键帧Label Studio 会在关键帧之间对每个顶点的位置做线性插值包含贝塞尔控制点因此播放视频时矢量会跟随目标运动。源码印证了这一机制。VideoVectorRegion.jsx第 14–38 行实现了核心插值逻辑interpolateVertex(prev, next, r)对单个顶点做线性插值x prev.x (next.x - prev.x) * rinterpolateVertices(prevKeyframe, nextKeyframe, frame)按顶点 ID 匹配两个关键帧间的顶点插值比例r (frame - prevKeyframe.frame) / (nextKeyframe.frame - prevKeyframe.frame)后一关键帧中不存在的顶点保持原样。同一文件中的getShape(frame)视图则负责在播放/跳帧时解析当前帧应显示的几何形状命中关键帧直接返回其顶点位于两个关键帧之间时向前查找插值对于仅作为生命周期端点的空关键帧enabled: false且无顶点会就近取前/后最近的含形状关键帧保证画布与时间轴显示一致BROS-1513。四、路径与点的基本操作操作说明添加点在空白处单击。在路径线段上添加点按住Shift单击两点之间的线段。结束或退出路径按Esc或在最后添加的点上双击。移动点单击点并拖动即可重新定位。删除点按住AltmacOS 为Option并单击已有顶点。这些交互在绘制工具层有对应实现VideoVector.js工具 中定义了双击判定阈值300ms 内、像素距离 5px 内视为双击以及完成区域后的单击防误触窗口400msBROS-1411保证“双击闭合/退出”与“单击选中”不会互相干扰同时通过editingPointGesture标记区分“调整已有顶点”与“新增顶点”的手势避免在选中开放路径时误追加顶点BROS-1413。五、高级功能闭合路径与骨架模式5.1 闭合路径Closed paths通过closabletrue参数允许创建多边形等闭合形状操作说明闭合路径在最后一个点上双击系统自动在首点与末点之间补上一条线段。断开闭合路径按住AltmacOS 为Option单击闭合路径上的某条线段将其重新打开再单击某个点即可删除该点。5.2 骨架模式Skeleton通过skeletontrue参数开启骨架矢量用于人体/物体关键点骨架等分支路径场景开启后新添加的点连接到当前活动点active point而不是最后添加的点这使得路径可以从任意已有顶点分支形成骨架结构。仓库中 skeleton.test.ts 与端到端用例 vector_points.cy.ts如“添加分支后用一次 Esc 取消选中已恢复的骨架矢量”均覆盖了骨架模式的分支绘制与退出行为。六、标签参数详解下表来自 includes/tags/videovector.md与 VideoVector.js 中TagAttrs模型的定义含默认值一致参数类型默认值说明namestring—元素名称必填toNamestring—要控制的元素名称视频对象必填opacitynumber0.2矢量的不透明度fillColorstring#f48a42矢量填充颜色支持十六进制或 HTML 颜色名strokeColorstring#f48a42描边颜色十六进制strokeWidthnumber2描边宽度pointSizesmall|medium|largesmall矢量控制点手柄的大小pointStylerectangle|circlecircle点的样式closablebooleanfalse是否允许闭合形状skeletonbooleanfalse是否启用骨架模式允许分支路径minPointsnumber|nonenone允许的最小点数maxPointsnumber|nonenone允许的最大点数snappixel|nonenone是否将矢量吸附到图像像素pointSizeEnablednumber5形状被选中时点的像素大小pointSizeDisablednumber3形状未选中时点的像素大小源码细节fillColor、strokeColor在 VideoVector.js 中通过customTypes.color校验opacity通过customTypes.range()约束minPoints/maxPoints使用customTypes.positiveInteger空值null即表示不限制。七、标注配置示例7.1 视频矢量标注VideoVector Labels 组合View HeaderLabel the video:/Header Video namevideo value$video / VideoVector namevector toNamevideo / Labels namevideoLabels toNamevideo Label valueRoad background#944BFF/ Label valueBoundary background#98C84E/ /Labels /View7.2 带闭合路径的标签矢量标注VideoVectorLabels 合并标签View Video namevideo value$video / VideoVectorLabels namelabels toNamevideo closabletrue Label valueRoad / Label valueBoundary / /VideoVectorLabels /ViewVideoVectorLabels的参数与VideoVector基本一致并额外提供标签选择相关参数choicesingle|multiple默认single、maxUsages单个标签在任务中的最大使用次数、showInline标签是否同行显示默认true且默认strokeWidth为1fillColor/strokeColor无默认值。详见 videovectorlabels.md 与其参数插页。7.3 视频格式建议由于帧号frame是矢量插值的坐标基准视频的时长与帧率识别准确性至关重要。建议使用 MP4 容器 H.264 (AVC) 视频编码 AAC 音频并转换为恒定帧率建议 30fps确保浏览器播放、帧数统计和标注对齐无误。仓库 video.md 给出了可直接套用的 FFmpeg 转换命令# 提取视频流精确时长秒 DUR$(ffprobe -v error -select_streams v:0 -show_entries streamduration -of defaultnokey1:noprint_wrappers1 input.mp4) # 重新编码为目标格式H.264 AAC恒定 30fps ffmpeg -i input_video.mp4 -c:v libx264 -profile:v high -level 4.0 -pix_fmt yuv420p -r 30 -c:a aac -b:a 128k -to $DUR output_video.mp4同时建议用ffprobe -v error -show_format -show_streams -print_format json input.mp4检查视频参数音频流与视频流时长不一致也会导致总帧数异常。八、结果导出格式Result parametersVideoVector与VideoVectorLabels的标注结果以VideoVectorRegionResult类型序列化输出Kindglobal typedefReturnsVideoVectorRegionResult— Label Studio 格式的序列化视频矢量区域数据字段类型说明original_widthnumber原始视频帧宽度pxoriginal_heightnumber原始视频帧高度pximage_rotationnumber视频帧旋转角度度valueObject标注值主体value.sequenceArray.Object关键帧数组关键帧之间的位置由插值得到value.sequence[].framenumber该关键帧所作用的帧号value.sequence[].enabledboolean自该关键帧起矢量是否可见value.sequence[].closedboolean该关键帧上矢量是闭合多边形还是开放折线value.sequence[].verticesArray.Object顶点对象数组包含坐标、贝塞尔曲线信息与顶点间关系value.labelsArray.string分配给该矢量的标签名数组配合Labels或VideoVectorLabels时示例 JSON 导出{ original_width: 1920, original_height: 1280, image_rotation: 0, value: { sequence: [ { frame: 1, enabled: true, closed: false, vertices: [ { id: point-1, x: 25.0, y: 30.0, prevPointId: null, isBezier: false }, { id: point-2, x: 75.0, y: 70.0, prevPointId: point-1, isBezier: false } ] }, { frame: 30, enabled: true, closed: false, vertices: [ { id: point-1, x: 40.0, y: 45.0, prevPointId: null, isBezier: false }, { id: point-2, x: 80.0, y: 60.0, prevPointId: point-1, isBezier: false } ] } ], labels: [Road] } }解读要点frame: 1与frame: 30是两个关键帧第 130 帧之间顶点的显示位置由线性插值计算与 VideoVectorRegion.jsx 中的interpolateVertices逻辑一一对应prevPointId维护顶点的顺序关系构成路径拓扑isBezier: false表示当前为直线顶点贝塞尔控制点在true时生效并同样参与插值坐标x/y以百分比0–100形式存储在 sequence 中视图层负责百分比到像素的换算源码注释明确说明 “stores coordinates as percentages (0-100) in a keyframesequence”由VideoVectorShape负责转换。九、延伸阅读与源码索引标签定义与默认值VideoVector.js、VideoVectorLabels.jsx区域模型与插值实现VideoVectorRegion.jsx绘制工具与手势判定VideoVector.js工具骨架模式与 SAM2 交互后端的兼容规则skeleton.ts相关标签文档videovectorlabels.md、video.mdSAM2 视频后端接入教程segment_anything_2_video.md掌握了上述标签配置、关键帧插值模型与导出格式你即可在支持的环境中搭建“人工标注关键帧 SAM2 传播 导出插值序列”的完整视频矢量标注流水线并基于value.sequence结构无缝对接下游模型训练或后处理逻辑。【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价