1. 概述

  • 我并没有看过源码,只是看了官方README,并尝试使用了VoTT。所以,肯定很多细节并不清楚。

1.1. VoTT 的功能

  • 对图像或视频标定框(bounding box)
  • 不规则的标注结果(图像分割)
  • 对同一个标定框(bbox)标注多个类别的标签(tags)
  • 手动设置输入视频的帧率(fps)
  • 内置模型自动标定bbox
  • 标注结果统计以及可视化
  • 标注结果导出为多种形式
  • 前后帧标定框关联
  • 对视频片段标定结果
  • 自动浏览视频片段
  • 导入标注好的bbox到项目

1.2. 下载与安装

  • 下载:
  • 安装:
    • 只尝试了使用win下的二进制文件,点击运行就行……

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后就能看到新建项目选项。
    • image-20201127135303026
  • 在新建项目目录中,主要要填写的内容包括
    • 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 设置
    • image_1ef9hmp4l11ii19ho9rij5n2rsm.png-82.3kBimage_1ef9hnnq1cas1lcrvkriec183t13.png-30.3kB
  • Connection介绍
    • 所谓Connection,其实就是数据路径。
    • 分类:VoTT中提供了三种 Azure Blob Storge,Bing Image Search,Local File System。
    • 我一般使用的就是 Local File System,需要设置的参数就是 Display Name(在新建项目的Connection相关配置中会展示这个Display Name,我一般设置为文件夹名),Description,Folder Path(本地文件夹路径)。
      • image_1ef9ikske1tbg123o1vc3b2317491t.png-45.2kB
    • 设置完成后,在新建项目的 Source/Target Connection 下拉菜单中就能找到对应的选项
      • image_1ef9im5601lq3m2e1hparm41bbg2a.png-19.3kB
    • Connection在左边菜单栏中有单独一个选项
      • image_1ef9itqod2f713oj1bn2nn61mng2n.png-72.8kB

2.3. 标注bbox

  • 基本流程分为下面几个步骤
    • 选择视频帧/图像
      • 视频帧更详细情况请参考 3.2. 视频帧相关
    • 画框
    • 设置标签(tags),同一个bbox可对应多个tags
  • 上述基本步骤示意图如下
    • 注意,图中bbox对应了三个类别的tags(对应3/6/8的标签)
    • image_1ef9jcja195f1a9u1v98b1d13ns34.png-741.9kB
  • 画框时可使用内置SSD模型自动获取bbox
    • bbox的质量可能不是特别高,但也能省一些力气。
    • 更多详细信息可以参考 3.1. 自动标定
    • 示意图如下(先点击博士帽按钮,就可以自动获取标定框)
    • image_1ef9jhcam4rq1l632cj12dj7sc3k.png-714.2kB
  • 其他细节:
    • 在画/删框、设置/删除tags后,会自动保存标注结果,无序手动设置。
    • 3.5. 标框的第三种方式中介绍了一些标注的小工具的使用。

2.4. 导出标注结果

  • 在标注页面中,可快速将结果导出,如下图所示。
    • image_1ef9jujg7dn61cchhum14mdv2741.png-742.3kB
  • 具体导出设置可以参考
    • image_1ef9jvj4q1g4h1hal10vd1ukd18ae4e.png-71.2kB
  • 具体导出结果类型等细节请参考 3.4. 标注结果导出

3. 功能详解

3.1. 自动标定(Active Learning)

  • 实现的功能:对图像/视频帧结果进行画框。
  • 快捷点:ctrl+D
  • 在左侧菜单栏中,有自动标注的选项,包括的功能有
    • Model Provider:默认有COCO SSD模型可以使用,也可以自己导入本地模型或url模型地址。
    • Predict Tag:使用自动标注时,需不需要标注bbox的类别。如果没有选中,则只标框,不标结果。
    • Auto Detect:在转换图像/视频帧时,是否自动执行自动标注。
    • image_1ef9kc9551bc855rego1304kdi4r.png-59.1kB
  • 需要看源码才能了解的功能
    • 自定义模型要如何导入,这个从源码中研究模型的输出,不知道PyTorch等行不行。

3.2. 视频帧相关

  • 在VoTT中,视频会自动根据输入帧率成帧。
  • 视频帧类别分为三类(如下图所示):
    • 第一类:包含bbox的视频帧(绿色的竖线)
    • 第二类:单独浏览过但没有标注结果的视频帧(黄色的竖线)
    • 第三类:没有单独浏览过的视频帧(没有竖线位置的视频帧)
    • image_1ef9kmn1j1ho9lfr48a9fk2s858.png-407.1kB
  • 所谓单独浏览,指的是单独停下来到某一帧
    • 在播放视频时,可能浏览了所有帧,但不会都标黄色竖线。
  • 视频帧的选择
    • 鼠标直接在进度条中选择,选中 “没有单独浏览过的视频帧” 后会将当前帧转换为 “单独浏览过但没有标注结果的视频帧”。
    • 上一帧/下一帧(Previous/Next Frame):选择上一帧或下一帧,快捷键为 A/D
      • 按照输入设置中的视频帧率提取帧。
      • 这里选择的上下帧就是临近帧,与帧的类别无关。
    • Previous Tag Frame/Next Tag Frame:快捷键为 Q/E
      • 这里选择的是第一类帧,即包含bbox的视频帧。
    • image_1ef9ngfg91i42abs1sjhp3410p6f.png-649.6kB

3.3. Tags 设置

  • VoTT中选中bbox的一些表现形式(如果bbox为实线表示选中,虚线表示未选中),如下图所示

    • image_1ef9levqq1qlnkk1g3f83516p05l.png-433.9kB
  • 对于选中的bbox设置tag有以下两种方式

    • 鼠标选择左侧的tags列表
    • Tags列表中的钱10类可通过快捷键设置(快捷键就是tags右边中[x]的信息)
    • image_1ef9lob3nmsn1bfqv8cco4r4d62.png-484.7kB
  • 在标同一张图片中的多个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.
    • image_1ef9nkdj417cgohv173b14o016rm6s.png-17.1kB
  • 如何快速设置Tags

    • VoTT支持的方式就是在创建项目或项目设置中的Tags选项中一个个输入,这种方式非常不方便(比如要把COCO80类输入进去……)。
    • 可编程的修改方式:通过修改VoTT项目文件 my_project.vott 实现
      • 配置文件总体是一个json文件,其中包含一个参数 tag 列表,每个tag包含两个属性name/color,name就是字符串,color是RGB字符串,如#008000
      • 整体结构形如 "tags": [{"name": "name1", "color": "#595959"}, ...]
    • 注意,有两种方式可以打开已有VoTT项目
      • 方式一:手动打开.vott文件。
      • 方式二:直接右侧选中最近打开的项目。
    • 当使用修改.vott的方法新建tags后,第一次打开项目时,只能用方式一打开,如果用方式二会导致新增的tags消失。
      • image_1ef9qknelsrv11bnialatc1o0k9n.png-59.7kB

3.4. 标注结果导出

  • 在介绍导出功能前,先明确几个定义:
    • 视频帧的分类:详情请看 3.2. 中内容,分为三类,第一类对应Tagged,第二类对应Visited,第三类就是没有标签。
    • 视频/图片的Visited/Tagged属性,如下图所示(看过没标过的是Visited,标过的是Tagged)
      • image_1ef9obmcg7jf18etql1m8d67e7m.png-805.1kB
  • 导出功能有单独的菜单栏(如下图所示),包括三个选项
    • image_1ef9ofrpf4gkkrnr0q1r4f8st83.png-71.3kB
  • 导出数据形式(六种,就不细说了)
    • image_1ef9p91a1eek1urv8781m701ftr8t.png-11.8kB
  • 导出数据
    • All Asserts:所有数据
    • Only Visited Assets:仅Visited相关数据
    • Only Tagged Assets:仅Tagged相关数据
  • Include Images:导出数据中是否需要包含图片
  • 举例:导出为PASCAL VOC形式时,数据如下
    • image_1ef9pdl468d115na1nebfpbqfd9a.png-21.7kB

3.5. 标框的第三种方式

  • 标框(bbox)的方法主要有三种,本节主要介绍第三种方式。
    • 自己直接画
    • 先用Active Learning标再调整
    • 复制其他图片/视频帧的bbox到当前帧:这种方式适合视频中连续帧的标注。
  • 在标注页面上,有几个关于regions(就是bbox)的操作:复制/剪切/黏贴/删除regions
    • regions复制/剪切/粘贴/全选操作对应的快捷键是 ctrl+c/x/v/a
    • 可以在当前帧进行标注,然后全选+复制+选择下一帧+粘贴,然后调整bbox。
    • image_1ef9oscvevk11n81bpj19blhjp8g.png-452.6kB

3.6. 其他没有详细研究的内容

  • Project Settings 中有标定结果可视化
    • image_1ef9o8c7oenrjaukuq9d100d79.png-127.8kB
  • 多边形标定
  • 放大/缩小(不只是图像放大/缩小,连整体UI都放大/缩小了,使用tag锁定快捷键,如ctrl+0就恢复默认尺寸了)
  • 多人协同
  • Security Token
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐