有图又怎样?我有文来斗:表情包文字识别解析

导语

表情已经充斥在网络的各个角落。现在流行 “能发图就不打字”。在我们的表情项目当中需要从形形色色的网络表情中找出对应的文字,作为关键字搜索。这些表情中提取出的文字,亦可用于我们后续的文本分析,情感预测,语义理解等。因此,表情文字识别成为了重中之重。这篇文章是我们在文字识别上的一些积累和成果,分享给大家。

产品背景

相信大家都有使用过表情的经历,一张合适的底图配上逗比的文字往往比冰冷的文字更加能表达当时的一个心理状态。基于这个背景,我们团队想在表情上做一些创新的尝试,让用户能够搜索到他们想要的表情。因此,搜索成为了这个产品的关键,而一个搜索方式就是用户根据文字找到想要的表情。

为了打通图片和文字的桥梁,我们把重心放在了文字识别,也可以叫做OCR识别上。使用了公司的通用OCR后,发现针对复杂多变的表情文字,很难达到理想的效果。如何在表情文字识别这个垂直领域上做一些突破?我们针对这个问题进行了深入的研究并且取得了一定的成果。

识别算法介绍

目前主流的文字识别方法都差不多。主要分为两个模块,一个模块定位文字位置,另外一个模块针对定位后的文字进行识别。针对这两个模块,我们使用的是Faster RCNN + CTC的方案。

文字定位

Faster RCNN1是从RCNN2逐渐演变过来的。相对于它的前辈RCNN以及Fast RCNN3, Faster RCNN提出了RPN(Region Proposal Network)网络。通过RPN输出Anchor Box Proposals。再通过NMS和其他一些方法进行Proposals Reduction。该方法对比以往的方案,性能更优,减少了selective search里面繁琐的计算。当然目前目标检测还有其他state of art的定位方案,例如YOLOv24,Mask RCNN5等,其中Mask RCNN更多聚焦在image segmentation上。

图1: Faster RCNN的基本结构

图2: 文字定位后截取的图片

文字识别

文字识别使用的CTC(Connectionist Temporal Classification)6技术在语音识别里很常用,后来也被用于文字的识别。文字识别中使用的CTC也是基于端对端的。基本思路是将定位后的图片,用CNN网络提取特征,输出特征给RNN网络,再由RNN网络输出预测序列。输出的序列通过greedy decoder、最优路径等方法进行解码,并计算出损失。

图3: CTC模型输出

识别方案介绍

为了达到我们想要的效果,我们主要在数据扩增,网络结构,tricks以及参数调优上面做了大量的工作。下面我们会大致介绍部分使用到的调优方法。

数据扩增

通过人工去标注大量的文字定位信息和文字内容信息用于训练显然是不可行的。对比其他业务的标签数据,文字识别是比较容易通过机器去生成。我们研究了后台表情图片的文字大致分布,然后模拟生成接近真实图片的训练数据。

方法包括:

a. 我们找了各种颜色的背景图,以便于生成多样性,例如偏蓝色背景图,偏红色背景图,黑白背景图等等。

b. 结合语料使生成的图片更加接近真实数据集。

c. 控制各种类型图片生成比例。

最终,在定位中使用的训练数据集大约60万张,而在文字识别使用中生成的数据集大约200万张。我们训练两个网络使用不同的数据集,目的是避免overfitting.

图4: 生成图片采样

网络结构

a. 文字定位最开始用的是VGG网络,定位出来的坐标不够准确。定位后发现是由于VGG网络学习容易饱和导致。后采用深度残差网络替换,使得loss能够进一步降低。

b. CTC模型使用的是一个改进的VGG16网络,以及一个双向RNN网络。在改进版VGG16网络中,每一层都加上Batch Norm以及dropout。

tricks

a. 由于我们在CTC中使用的是双向RNN网络,因此在训练过程中,前几个time step不计算损失。目的是让网络在第一次计算loss的时候,能拿到前后的信息。

b. Spatial Transform。定位的图片输入后使用ST对输入进行空间变换,增加模型健壮性。

c. 权重初始化使用何恺明论文里提出的variance scaling initializer7。

d. 图片输入网络之前使用双线性插值。

参数调优

除去常规的参数调优,这里列举一些值得关注的参数调整

a. 针对文字定位部分,主要调整了anchor box的aspect ratio。由于文字一般是长方形,因此我们希望长方形的anchor box生成的更多,减少其他不必要的anchor box。

b. RNN输出的序列不宜过长,否则效果会下降。

评估对比

公司在文字识别中做了不少的工作。我们主要对比的就是他们的通用OCR。对比的数据集是我们人工随机抽取的980张图片,并且标注了ground truth文字内容。对比数据如下:

String Accuracy

Char Accuracy

Tencent General OCR

0.249

0.418

Ours

0.65

0.801

针对我们业务最关心的整句准确率,可以看出一定的提升。

总结

以上就是我们在表情识别方面的一些经验和积累。对于不同的特定业务,需要收集该业务中尽可能多的标签数据,并针对这些标签数据做好数据扩增。使用适合的tricks和参数提高上限。

目前我们已经把我们的模型接入到了运营环境中。如下图所示:

图5: 运营环境实际使用

未来工作

深度残差网络能够有效对抗梯度问题,但是由于网络太深,参数太多,会引起训练以及预测时候效率的下降。今年的CVPR中提到了Dense CNN8,一种新的网络结构,能够有效降低参数数量,加快训练速度。也许可以用于替换我们现有的CNN。

感谢

在这里特别感谢 MIG D2数据计算平台对我们项目提供的各种计算支持

Reference

1 Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun(2016 v3), Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

2 Girshick, Ross and Donahue, Jeff and Darrell, Trevor and Malik, Jitendra(2014), Rich feature hierarchies for accurate object detection and semantic segmentation

3 Ross Girshick(2015), Fast R-CNN

4 Joseph Redmon, Ali Farhadi(2016), YOLO9000: Better, Faster, Stronger

5 Kaiming He, Georgia Gkioxari, Piotr Dollár, Ross Girshick(2017), Mask R-CNN

6 Alex Graves, Santiago Fern´andez, Faustino Gomez, Jurgen Schmidhuber(2006), Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks

7 Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun(2015), Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification

8 Gao Huang, Zhuang Liu, Kilian Q. Weinberger, Laurens van der Maaten(2016), Densely Connected Convolutional Networks

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

周力的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CVer

[计算机视觉论文速递] 2018-03-14

通知:这篇推文有18篇论文速递信息,涉及图像分割、目标检测、图像分类、显著性检测、姿态估计和GAN等方向 前文回顾: [计算机视觉] 入门学习资料 [计算机视...

40015
来自专栏量子位

一文带你理解Q-Learning的搜索策略,掌握强化学习最常用算法

强化学习(Reinforcement Learning, RL)属于机器学习的一个分支,利用智能体(agent)通过状态感知、选择动作和接收奖励来与环境互动。每...

2044
来自专栏机器之心

专栏 | 自动选模型+调参:谷歌AutoML背后的技术解析

46010
来自专栏专知

【计算机视觉近一年进展综述】《A Year in Computer Vision》by The M Tank

【导读】计算机视觉近一年进展综述,本报告仅仅是为了简要的总结下2016近一年在计算机领域的一些重要进展。第一部分:分割/定位,目标检测,目标追踪。第二部分:分割...

5595
来自专栏AI科技评论

干货 | 对端到端语音识别网络的两种全新探索

AI 科技评论按:语音识别技术历史悠久,早在上世纪 50 年代,贝尔研究所就研究出了可以识别十个英文数字的简单系统。从上世纪 70 年代起,传统的基于统计的 H...

694
来自专栏数据科学与人工智能

【深度学习】深度学习的最新进展及诺亚方舟实验室的研究

摘要:本文首先回答关于深度学习的几个常见问题,介绍深度学习研究的最新进展,特别是一些代表性工作,同时概述华为诺亚方舟实验室的深度学习与自然语言处理的工作,最后总...

2256
来自专栏AI科技评论

学术丨深度学习零基础进阶第四弹​

AI 科技评论曾编译了《干货分享 | 深度学习零基础进阶大法!》系列,相信读者一定对深度学习的历史有了一个基本了解,其基本的模型架构(CNN/RNN/LSTM)...

2599
来自专栏AI研习社

博客 | 论文解读:对端到端语音识别网络的两种全新探索

雷锋网 AI 科技评论按:语音识别技术历史悠久,早在上世纪 50 年代,贝尔研究所就研究出了可以识别十个英文数字的简单系统。从上世纪 70 年代起,传统的基于统...

1083
来自专栏人工智能头条

深度学习常见问题、最新进展及诺亚方舟实验室的研究

1407
来自专栏智能算法

(入门)|深度学习通俗理解

1. 深度学习到底是干啥的? 2017年10月18日,《自然》杂志网站公布的论文显示,此前战胜人类围棋世界冠军的电脑程序AlphaGo的开发团队又出力作——新程...

3729

扫码关注云+社区