CVAT 键盘快捷键完全攻略:标注效率的秘密武器
【免费下载链接】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(Computer Vision Annotation Tool)把高频标注操作——保存、撤销、画形状、切帧、移摄像机——全部搬到了键盘上。本文按真实任务场景拆解这套 CVAT 快捷键体系,每个键位都能追溯到源码行号,帮你在不碰鼠标的情况下把标注节奏提起来。
定位与原理 🔎
CVAT 的快捷键系统核心是 shortcuts-reducer.ts:它维护一份全局 keyMap(键位→动作的映射表),并提供formatShortcuts()把原始组合键(如ctrl+shift+z)格式化成帮助面板里的展示文本。各工作区组件再用自己的componentShortcuts对象声明键位,并通过registerComponentShortcuts()注册进来;每个条目带sequences(实际绑定的按键)和scope(生效范围,比如标注页、对象侧栏、3D 工作区)。涉及的子模块:
- 状态机:shortcuts-reducer.ts,负责键位表合并、冲突检测(
conflictDetector)和自定义更新; - 组件注册:各工作区组件文件内的
componentShortcuts常量,如 top-bar 播放器区 的帧导航键; - 帮助面板:按 F1 打开,内容就是格式化后的 keyMap(见 header.tsx 中的注册)。
核心实操
场景一:边标边保命——保存、撤销与防误触
| 快捷键 | 功能 | 定义位置 |
|---|---|---|
Ctrl+S | 保存当前作业 | save-annotations-button.tsx#L24-L24 |
Ctrl+Z | 撤销上一步对象操作 | left-group.tsx#L42-L47 |
Ctrl+Shift+Z/Ctrl+Y | 重做(两种写法都认) | left-group.tsx#L48-L53 |
Tab | 临时"锁住"AI/OpenCV 交互算法 | left-group.tsx#L54-L59 |
场景技巧:开着 AI 辅助工具时,Tab会延迟算法运行(代码里叫 "algorithm blocker"),等你手动调完顶点再松开,模型就不会把你的草稿"抢走"重画;保存成功时顶栏会有加载提示,可放心继续。
场景二:批量画对象——N 键重画、Tab 循环、锁定与删除
| 快捷键 | 功能 | 定义位置 |
|---|---|---|
N | 用上次参数重画同类形状 | controls-side-bar.tsx#L82-L88 |
Shift+N | 删掉选中形状并从头重画 | controls-side-bar.tsx#L89-L94 |
Tab/Shift+Tab | 下一个 / 上一个对象,并居中 | canvas-wrapper3D.tsx#L114-L125 |
L | 锁定 / 解锁当前对象 | objects-list.tsx#L102-L107 |
Del/Shift+Del | 删除对象 / 强制删除已锁定对象 | objects-list.tsx#L144-L149 |
M/Alt+M | 合并模式 / 分割模式 | controls-side-bar.tsx#L107-L118 |
场景技巧:N不是"新建",而是"用上一把刷子再刷一次"——标签、颜色都沿用上次参数,连画 50 个同类框时省掉每次选标签的时间;画完一组后按Tab循环过一遍,顺手L锁住已确认的,能防住后续误拖。
场景三:帧间穿梭——逐帧、播放与直达目标帧
| 快捷键 | 功能 | 定义位置 |
|---|---|---|
F | 下一帧 | player-buttons.tsx#L61-L66 |
D | 上一帧 | player-buttons.tsx#L67-L72 |
Space | 播放 / 暂停 | player-buttons.tsx#L109-L114 |
`(波浪键,界面显示为~) | 焦点跳到帧号输入框 | player-navigation.tsx#L65-L71 |
场景技巧:排查某个可疑帧时,`一下直接敲帧号回车,比F连按几十下快得多;日常校检则用Space播放 +Ctrl+Z回退,等于"边放片边改错"。
场景四:画面调整——旋转与粘贴
| 快捷键 | 功能 | 定义位置 |
|---|---|---|
Ctrl+R | 画面顺时针旋转 90° | controls-side-bar.tsx#L64-L69 |
Ctrl+Shift+R | 画面逆时针旋转 90° | controls-side-bar.tsx#L70-L75 |
Ctrl+V | 从 CVAT 内部剪贴板粘贴形状 | controls-side-bar.tsx#L76-L81 |
场景技巧:截图素材拍歪了先Ctrl+R转正再画,旋转是整体变换,所有已画对象跟着转,不会错位;Ctrl+V的"剪贴板"是 CVAT 自己的内部剪贴板,配合复制形状使用,跨任务搬形状很顺手。
完整流程走查
- 打开一个作业,按
F1→ 弹出快捷键帮助面板,你当前生效的全部键位一目了然(F1定义于 header.tsx#L78)。 - 第一次画形状用鼠标选好类型和标签 → 之后一律按
N,同参数形状连续落画。 - 画完一批 →
Tab循环选中逐个检查,确认的按L锁定。 - 每完成一小段按
Ctrl+S→ 顶栏出现保存提示,落库完成后再继续。 - 校检阶段
Space播放 +F/D逐帧核对,发现错框Ctrl+Z或直接Shift+N重画。 - 全部完成后回到作业页顶部菜单导出数据集(后端导出入口见 dataset_manager)。
进阶:3D 点云标注的摄像机键位 🎥
CVAT 的 Standard 3D 工作区(点云、LiDAR 数据)单独注册了一套摄像机控制键,作用域限定在3D_ANNOTATION_WORKSPACE,在 2D 页面上按了不会有反应。这套键位让你不用摸鼠标滚轮就能调整观察视角,是标 3D 框(cuboid)的核心效率来源。
| 快捷键 | 功能 | 定义位置 |
|---|---|---|
Alt+I/Alt+K | 摄像机放大 / 缩小 | canvas-wrapper3D.tsx#L102-L113 |
Alt+U/Alt+O | 摄像机上移 / 下移 | canvas-wrapper3D.tsx#L78-L89 |
Alt+J/Alt+L | 摄像机左移 / 右移 | canvas-wrapper3D.tsx#L90-L101 |
Shift+方向键 | 调整摄像机俯仰角(pitch) | canvas-wrapper3D.tsx#L72-L77 |
Tab/Shift+Tab | 切换并居中显示下一个 / 上一个对象 | canvas-wrapper3D.tsx#L114-L125 |
个性化定制
默认键位不合手时,直接改对应组件里的sequences数组即可。比如把重做从Ctrl+Y改成你习惯的Ctrl+D(以 left-group.tsx 为例):
// 改动前 REDO: { name: 'Redo action', sequences: ['ctrl+shift+z', 'ctrl+y'], }, // 改动后 REDO: { name: 'Redo action', sequences: ['ctrl+shift+z', 'ctrl+d'], },注意两点:每个条目必须带scope声明作用域,注册时 shortcuts-reducer.ts 里的conflictDetector会自动检查新键位是否与其他动作撞车(冲突时会被自动改判,不会静默双绑定);改动属于前端源码修改,需要重新构建前端后才能生效。
常见坑与对策
- 现象:按
N、F等单键没反应。→原因:焦点落在文本输入框(比如帧号输入框)里,浏览器优先给输入框处理按键。→解法:先点一下画布或按Esc/Tab把焦点移出输入框,再按键位。 - 现象:帮助面板里显示的键位和我按的键对不上(比如显示
~)。→原因:displayedSequences与sequences分开定义,CVAT 用~展示更易读,实际绑定的是`键(见 player-navigation.tsx#L65-L71)。→解法:以面板展示为准去键盘上找对应物理键,别按字符硬找。 - 现象:
N、Ctrl+V等绘制类快捷键整体失效。→原因:任务标签为空或当前帧已删除时,侧栏控件被禁用(controlsDisabled,见 controls-side-bar.tsx#L164-L356)。→解法:先给任务配上标签,或换到未删除的帧。 - 现象:
Tab按下去是浏览器切焦点,不是"下一个对象"。→原因:页面焦点在原生可聚焦元素上且事件未被拦截。→解法:把焦点移回标注画布区域再按;所有组件 handler 里都调用了event.preventDefault()(如 left-group.tsx#L96-L99),只要事件能到达 CVAT 就会被正确接管。 - 现象:3D 摄像机键(
Alt+I等)在 2D 工作区按了没反应。→原因:这些键的scope是3D_ANNOTATION_WORKSPACE,只在点云作业生效。→解法:确认当前打开的是 3D 类任务且处于 Standard 3D 视图。
写在最后
CVAT 的快捷键不是零散技巧,而是一张带作用域、有冲突检测的完整键位表——F1面板就是它的实时说明书。把保存/撤销、N重画、帧导航三组键练成本能,鼠标只剩"画第一个点"一件事。
扩展资源:
- 键位状态机与冲突检测源码:cvat-ui/src/reducers/shortcuts-reducer.ts
- 帧导航与帧号输入实现:cvat-ui/src/components/annotation-page/top-bar/player-navigation.tsx
- 2D 画布交互源码:cvat-canvas/src/typescript/interactionHandler.ts
现在就打开一个作业,按F1,挑三组键位练十分钟——明天你会回来感谢自己的。
【免费下载链接】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),仅供参考