文章目录
1. 概述
- 我并没有看过源码,只是看了官方README,并尝试使用了VoTT。所以,肯定很多细节并不清楚。
1.1. VoTT 的功能
- 对图像或视频标定框(bounding box)
- 不规则的标注结果(图像分割)
- 对同一个标定框(bbox)标注多个类别的标签(tags)
- 手动设置输入视频的帧率(fps)
- 内置模型自动标定bbox
- 标注结果统计以及可视化
- 标注结果导出为多种形式
- 前后帧标定框关联
- 对视频片段标定结果
- 自动浏览视频片段
- 导入标注好的bbox到项目
1.2. 下载与安装
1.3. 使用感想
- 我用VoTT进行标注的时间超过了50小时,写一些自己的感想。
- 优势:
- 安装方便,直接下载exe文件即可。
- 界面好看(这非常重要,毕竟标注的时间一般都很长,而且枯燥)。
- 功能上满足我的需求(视频选择帧+标注框+同一个框多标签)
- 劣势(也许通过修改源码能够实现,但当前release不能实现):
- 不能导入已有的标注结果(如bbox)。
- 同一个项目在不同电脑不能使用。
- Connection对我来说非常鸡肋。
- Connection的基本作用就是,可以导入不同地方的数据作为输入。
- 但我自己的使用中,只会用到本地文件作为输入,而不会用到VoTT中额外提供的Bing/Azure等功能。
- Project功能对我来说完全没用,还增加了很多工作量
- 每个project对应两个Connection,如果Connection中的视频太多好像会比较卡,所以会建立很多个Project。
- Project有Security Token相关内容,会对项目的部分信息进行加密,这导致Project换台电脑就打不开了。
- 如果修改了Project的参数,会导致一些意想不到的错误。比如,如果修改了FPS,就会导致一些标注好的bbox看不到。
- 程序不稳定,经常会报错
- 使用键盘标注多个标签时,如果键盘点击速度太快,就会报错。
- 项目多了之后,经常会重启程序。家里的电脑配置特别好,重启没什么影响。单位的电脑配置不行,重启一下就要命了……
- 项目多了以后(现在有70+个项目),打开历史项目时,有时候会看不到标注好的bbox(如果export会发现少了很多bbox)……但如果你刚好移到标注过的那帧时,bbox又出现了(这时如果export,那缺少的这一个bbox就又会出现了)
2. 入门基本使用
- 本章的目标,简单过一遍VoTT的使用过程。部分功能的详细说明将在第三章中介绍。
- 本章内容包括:
- 准备工作
- 新建项目
- 标注bbox
- 导出标定结果
2.1. 准备工作
- 将所有待标注的视频或图像放到一个文件夹中。
- 注意,后续只处理该文件夹中的视频与图像,不会处理子文件夹中的数据。
- 新建一个目录,用于保存VoTT项目信息以及项目结果输出。
- 准备好标注类别(tags)。
2.2. 新建项目
- 在打开VoTT后就能看到新建项目选项。
- 在新建项目目录中,主要要填写的内容包括
- Display Name:项目名称,随便写
- Security Token:用来加密一些敏感信息,我也不知道干什么用的,一般就选默认
- Source Connection:原始数据路径(后面会单独介绍Connection)
- Target Connection:目标数据存放路径(后面会单独介绍Connection),保存标签以及项目信息
- Description:项目描述
- Frame Extraction Rate(frames per a video second):视频帧率
- Tags(截图中没有包括):待标注的标签列表(如COCO 80类物体的名称)。更多 Tags 相关内容请参考
3.3. Tags 设置
- Connection介绍
- 所谓Connection,其实就是数据路径。
- 分类:VoTT中提供了三种 Azure Blob Storge,Bing Image Search,Local File System。
- 我一般使用的就是 Local File System,需要设置的参数就是 Display Name(在新建项目的Connection相关配置中会展示这个Display Name,我一般设置为文件夹名),Description,Folder Path(本地文件夹路径)。
- 设置完成后,在新建项目的 Source/Target Connection 下拉菜单中就能找到对应的选项
- Connection在左边菜单栏中有单独一个选项
2.3. 标注bbox
- 基本流程分为下面几个步骤
- 选择视频帧/图像
- 视频帧更详细情况请参考
3.2. 视频帧相关
- 视频帧更详细情况请参考
- 画框
- 设置标签(tags),同一个bbox可对应多个tags
- 选择视频帧/图像
- 上述基本步骤示意图如下
- 注意,图中bbox对应了三个类别的tags(对应3/6/8的标签)
- 画框时可使用内置SSD模型自动获取bbox
- bbox的质量可能不是特别高,但也能省一些力气。
- 更多详细信息可以参考
3.1. 自动标定
- 示意图如下(先点击博士帽按钮,就可以自动获取标定框)
- 其他细节:
- 在画/删框、设置/删除tags后,会自动保存标注结果,无序手动设置。
- 在
3.5. 标框的第三种方式
中介绍了一些标注的小工具的使用。
2.4. 导出标注结果
- 在标注页面中,可快速将结果导出,如下图所示。
- 具体导出设置可以参考
- 具体导出结果类型等细节请参考
3.4. 标注结果导出
3. 功能详解
3.1. 自动标定(Active Learning)
- 实现的功能:对图像/视频帧结果进行画框。
- 快捷点:
ctrl+D
- 在左侧菜单栏中,有自动标注的选项,包括的功能有
- Model Provider:默认有COCO SSD模型可以使用,也可以自己导入本地模型或url模型地址。
- Predict Tag:使用自动标注时,需不需要标注bbox的类别。如果没有选中,则只标框,不标结果。
- Auto Detect:在转换图像/视频帧时,是否自动执行自动标注。
- 需要看源码才能了解的功能
- 自定义模型要如何导入,这个从源码中研究模型的输出,不知道PyTorch等行不行。
3.2. 视频帧相关
- 在VoTT中,视频会自动根据输入帧率成帧。
- 视频帧类别分为三类(如下图所示):
- 第一类:包含bbox的视频帧(绿色的竖线)
- 第二类:单独浏览过但没有标注结果的视频帧(黄色的竖线)
- 第三类:没有单独浏览过的视频帧(没有竖线位置的视频帧)
- 所谓单独浏览,指的是单独停下来到某一帧
- 在播放视频时,可能浏览了所有帧,但不会都标黄色竖线。
- 视频帧的选择
- 鼠标直接在进度条中选择,选中 “没有单独浏览过的视频帧” 后会将当前帧转换为 “单独浏览过但没有标注结果的视频帧”。
- 上一帧/下一帧(Previous/Next Frame):选择上一帧或下一帧,快捷键为
A/D
。- 按照输入设置中的视频帧率提取帧。
- 这里选择的上下帧就是临近帧,与帧的类别无关。
- Previous Tag Frame/Next Tag Frame:快捷键为
Q/E
- 这里选择的是第一类帧,即包含bbox的视频帧。
3.3. Tags 设置
-
VoTT中选中bbox的一些表现形式(如果bbox为实线表示选中,虚线表示未选中),如下图所示
-
对于选中的bbox设置tag有以下两种方式
- 鼠标选择左侧的tags列表
- Tags列表中的钱10类可通过快捷键设置(快捷键就是tags右边中
[x]
的信息)
-
在标同一张图片中的多个bbox时
- 如果使用快捷键选择tag,每个bbox默认标了一个tag后就会选择后一个bbox。
- 当选择到最后一个bbox时,不会跳转到第一个bbox从头开始,而是会在最后一个bbox上重复进行标记。
-
Tag工具栏中还包括一些其他功能,比如reording/lock
- reording就是改变tag的顺序,通过下图中的上下箭头实现
- lock不知道是干什么用的,没看懂
A tag can be locked for repeated tagging using the lock icon at the top of the tag editor pane.
-
如何快速设置Tags
- VoTT支持的方式就是在创建项目或项目设置中的
Tags
选项中一个个输入,这种方式非常不方便(比如要把COCO80类输入进去……)。 - 可编程的修改方式:通过修改VoTT项目文件
my_project.vott
实现- 配置文件总体是一个json文件,其中包含一个参数
tag
列表,每个tag包含两个属性name/color
,name就是字符串,color是RGB字符串,如#008000
。 - 整体结构形如
"tags": [{"name": "name1", "color": "#595959"}, ...]
- 配置文件总体是一个json文件,其中包含一个参数
- 注意,有两种方式可以打开已有VoTT项目
- 方式一:手动打开.vott文件。
- 方式二:直接右侧选中最近打开的项目。
- 当使用修改
.vott
的方法新建tags后,第一次打开项目时,只能用方式一打开,如果用方式二会导致新增的tags消失。
- VoTT支持的方式就是在创建项目或项目设置中的
3.4. 标注结果导出
- 在介绍导出功能前,先明确几个定义:
- 视频帧的分类:详情请看
3.2.
中内容,分为三类,第一类对应Tagged,第二类对应Visited,第三类就是没有标签。 - 视频/图片的Visited/Tagged属性,如下图所示(看过没标过的是Visited,标过的是Tagged)
- 视频帧的分类:详情请看
- 导出功能有单独的菜单栏(如下图所示),包括三个选项
- 导出数据形式(六种,就不细说了)
- 导出数据
- All Asserts:所有数据
- Only Visited Assets:仅Visited相关数据
- Only Tagged Assets:仅Tagged相关数据
Include Images
:导出数据中是否需要包含图片- 举例:导出为PASCAL VOC形式时,数据如下
3.5. 标框的第三种方式
- 标框(bbox)的方法主要有三种,本节主要介绍第三种方式。
- 自己直接画
- 先用Active Learning标再调整
- 复制其他图片/视频帧的bbox到当前帧:这种方式适合视频中连续帧的标注。
- 在标注页面上,有几个关于regions(就是bbox)的操作:复制/剪切/黏贴/删除regions
- regions复制/剪切/粘贴/全选操作对应的快捷键是
ctrl+c/x/v/a
- 可以在当前帧进行标注,然后全选+复制+选择下一帧+粘贴,然后调整bbox。
- regions复制/剪切/粘贴/全选操作对应的快捷键是
3.6. 其他没有详细研究的内容
- 在
Project Settings
中有标定结果可视化 - 多边形标定
- 放大/缩小(不只是图像放大/缩小,连整体UI都放大/缩小了,使用tag锁定快捷键,如ctrl+0就恢复默认尺寸了)
- 多人协同
- Security Token