尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

CVAT Points 点集标注详解:从面部关键点操作到源码拆解

CVAT Points 点集标注详解:从面部关键点操作到源码拆解 CVAT Points 点集标注详解从面部关键点操作到源码拆解【免费下载链接】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在 CVAT 中标注面部关键点时Points点集图形模式是最直接的工具。本文带你走一遍界面操作 源码拆解双线路径先用Number of points固定点数完成一次最小闭环再拆开PointsShape/PointsTrack看底层校验与插值逻辑。读完你将掌握点集标注的完整操作并能对照源码解释每一个自动行为。功能定位它解决什么问题官方文档对这一模式开宗明义It is used for face, landmarks annotation etc.用于面部、关键点标注等。与矩形、多边形等区域型图形不同点集Points不封闭成一个面而是由 N 个独立控制点组成的集合体天然适合标注离散坐标而非区域。典型适用场景人脸关键点眼睛、嘴角、鼻尖等 landmark身体姿态关键点pose landmarks任意只需离散坐标、无需包围区域的目标。这决定了它的交互粒度是以点为单位既能整体移动也能单独微调某一个点。最小操作路径打开工具、参数与结束在左侧控制面板选中Points工具弹出 Draw new points 窗口在Label选择器中为这个点集对象选定标签可选在Number of points填入固定点数例如人脸标注的 68 或示例中的 10点击Shape进入绘制模式在画布上依次点击落点点数达到设定值时绘制自动结束或再按一次N、点击顶部面板Done手动结束。关键参数参数取值范围留空默认行为Number of points≥ minimumPoints点集最小为 1不限制点数由用户手动结束绘制从源码看这个输入框并非裸存原值。POLYGON、POLYLINE、POINTS三种类型共用同一输入框见 draw-shape-popover.tsx 第 156 行输入值先经clamp(value, minimumPoints, Number.MAX_SAFE_INTEGER)再Math.floor取整第 168-171 行而minimumPoints由图形类型决定容器侧将Points映射为 1见 containers/.../draw-shape-popover.tsx 第 131-135 行。这与界面上点集至少含一个点的约束相互呼应。交互细节与自动行为分组、结束与编辑自动分组一次绘制从开始到结束之间落下的所有点会自动归为一组彼此视为相互关联整体可被拖拽自动结束numberOfPoints被直接用作本次绘制要落下的点数量计数归零即触发draw(done)——见 drawHandler.ts 第 903 行let size ... : this.drawData.numberOfPoints;与第 929-942 行的sizeDecrement/drawstart/drawpoint事件结束快捷键再按一次N或点击顶部Done按钮删除单个点按住Ctrl点击该点或右键点选Delete point打开编辑器Shift 点击点集对象向已有图形追加新点绘制中导航滚轮缩放、按住滚轮中键拖拽平移方便在高分辨率大图上精确落点。点绘制入口位于 drawHandler.ts 第 1060 行的drawPoints()内部复用drawPolyshape()逻辑。源码拆解数据模型与关键逻辑点集图形模型位于cvat-core包。points-shape.ts 定义了核心类export class PointsShape extends PolyShape { constructor(data, clientID, color, injection) { super(data, clientID, color, injection); this.shapeType ShapeType.POINTS; checkNumberOfPoints(this.shapeType, this.points); } static distance(points, x, y): number { // ... 计算 (x, y) 到图形中所有点的最小欧氏距离 return Math.min.apply(null, distances); } }实现要点distance返回鼠标位置到各点的最小距离而非多边形/矩形的边界距离——点集没有面命中检测只能以单个点为目标这正是删除单个点/微调单点的底层依据。校验逻辑集中在 object-utils.ts 的checkNumberOfPoints第 25-28 行Points类型至少 1 个点否则抛出DataError。这与 UI 中minimumPoints1相互印证。同一文件的checkShapeArea第 74-79 行对Points直接return true说明点集不存在面积过小而无效的约束进一步区别于区域型图形。进阶机制轨迹与单点线性插值选择Track而非Shape时得到的是点集轨迹 points-track.ts。其构造函数对轨迹中每一帧图形都执行checkNumberOfPoints第 26-28 行保证各关键帧点数一致。关键在插值策略interpolatePosition第 31-52 行// interpolate only when one point in both left and right positions if (leftPosition.points.length 2 rightPosition.points.length 2) { return { points: leftPosition.points.map((value, index) value (rightPosition.points[index] - value) * offset), // ... rotation / occluded / outside / zOrder 继承自左关键帧 }; } return { points: [...leftPosition.points], /* ... 其余继承左关键帧 */ };实现要点只有左右两个关键帧都只含 1 个点points数组长度为 2时坐标才按offset线性插值多点点集的中间帧回退为直接复制左关键帧位置zOrder等状态同样继承自左侧。这解释了单点轨迹的操作要求——把Number of points设为 1 并选Track在关键帧间移动点即可让 CVAT 自动填充中间帧再配合Outside、关键帧移动等标准 Track 操作管理对象生命周期。速查与参考操作方式固定点数、达到即自动结束在Number of points填入数值进入绘制点击Shape单帧或Track轨迹结束绘制再按一次N或点击顶部Done删除单个点Ctrl 点击该点或右键 →Delete point编辑已有图形Shift 点击打开编辑器绘制后可整体拖拽或微调单点绘制中导航滚轮缩放按住中键平移参考文件相对仓库根目录文档points-in-shape-mode.md数据模型points-shape.ts、points-track.ts、object-utils.tsUI 与画布draw-shape-popover.tsx、drawHandler.ts【免费下载链接】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),仅供参考
返回列表