VoTT 不再维护!
一个用于图像和视频资源的开源注释和标注工具。
VoTT 是一个基于 React + Redux 的 Web 应用程序,使用 TypeScript 编写。该项目是使用 Create React App 引导的。
功能包括:
- 标注图像或视频帧的能力
- 可扩展模型,用于从本地或云存储提供商导入数据
- 可扩展模型,用于将标注的数据导出到本地或云存储提供商
VoTT 帮助促进端到端的机器学习流程:
目录
入门指南
VoTT 可以作为原生应用程序安装或从源代码运行。VoTT 也可作为独立的 Web 应用程序使用,并可在任何现代 Web 浏览器中使用。
为您的平台下载并安装发行版软件包(推荐)
VoTT 可用于 Windows、Linux 和 OSX。请从 GitHub Releases 下载适合的平台软件包/安装程序。v2
版本将以 2.x
为前缀。
从源代码构建和运行
VoTT 需要 NodeJS (>= 10.x, Dubnium) 和 NPM
git clone https://github.com/Microsoft/VoTT.git
cd VoTT
npm ci
npm start
重要
当本地使用
npm
运行时,应用程序的 electron 和浏览器版本都会启动。一个主要的区别是 electron 版本可以访问本地文件系统。
作为 Web 应用程序运行
使用现代 Web 浏览器,可以从以下地址加载 VoTT:https://vott.z22.web.core.windows.net
如上所述,Web 版本的 VoTT 不能 访问本地文件系统;所有资产必须通过云项目导入/导出。
V1 和 V2
VoTT V2 是对原始基于 Electron 应用程序的重构和更新。随着 VoTT 的使用和需求增长,V2
作为一个改进和使 VoTT 更加可扩展和易维护的项目启动。此外,V2
使用了更现代的开发框架和模式(React, Redux),并使用 TypeScript 编写。
采用了一些代码质量实践,包括:
- 代码 Linting
- 单元测试和模拟(Jest, Enzyme)
- 代码覆盖率 (CodeCov.io)
- 复杂性分析 (Plato)
所有 V2
的工作都在 master 分支上进行
V1 在哪里
V1
将保留在 v1 分支上。不会有任何修复或更新。
V1 版本发布
1.x 版本仍然可以在 GitHub Releases 下找到。
V2 中的 V1 项目
支持将 V1 项目转换为 V2 格式。打开 JSON 文件时,将弹出一个窗口,确认应用程序在重定向到编辑器屏幕之前是否应转换项目。在此过程中,将在相同的项目目录中生成 .vott
文件,可将其用作后续的主要项目文件。我们建议在转换项目之前备份 V1 项目文件。
使用 VoTT
创建连接
VoTT 是一个“自带数据”(BYOD)的应用程序。在 VoTT 中,连接用于配置和管理源(要标注的资产)和目标(要导出标签的位置)。
连接可以在项目之间设置和共享。它们使用可扩展的提供者模型,因此可以轻松添加新的源/目标提供者。
目前,VoTT 支持:
- Azure Blob 存储
- 必应图片搜索
- 本地文件系统
要创建新连接,请点击左侧导航栏中的 New Connections
(插头)图标:
创建新项目
VoTT 中的标注工作流程围绕项目展开——一组持久化的配置和设置的集合。
项目定义源和目标连接以及项目元数据——包括标注源资产时要使用的标签。
如上所述,所有项目都需要一个源连接和一个目标连接:
- 源连接 - 从哪里提取资产
- 目标连接 - 项目文件和导出数据应存储的位置
项目设置
创建项目后,可以通过点击左侧导航栏中的 Project Setting
(滑块)图标来修改项目设置。项目指标,如访问的资产、标注的资产和每个资产的平均标签数,也可以在此屏幕上查看。
安全令牌
某些项目设置可能包括敏感值,例如 API 密钥或其他共享密钥。每个项目都会生成一个安全令牌,可以用于加密/解密敏感的项目设置。
安全令牌可以在 应用程序设置
中找到,通过点击左侧导航栏底角的齿轮图标查看。
注意: 项目文件可以在多个人之间共享。为了共享敏感的项目设置,所有参与方必须拥有/使用相同的安全令牌。
令牌名称和密钥必须匹配,才能成功解密敏感值。
标记图像
当创建或打开一个项目时,主标签编辑器窗口会打开。标签编辑器由三个主要部分组成:
- 可调整大小的预览窗格,其中包含来自源连接的图像和视频的可滚动列表
- 主要编辑窗格,允许将标签应用于绘制的区域
- 标签编辑窗格,允许用户修改、锁定、重新排序和删除标签
在左侧选择图像或视频后,该图像将加载到主标签编辑器中。然后可以在加载的资产上绘制区域并应用标签。
根据需要,重复此过程以处理其他资产。
标记视频
标记视频类似于标记一系列图像。当从左侧选择一个视频时,它将自动开始播放,播放器上有几个控件,如下所示:
除了正常的视频播放控件外,还有两对额外的按钮。
在左侧,有上一个和下一个帧按钮。点击这些按钮会暂停视频,并根据项目设置移动到下一个合适的帧。例如,如果项目设置的帧提取率为1,这些按钮将使视频向后或向前移动1秒,而如果帧提取率为10,视频将向后或向前移动十分之一秒。
在右侧,有上一个和下一个已标记帧按钮。点击这些按钮会暂停视频并移动到下一个或上一个已经标记区域的帧(如果存在已标记帧)。
视频时间轴上还会显示彩色线条。这些线条指示已访问的视频帧。黄色线条表示仅访问过的帧,而绿色线条表示既访问过又标记过的帧。可以点击这些彩色线条快速导航到指示的帧。
时间轴还可以用于手动浏览视频到任意点,但帧提取率的项目设置始终被遵循。暂停视频时会根据此项目设置移动到最近的帧。通过这种方式,可以为已知包含较少可标记项目的视频部分设置非常低的帧提取率,例如每秒1帧,而为精细控制设置更高的帧提取率,例如每秒30帧。
在视频播放时无法进行标签应用和区域绘制。
导出标签
一旦资产已被标记,它们可以导出为多种格式:
- Azure Custom Vision Service
- Microsoft Cognitive Toolkit (CNTK)
- TensorFlow (Pascal VOC 和 TFRecords)
- VoTT (通用 JSON 方案)
- 逗号分隔值 (CSV)
此外,用户可以选择导出
- 所有资产
- 仅访问过的资产
- 仅标记过的资产
点击左侧导航中的 Export
(导出)图标。选择适当的导出提供程序和要导出的资产。此处也可以调整测试集和训练集的百分比分配。
键盘快捷键
VoTT 提供了一些键盘快捷键,使标记时一只手放在鼠标上变得更容易。它提供了大多数常见的快捷键:
- Ctrl 或 Cmd + C - 复制
- Ctrl 或 Cmd + X - 剪切
- Ctrl 或 Cmd + V - 粘贴
- Ctrl 或 Cmd + A - 全选
- Ctrl 或 Cmd + Z - 撤销
- Ctrl 或 Cmd + Shift + Z - 重做
标签排序
1 到 0 的快捷键被分配给前十个标签。可以使用标签编辑窗格中的上/下箭头图标重新排序这些标签。
标签锁定
可以使用标签编辑窗格顶部的锁定图标锁定标签以便重复标记。也可以通过组合使用 Ctrl 或 Cmd 和标签快捷键来锁定标签,例如 Ctrl+2
会锁定列表中的第二个标签。
编辑器快捷键
此外,编辑页面还提供了一些特殊快捷键来选择标记工具:
- V - 指针/选择
- R - 绘制矩形
- P - 绘制多边形
- Ctrl 或 Cmd + S - 保存项目
- Ctrl 或 Cmd + E - 导出项目
VoTT 允许您使用箭头键以几种不同方式微调边界框。当区域被选中时:
- Ctrl + 方向键 - 移动区域
- Ctrl + Alt + 方向键 - 缩小区域
- Ctrl + Shift + 方向键 - 扩大区域
幻灯片查看器可以通过以下键盘操作进行导航:
- W 或 ArrowUp - 上一个资产
- S 或 ArrowDown - 下一个资产
当视频播放条存在时,它允许使用以下快捷键选择帧:
- A 或 ArrowLeft - 上一帧
- D 或 ArrowRight - 下一帧
- Q - 上一个已标记帧
- E - 下一个已标记帧
鼠标控制
- 两点模式 - 创建区域时按住 Ctrl
- 方形模式 - 创建区域时按住 Shift
- 多选 - 选择区域时按住 Shift
- 排他跟踪模式 - Ctrl + N 阻止帧 UI,允许用户在现有区域上创建区域
发布流程
有关 GitHub/Web 发布和版本的详细信息,请查看我们的发布流程文档
使用以下命令构建 VoTT 可执行文件:
npm run release
有关为发布打包可执行文件的详细信息,请查看我们的PACKAGING.md
合作者
VoTT 最初由 微软商业软件工程 (CSE) 团队 在以色列开发。
V2 由微软位于华盛顿州雷德蒙德的 CSE 团队开发。
贡献 VoTT
有多种方式可以为 VoTT 做出贡献,请查看我们的贡献指南。
该项目采用了 Microsoft 开源行为准则。有关详细信息,请参阅 行为准则 FAQ,或通过 opencode@microsoft.com 与我们联系,提出任何其他问题或意见。