《图像标注工具调研》
- qtxu
- 2020年07月30日
一、任务简介
对于监督学习算法而言,数据质量决定了任务结果的上限,而算法只是在不断逼近这个上限,对于图像深度学习任务来说,图片本身和图片标注的label的质量和数量,就极为重要。
在计算机视觉中,训练算法的数据主要有三种类型:
- 分类:图片 + 分类器训练标签( ResNets… )
- 目标检测:包围框 + 检测器标签( YOLOv3,Faster R-CNN ……)
- 语义分割:多边形 + 用于分割应用程序标签( Mask R-CNN … )
注意下图 语义分割(左边蓝色)与目标检测(右边紫色)的差异:
图片的label数据非常珍贵,除了下载别人标注好的公开数据集之外,面对自己特有的任务或特有数据 ,就只能自己亲手标注。但是,标注是个非常耗时耗力的工作,一个便捷的标注工具就显得极为重要。
二、标注工具介绍
如果你想标注大量数据从而展开业务,一个完美的标注工具需要满足以下5个要求:
- 界面美观:直观的用户体验(UX),使你临时聘用的每个标注人员都可以立即开始工作;❤️
- 多人协作:提供WEB API,能实现低成本多人协作;❤️❤️❤️
- 项目管理:先进的项目管理功能,方便多人协作;❤️❤️
- 各类标注:足够多的标注类别,以完成任何标注任务(分类、目标检测、语义分割);❤️
- 辅助脚本:提供提高效率的自动化工具或者脚本,便于标注数据只能被模型使用。❤️
但是非常遗憾,经过调研目前比较活跃的图像标注项目,都不能同时达到以上设计目标。所以,在选择工具的时候,要有所取舍,要清楚,自己的最大的需求是什么。
本文更关注第2点(多人协作),所以按照能否多人协作同时标注,将标注工具分为两类:(1)单机版(2)联机版。
1 单机版
labelImg
Labelme适用于图像检测任务的数据集制作:
它来自下面的项目:https://github.com/tzutalin/labelImg
其中标签存储功能和“Next Image”、“Prev Image”的设计使用起来比较方便。
该软件最后保存的xml文件格式和ImageNet数据集是一样的。
优点:
- 安装部署方便
- 输出格式标准
缺点:
- 无法多人协作。
Labelme
Labelme适用于图像分割任务的数据集制作:
它来自下面的项目:https://github.com/wkentaro/labelme
该软件实现了最基本的分割数据标注工作,在save后将保持Object的一些信息到一个json文件中
RectLabel
RectLabel适用于图像检测任务的数据集制作:
它来自下面的项目:
https://rectlabel.com/
这是一个适用于Mac OS X的软件,而且可以在apple app store中直接下载。
VIA
VGG Image Annotator (VIA)是一款开源的图像标注工具,可标注矩形、圆、椭圆、多边形、点和线。标注完成后,可以导出为csv和json文件格式。一个非常容易使用的标注器,其由牛津机器人实验室开发。它被编码在单个的 html/js 文件里,所以它很容易进行开发!
http://www.robots.ox.ac.uk/~vgg/software/via/
缺点:
- 界面丑
- 输出格式特殊,需自己写脚本转换。
2 联机版
LabelStudio
Label Studio是一个开源的,可配置的数据注释工具。 其目的是使您能够使用标准化输出格式的最方便的界面标记不同类型的数据。
优点:
- 界面相对美观
- 部署方便
- 配置方便,有多种内置模板
- 可以明晰了解任务的完成度及每条任务的完成时间
- 支持图像、文本和音频等多种数据格式和多种任务数据的标注
缺点:
- 导入图像数据不太方便
- 速度稍慢,尤其是保存标注结果并进行下一条标注时
- 没有账号体系,暂不支持分角色与权限;
VoTT
VoTT 是由微软开发的,它提供了非常棒的用户体验,这可能会在你标注时为你节省大量的时间和精力。而且,创建项目也很直接,所以你可以不用深入阅读其文档就能使用它。
优点:
- 用户界面UX 是完美的,它有一个黑色的主题和一个跟随鼠标的虚线网格,所以很容易知道从哪里开始标注一个边界框。这看起来像是一种额外嘉奖,但是相信我,这对于标注来说真的很重要!
- 它提出使用深度学习算法来自动检测对象(它附带了在 COCO 数据集上训练的 SSD 模型)
- 它是一个 web 应用程序和一个电子应用程序。这使你可以将它作为一个重客户端使用,也可以将它作为 web 浏览器中运行的应用程序来使用
缺点:
- 要使用 web 应用程序版本,你需要将数据托管在微软的云计算服务 Azure 上,只能和微软 云存储绑定公有云使用,限制了隐私数