专栏首页机器之心KDD 2018 | OCR神器来了!Facebook推出大规模图像文本提取系统Rosetta

KDD 2018 | OCR神器来了!Facebook推出大规模图像文本提取系统Rosetta

选自KDD 2018

作者:Fedor Borisyuk等

机器之心编译

参与:路、晓坤

近日,Facebook 研究人员发表论文,提出大规模图像文本提取和识别系统 Rosetta。该系统每天可以处理 Facebook 社交网络上的数亿张图像,提取文字信息,为下游任务提供大量数字化资源,如图像搜索。目前 Rosseta 已经作为云 API 被实现和部署到客户端应用程序中,并将逐渐覆盖所有客户。本文是 Rosseta 系统的技术解读,论文已被 KDD 2018 接收。

人们在社交网络上分享和获取信息的主要途径之一是视觉媒介,如照片和视频。近年来,上传至社交媒体的照片数量成指数级增长,每天可达数亿张 [27],处理日渐增多的视觉信息成为一大技术挑战。图像理解的挑战之一是从图像中检索文本信息,也叫光学字符识别(OCR),表示将包含键入、印刷或场景文本的电子图像转换成机器编码文本的过程。从图像中获取此类文本信息很重要,因为这可以促进很多不同的应用,如图像搜索和推荐。

在 OCR 任务中,给出一张图像,OCR 系统可以准确地提取出印刷或嵌入图像中的文本。随着大量字体、语言、词典和其他语言变体(包括特殊符号、不在词典内的单词,以及 URL 和电邮 id 等特殊信息)出现在图像中,图像质量随着文本出现的背景不同而出现变化,OCR 任务的难度增大。另一个原因是每天上传至社交媒体、需要处理的图像规模非常巨大。由于下游应用的本质,人们对 OCR 任务的期待是实时处理,这要求我们花费大量时间优化系统各部分,以在合理的延迟时间内执行 OCR 任务。因此,OCR 任务的相关问题可以描述如下:构建稳健、准确率高的 OCR 系统,能够实时处理每天数以亿计的图像。

今天介绍的这篇论文展示了 Facebook 的可扩展 OCR 系统 Rosetta,该系统已经被实现和部署在生产中,并主导了 Facebook 内的下游应用。Rosetta 遵循当前最优 OCR 系统的架构,分为文本检测阶段和文本识别阶段两部分。文本检测方法基于 Faster-RCNN 模型 [24],负责检测图像中包含文本的区域。文本识别方法使用全卷积字符识别模型,处理检测到的区域,并识别这些区域所包含的文本内容。图 1 展示了 Rosetta 生成的一些结果。

图 1:使用 Rosetta 系统的 OCR 文本识别。基于 Faster-RCNN 的方法检测出单个单词,然后全卷积 CNN 生成每个单词的转录。

论文:Rosetta: Large Scale System for Text Detection and Recognition in Images

  • 论文链接:http://www.kdd.org/kdd2018/accepted-papers/view/rosetta-large-scale-system-for-text-detection-and-recognition-in-images
  • PDF链接:http://delivery.acm.org/10.1145/3220000/3219861/p71-borisyuk.pdf?ip=222.249.170.76&id=3219861&acc=OPENTOC&key=4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E054E54E275136550
视频内容

摘要:本论文展示了一个已部署的可扩展光学字符识别(OCR)系统 Rosetta,该系统旨在 Facebook 每天上传图像数量级的图像处理。图像内容分享已经成为目前互联网用户在社交网络上最主要的信息交流方式,理解图像(包括其文本信息)对于搜索和推荐应用来说至关重要。我们展示了高效图像文本检测和识别的建模技术,介绍了 Rosetta 的系统架构。我们对现有技术进行了大量评估,解释了构建大规模 OCR 系统的有效实用方法,并基于 Rosetta 系统的开发和部署过程解释了特定组件的工作原理。

3. 文本提取模型

OCR 过程分两个独立步骤:检测和识别。第一步中,我们检测图像中有可能包含文本的矩形区域。第二步执行文本识别,即使用 CNN 对检测出的每一个区域中的文字进行识别和转录。这个流程有诸多好处,如分离训练过程和文本检测、识别模型的部署更新、并行运行文本识别,以及独立支持对不同语言的文本识别。详见图 2。

Figure 2: Two-step model architecture. The first step performs word detection based on Faster-RCNN. The second step performs word recognition using a fully convolutional model with CTC loss. The two models are trained independently.

图 2:模型架构(包含两个步骤)。第一步基于 Faster-RCNN 执行文本检测。第二步使用带 CTC 损失的全卷积模型执行文本识别。两个模型分开训练。

图 3:文本识别模型架构。

图 4:在 CTC 文本识别模型的训练中,学习率、图像宽度和最大单词长度的行为的可视化图示。

算法 1:CTC 文本识别模型的训练过程。

4. 系统架构

这部分主要介绍 Facebook 的实时大规模 OCR 系统 Rosetta 的系统架构。图 5 展示了 Rosetta 的架构。Rosetta 使用拉式模型(pull-based model),将客户端应用程序上传的图像(图 5 第一步)添加到分布式处理序列中。当资源可用时,Rosetta 中的这一推断器承担将图像添加到队列的工作,然后进行异步处理。执行添加队列工作时,用户可以注册回调。每次添加结束后,Rosetta 可以启用回调,实现下游应用对结果的直接使用。该处理序列已经得到优化,以适应高吞吐量和可用性,且使用 RocksDB [8] 保障持续性。这种拉式异步架构具备很多优势,包括更好的负载平衡、请求峰值场景中的限速情况(例如,Facebook 上图像上传数的激增),以及优化系统以适应高吞吐量的能力。

图 5:Rosetta 架构。

Rosetta 内的在线图像处理流程包含以下步骤:

  1. 图像被下载到 Rosetta 集群内的本地机器上,然后执行预处理,如调整图像大小和归一化。
  2. 执行文本检测模型(图 5 第 4 步),获取图像中所有单词的位置信息(边界框坐标和得分)。
  3. 将单词位置信息传输到文本识别模型(图 5 第 5 步),提取图像中所有单词区域中的字符。
  4. 提取出的文本信息和文本区域被存储在 Facebook 的分布式图数据库 TAO [9] 中(图 5 第 6 步)。
  5. 下游应用(如 Search)可以直接从 TAO 中获取图像对应的文本信息(图 5 第 7 步)。

5. 实验

我们对 Rosetta OCR 系统进行了大量评估。我们首先定义用于判断系统准确率和处理时间的指标,然后介绍用于训练和评估的数据集。我们遵循标准做法,在独立的留出数据集上进行模型训练和评估。我们介绍了模型评估过程,解释了为准确率和推断速度之间的权衡所做的设计决策。最后我们分享了在 Rosetta 开发和部署过程中学到的经验,这些经验帮助我们可以处理 Facebook 级别的图像。

6. 部署

Rosetta 服务已在 Facebook 中部署,为图像文本提取提供了一个云 API,处理每天上传至 Facebook 的海量图像。在 Rosetta 中,图像的大小被调整到 800px,然后传输到检测模型中,输出每个单词的边界框坐标。这些单词块被裁剪下来,将高度调整至 32px,保持原来的宽高比,最后使用识别模型进行处理。识别模型的推断运行时间取决于图像中检测到的单词数量。

Rosetta 服务已被逐渐应用到客户端应用程序中,部署计划包括每周增加服务于预定义内部用户的流量,然后向公众流量开放,从 1%、5%、10%、25%、40%、80%,直至 100%。我们继续评估资源使用,并渐进式地向处理机群增加更多机器,直到服务部署范围达到 100%。

Faster-RCNN 检测模型使用近期开源的 Detectron 框架 [5] 训练,它是基于 Caffe2 [2] 构建的。文本识别模型使用 PyTorch [1] 训练,因其在快速原型和序列建模场景中的灵活性。这两个模型都使用 Caffe2 部署到生产,使用中间 ONNX 格式 [4] 将文本识别模型从 PyTorch 转到 Caffe2。

本文为机器之心编译,转载请联系本公众号获得授权。

本文分享自微信公众号 - 机器之心(almosthuman2014)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • OpenAI新研究发现无监督情感神经元:可直接调控生成文本的情感

    选自OpenAI 作者:Alec Radford等 机器之心编译 参与:吴攀 近日 OpenAI 公布了一项新研究,介绍了一种可以学习情感表征的无监督式的系统,...

    机器之心
  • 教程 | 从特征分解到协方差矩阵:详细剖析和实现PCA算法

    选自deeplearning4j 机器之心编译 参与:蒋思源 本文先简要明了地介绍了特征向量和其与矩阵的关系,然后再以其为基础解释协方差矩阵和主成分分析法的基本...

    机器之心
  • BERT适应业务遇难题?这是小米NLP的实战探索

    近年来,预训练模型在自然语言处理(Natural Language Processing, NLP)领域大放异彩,其中最重要的工作之一就是 Google 于 2...

    机器之心
  • 浅谈应对数据库高负载访问的几种思路1.使用优化查询的方法2.主从复制, 读写分离, 负载均衡3.数据库分表, 分区, 分库

    目前,大部分的主流关系型数据库都提供了主从复制的功能,通过配置两台(或多台)数据库的主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站可以利用...

    desperate633
  • AI实践精选:通过图像与文本对电子商务产品进行分类

    Christopher Bonnett 来自Summer 2016 New York Data Science Fellowship ,后为Insight中的一...

    AI科技大本营
  • 搜狐图文匹配算法大赛_方案分享

    参加这次比赛的初衷是作为机器学习课程的大作业,这两天写了课程报告,所以将报告内容修改了一下进行分享。 我所在的团队(“中国国家跳水队”,排名如队名,一度严重跳水...

    机器学习AI算法工程
  • 他在Google Brain实习了一年,总结出这么些心得

    作者 | Ryan Dahl 去年,在我研究TensorFlow出了一番成果后,我开始申请Google Brain的首届见习项目(Google Brain Re...

    AI科技大本营
  • 2019深度学习语音合成指南(下)

    作者提出了一种全卷积字符到谱图的框架,可以实现完全并行计算。该框架是基于注意力的序列到序列模型。这个模型在LibriSpeech ASR数据集上进行训练。

    AiTechYun
  • 【干货】刘伦:大数据时代的城市模型研究

    本文共3400字,建议阅读时间7分钟 本讲座选自刘伦博士于2015年4月16日在 RONG 系列论坛之三——大数据与未来人居研讨会上所做的题为《大数据时代的城市...

    数据派THU
  • 程序员想搞机器学习?看看Nodejs之父这一年摸爬滚打的心路历程

    本文是Nodejs之父Ryan Dahl在Google Brain做了一年深度学习后的心得体会,他在那里的目标是用机器学习将卓别林的老电影自动修改到4K画质。他...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券