HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

蘑菇街如何通过构建平台搞定数据标注难题?

  • 2019-11-26
  • 本文字数:3665 字

    阅读完需:约 12 分钟

蘑菇街如何通过构建平台搞定数据标注难题?

数据标注行业流淌这么一句话:“有多少智能,就有多少人工”。大量的训练数据是进行深度学习的前提,数据的质量决定了模型的上限,而训练数据产生离不开数据标注,数据标注作为机器学习工程中重要的一环,是构建 AI 金字塔的基础。以旷世科技 AI 独角兽为例,它的标注员工多达 405 人,占公司员工比例的 17.2 %


在许多学术界和工业界人士努力下,先后在多个领域诞生了开放数据集,从入门的 MNIST,再到大名鼎鼎的 Image Net,涵盖了通用场景。但在实际的业务通常碰到某些细分领域没有开放数据集,比如服装的类型和风格,这就要求自己构建训练数据集,或自力更生,或临时雇用外包人员(自己提供工具),甚至全权委托给专业标注公司(无需提供标注工具,成本高)。蘑菇街有大量数据标注的需求,综合成本、效率等因素考虑,我们建设了统一的标注平台,支撑众多的标注业务,部分样图请见如下。


常见的标注场景

从领域角度,蘑菇街的机器学习业务可分为 CTR(点击通过率)、计算视觉和 NLP 三类,其中 CTR 为排序推荐相关业务,这类业务通过埋点收集数据。对于大部分计算视觉和 NLP 的训练任务,需要标注构建数据集。


不仅于蘑菇街,放眼业界,常见的标注场景可以分为如下两大类(音频的场景相对较少,不在讨论范围内):


  • 计算视觉

  • 分类:对图片和视频进行分类,例如服装颜色、类型分类等。

  • 分割:对图片进行分割,比如从交通图像分割出道路,从服装图像分割出裤子、上衣等。

  • 目标检测:通常采用矩形框圈出目标物体,并贴上标签,比如圈出服装图像中的鞋子,交通图像中的汽车。

  • NLP

  • 分类:对文本进行分类,比如情感分类。

  • 实体识别:从文本提取出具有特定意义的实体,比如从商品描述中标注商品名称,描述商品的形容词等。

  • 翻译:不同语言之间的转换,如英译中。

开源的标注工具

Github 诞生了许多开源的标注工具,涵盖了计算视觉、NLP 等诸多领域,特别在计算视觉方面,许多优秀的开源项目如雨后春笋一般,其中不乏有如 OpenCV 社区和 Microsoft 等商业公司的支持。笔者梳理了部分计算视觉、NLP 等领域部分人气较好的标注项目,如下表所示。


项目适合场景说明桌面/Webstars
labelImg目标检测(图像)采用矩形框标注目标,结果保存至本地 xml 文件桌面软件8.8K
cvat目标检测、分割、分类任务(图像和视频)功能强大,支持图像和视频的多种标准场景,支持导出多种格式结果文件Django Web 服务2.6K
labelme目标检测、分割、分类任务(图像)功能较为强大桌面软件3.5K
vatic目标检测、目标跟踪(视频)面向视频的目标检测和目标跟踪,结果保存至 DB 中Web 服务0.4K
doccanoNLP 命名实体识别、文本分类、翻译任务功能强大,支持多种语言,支持用户管理,结果保存至 SQL DB 中Django Web 服务1.9K
Chinese-AnnotatorNLP 命名实体识别、文本分类、关系提取面向中文的智能文本标注,结果保存至 Mongo DB 中Django Web 服务0.9 K
audio-annotator音频分类标注面向音频片段的分类标注Web 服务0.2K


这些优秀的开源项目专注于细分的领域,适合通用场景下的标注,用户经安装和配置即可开展标注工作,有些还甚至支持生成训练样本,这对于规模较小,算法业务较为单一的团队很适合。但是对于算法业务复杂,数据量大,场景特殊的公司而言,直接基于上述工具可能会带来巨大的维护和管理成本。


  1. 服务管理:在多人(特别是异地外包)标注下,采用桌面工具会带来大量部署和维护的问题,同时涉及大量数据分发和分配问题,繁杂且容易引入错误。所以标注服务最好应该提供统一的 Web 入口,标注人员无论身处何处,采用何种操作系统,仅需登录 web 界面即可开展工作;对研发人员而言,维护一个统一的前后端服务的工作量远远低于维护多个标注工具。

  2. 数据管理:有些工具将数据保存到本地 xml,有些保存到 MySQL 或者 NoSQL,不同项目的数据格式也存在很大差异,带来较高的管理成本和隐患。因此数据应该采用统一的高可靠存储,不仅可以精简维护成本,而且利于衔接样本构建模块。

  3. 用户管理:用户和权限管理是多人标注下的一个重要需求,也是大部分标注工具缺失的功能。它在保证安全的同时,还记录了数据的标注者和审核者,便于追溯和结算。


由此可知对于标注业务繁多的团队,很有必要构建统一的标注平台,从而规范流程和风格,对外提供简单易用的服务,支持多人标注,降低维护成本;同时把数据存储集中化,数据结构标准化,为下游的样本生成模块奠定良好的基础。

蘑菇街标注平台的设计

本节重点谈谈蘑菇街标注平台的设计,我们的目标就是构建一个统一、扩展性强、易用的 Web 标注平台,支持员工、外包等的标注和审核工作。

设计要点

面向流程 vs 面向业务

我们起初试图围绕业务进行抽象,期望为前后端提供一个统一的框架,深度调研发现不同的标注场景,其前端技术栈和实现,数据结构存在巨大的差异,抽象难度高,可行性低。但是从流程的角度出发,所有标注任务的流程非常相似,可梳理成如下:



我们所有标注业务都遵循上述流程,其中部分流程完全一样,共用一套代码逻辑即可,差异部分的流程由每个标注业务自己实现,且互相独立,例如导入待数据过程中对数据的解析,标注和审核页面的实现等等。故每接入一个新标注业务,只需实现数据解析、标注和审核页面相关逻辑即可。特别对于前端页面,由于标注业务之间互相独立,可各自按需选择前端框架,同时方便从开源的项目中移植相关代码,具备良好的可扩展性。

数据管理

标注数据可分为图片、视频、NLP 文本、元数据(包括标注结果)等等,其中图片和视频占据较大的存储空间,上千万张图片占达着数 TB 的存储空间,相比本地存储,采用云服务的对象存储是更好的选择。对于 NLP 文本、标注结果及元数据等,具有占用空间少、结构化强的特点,适合存储在数据库中。

具体实现

框架选型

绝大部分开源的 Web 标注工具均基于 Django 实现,采用 Python Django 利于开源项目的移植;此外算法同学对 Python 的掌握好于其它语言,如此便于算法同学参与部分逻辑开发,比如数据的解析等等。


每当接入一个新的标注项目,采用如下命令即可创建一个 Django 应用,在对应目录下实现差异化的流程即可。


python manage.py startapp {mark_app}
复制代码


以蘑菇街的标注平台为例,这些差异化的流程体现在如下方面:


  • 解析导入的待标注数据文件:不同标注任务其原始数据差异较大,比如图像通常图片在 CDN 上的 URL,NLP 则为文本文字,故需要实现特定的解析逻辑。

  • 标注结果序列化和反序列化:不同标注任务其标注结果存在较大差异,写入和读取 DB 时需要实现序列化和反序列化。

  • 标注和审核 Web 页面:不同标注任务的页面差异较大,可选取合适的前端框架进行实现。

数据管理

我们把图像和视频全部存储于云服务中的对象存储,由对象存储保证高可靠性,每个图片和视频都有全局唯一的 URL,故导入待标注数据时只需导入 URL。在标注和审核过程中,前端根据 URL 从 CDN 下载数据并展示,便捷而高效。


元数据存储于 MySQL 中,主要有两张表,一张为用户相关的表,用于用户和权限的管理。另外一张为标注相关的表,记录了某条数据的基本信息,包括原始数据(data)、标注结果(label)、标注者、审核者、状态和所属项目等信息,几个重点的 column 如下:


  `id`         INT(11)  `data`       MEDIUMTEXT   # 图像视频的 URL,NLP 文本,或者图片和文本的混合  `label`      MEDIUMTEXT   # 标注结果,一般为 json 格式,便于序列化和反序列化  `project`    VARCHAR(60)  # 对应的标注项目   `importuser` VARCHAR(60)  # 待标注数据导入者  `markuser`   VARCHAR(60)  # 标注者  `checkuser`  VARCHAR(60)  # 审核者  ...                       # 其它如时间、状态等信息
复制代码


不同标注业务的 data 字段和 label 字段内容差异很大,data 一般为图像视频的 URL,NLP 的文本文字,或者图像和文本的结合体;label 字段的差异就更大,分类项目的数据结构往往很简单,而分割类项目的数据结构则复杂许多。所以我们把 data 和 label 两个字段设置为 text,数据结构的定义和数据的序列化、反序列化在各自的项目中实现,大大的提升了可扩展性。由于所有的标注数据均共用这张表,避免为每个项目都维护一张数据表,降低了接入和维护成本。

部署架构

标注平台的架构比较简单,数据存储在 MySQL 和对象存储中,服务部署在 K8S 的 statefulset 中,由 statefulset 保证高可靠。用户访问 K8S 的 Service,再由 Service 将负载均衡转发至 Pod。


顺带提下样本构建模块,它从 MySQL 获取基本数据,并从 CDN 中下载对应的图片或视频,最终生成如 TFRecords 等格式的训练样本。


高级特性和展望

为了保证数据质量,算法同学通常会承担一定的审核工作。但是由于标注的数据量实在太大,即使采用 10% 的抽查率,每个项目往往需要审核数万条数据。对于部分标注项目,我们的平台支持采用早批次的数据训练出模型,初步审查后续的标注结果,对于异常值,再由人工进行第二轮审核,提升审核效率。


在图像分割和 NLP 领域,部分开源的标注工具包含了智能算法,辅助人员进行标注,以提升标注效率,本人认为这是未来标注项目的一个趋势,特别对于标注成本较高,数据量比较大的项目,可以考虑采用智能辅助标注降低成本,提升效率。


2019-11-26 10:263533
用户头像
陈思 InfoQ编辑

发布了 576 篇内容, 共 277.3 次阅读, 收获喜欢 1301 次。

关注

评论 2 条评论

发布
用户头像
开源么?
2020-07-28 17:59
回复
用户头像
2019-11-27 17:35
回复
没有更多了
发现更多内容

MQTT over QUIC 白皮书:下一代车联网消息传输标准协议

EMQ映云科技

车联网 mqtt QUIC QUIC协议 mqtt broker

车内语音识别技术:智能驾驶的革新之源

来自四九城儿

直播预告|原生 vs 跨端,聊聊鸿蒙应用开发的真实感受

小红书技术REDtech

鸿蒙 前端 开发 跨端开发 小红书

Bartender 4 下载 Mac菜单栏管理 v4.2.25 支持m1 m2

南屿

Bartender 4 Bartender5 Bartender破解版 Mac软件下载站

istio工作原理

百度搜索:蓝易云

Linux 运维 istio 云服务器 Sidecar

使用NGINX在Kubernetes中对TCP和UDP流量进行负载均衡设置教程

百度搜索:蓝易云

nginx Linux Kubernetes TCP udp

EOS系统合约总体介绍

BSN研习社

区块链 EOS

微服务架构与低代码开发:加速应用开发的完美结合

快乐非自愿限量之名

架构 微服务 低代码 应用开发

Argo CD 可观测性最佳实践

观测云

ArgoCD

小游戏选型(一):游戏化设计助力直播间互动和营收

音视频开发_AIZ

音视频开发 小游戏 小游戏开发 小游戏运营 直播间

车内语音识别数据在智能驾驶中的应用与挑战

来自四九城儿

史上最全知识图谱建模实践(上):本体结构与语义解耦

可信AI进展

深度学习 nlp 知识图谱 NLP 大模型

轻量级UML建模工具 Astah Professional mac注册激活版 附详细安装教程

南屿

UML建模 Astah Professional破解版 astah professional怎么用

Cheetah3D 8:对 Apple Silicon 的原生支持 Metal API 的本机支持

南屿

动画 渲染 3d建模 Cheetah3D注册机 Cheetah3D 8新功能

这么做,开发打造高水平国际体育赛事直播观看平台

软件开发-梦幻运营部

爆火《幻兽帕鲁》被指用AI缝合宝可梦,开发者自曝传奇经历:是人类的奇迹

Openlab_cosmoplat

车内语音识别数据在智能驾驶中的价值与应用

来自四九城儿

resolume arena破解版 附安装教程 Mac电脑VJ调试软件 兼容M1

南屿

Mac软件 苹果电脑 Resolume Arena 7破解版 VJ调试 Resolume Arena 安装教程

对接50+快递商,快递鸟电子面单API助力商家多平台批量打单发货

快递鸟

快递物流 快递

左耳听风 - 技术领导力「读书打卡 day 17」

Java 工程师蔡姬

读书笔记 程序员 个人成长 职业发展 技术领导力

车内语音识别技术:重塑智能驾驶的未来

来自四九城儿

eudic欧路词典下载 mac翻译软件 v4.5.9 增强激活版 支持m1 m2

南屿

Mac 翻译软件 欧路词典 Eudic Eudic欧路词典破解版 英汉翻译

2023 IoTDB Summit:Dr. Julian Feinauer《Apache IoTDB 在德国工业和关键基础设施中的应用》

Apache IoTDB

车内语音识别技术:智能驾驶的核心要素

来自四九城儿

硬负载均衡和软负载均衡有什么区别?

百度搜索:蓝易云

云计算 Linux 负载均衡 运维 云服务器

幻兽帕鲁来啦!京东云召唤你一键开服,快来私服联机

京东科技开发者

智慧工地建设与低代码开发: 优化建筑行业的效率与安全

不在线第一只蜗牛

低代码 项目开发 智慧工地 数智转型

车内语音识别技术在智能驾驶中的应用与前景

来自四九城儿

EMQ 发布MQTT over QUIC 白皮书:下一代车联网消息传输标准协议

新消费日报

8个可替代Visio的绘图软件推荐!每一款都堪称神器。

彭宏豪95

效率工具 流程图 在线白板 绘图软件 Visio

软件供应链安全继续强化:SBOM清单基座规范SBOMit启动制订

sender_is_sender

软件开发生命周期 软件供应链安全 软件物料清单(SBOM) in-toto

蘑菇街如何通过构建平台搞定数据标注难题?_AI&大模型_范德良_InfoQ精选文章