论文阅读 | CVPR2017 | EAST: An Efficient and Accurate Scene Text Detector

一 为什么读这篇

最近在做OCR相关的东西,EAST是文字检测的代表算法,在项目中也有用到,所以自然是必读了。

二 截止阅读时这篇论文的引用次数

2019.3.4 123次。相比其他通用领域有点少,但按细分领域来算也不少。

三 相关背景介绍

旷视出品,17年4月挂到arXiv上,中了2017年的CVPR。一作Xinyu Zhou清华本科毕业后就在旷视工作了,二作姚聪不用多说,江湖人称聪神,上学在华科白翔团队。

四 关键词

EAST

五 论文的主要贡献

1 简化文本检测的pipeline,就两步,通过FCN检测出来后用NMS过滤

2 提出EAST架构

3 优化NMS

六 详细解读

0 摘要

过去的工作已经有不错的表现,然而当面对更有挑战的场景时就不太ok了,因为整体性能取决于pipeline中多个阶段和多个组件的相互作用。本文提出一个简单但有效的pipeline,来实现自然场景下又快又准的文本检测。该pipeline通过单独的网络,没有不必要的中间步骤(如候选聚合和字词分区),直接预测完整图像中任意方向和四边形形状的单词或文本行。通过简化pipeline,可以集中精力设计损失函数和网络架构。在标准数据集ICDAR 2015,COCO-Text和MSRA-TD500上的实验证明本文方法在准确率和速度上都达到了SOTA。在ICDAR 2015数据集,本文算法在720p分辨率的图像上以13.2fps(Titan-X)达到了0.782的F值。

1 介绍

文本检测的核心是设计区分文本和背景的特征。然鹅,当前的绝大多数方法都是由多个阶段和多个组件组成,这有可能是欠优化的,同时时间开销还很大。

本文提出的pipeline只有两个阶段。pipeline通过FCN(全卷积网络)直接生成单词或文本行级别的预测,排除掉冗余又缓慢的中间步骤。生成的文本预测(可以是旋转的矩形或四边形)发往NMS(非极大值抑制)以得到最终结果。

本文的三个贡献:

1 本文提出的场景文本检测算法由两个阶段组成:FCN和NMS

2 pipeline可以灵活地生成字词或文本行级别的预测,预测的几何形状可以是旋转的矩形或四边形,这取决于具体应用

3 本文算法在准确率和速度方面明显超过了当前的SOTA

2 相关工作

east-fig2.png

如图2a-d所示,过去的方法由多个阶段组成。

3 方法

本文算法的关键是网络模型,其可以通过训练直接预测文本实例是否存在以及在全图上的几何信息。网络是全卷积网络,输出是单词或文本行的密集像素预测。检测器命名为EAST,取自Efficient,Accuracy,Scene,Text。

3.1 Pipeline

如图2-e所示,和DenseBox的设计类似,给FCN输入图像,输出多通道的像素级文本分数图和几何信息。其中一个预测通道是分数图,其像素值范围在[0, 1],剩下的通道表示从每个像素的视角来看包围单词的几何信息。分数表示在相同位置预测的几何形状的置信度。

本文试验了文本区域的两种几何形状(旋转矩形RBOX和四边形QUAD),每种形状用不同的损失函数。然后在每个预测区域使用阈值,超过阈值的才认为是有效的并进行后续的NMS处理。NMS处理后的为最终结果。

3.2 网络设计

east-fig5.png

如图5所示,文本区域的大小变化很大,检测大的文本需要网络后边阶段的特征,而预测小文本区域的几何形状需要前边阶段的低阶信息。因此网络需要使用不通级别的特征来满足这些要求。HyperNet是符合这个条件的,不过有个问题就是在后面的阶段,在大的特征图上合并多个通道将明显的增加计算量。

为了解决这个问题,采用U-Net的思路,逐渐合并特征图,同时保持上采样的分支较小。最终本文的网络可以利用不同级别的特征同时保持小的计算代价。

east-fig3.png

如图3所示,网络由3部分组成:特征提取主干,特征合并分支和输出层。

特征提取主干可以用ImageNet上预训练的网络,本文用的是PVANet,生成4个级别的特征图,定义为,大小分别为图像的。

在特征合并分支,逐个合并它们:
g _ { i } = \left\{ \begin{array} { l l } { \text { unpool } \left( h _ { i } \right) } & { \text { if } \quad i \leq 3 } \\ { \operatorname { conv } _ { 3 \times 3 } \left( h _ { i } \right) } & { \text { if } \quad i = 4 } \end{array} \right.

h _ { i } = \left\{ \begin{array} { l l } { f _ { i } } & { \text { if } i = 1 } \\ { \operatorname { conv } _ { 3 \times 3 } \left( \operatorname { conv } _ { 1 \times 1 } \left( \left[ g _ { i - 1 } ; f _ { i } \right] \right) \right) } & { \text { otherwise } } \end{array} \right.

其中表示合并基础,表示合并的特征图,运算符表示沿通道轴连接。在每个合并阶段,首先将上一阶段得到的特征图输入unpooling层,使其大小翻倍,然后同当前的特征图做拼接。接下来用1x1卷积减少通道数和计算量,其后跟着3x3卷积融合信息,生成合并阶段的结果。在最后一个合并阶段之后,3x3卷积层生成合并分支的最终特征图输入给输出层。

每个卷积的输出通道如图3所示,本文将分支中的卷积通道数保持较小,这仅增加了一小部分计算开销,使网络计算效率更高。最终的输出层包含几个1x1卷积运算,将32通道的特征图投影为1通道的分数图和多通道的几何图。几何输出可以是RBOX或QUAD,如表1所示。

east-table1.png

对于RBOX,几何信息表示为4个通道的轴对齐的边界框(axis-aligned bounding box AABB)和一个通道的旋转角度。的定义与DenseBox一样,4个通道分别表示从像素位置到矩形的上下左右4个边界的距离。

对于QUAD,,用8个数字来表示从四边形4个角顶点()到像素位置的偏移。因为每个距离偏移包含两个数,几何输出包含8个通道。

3.3 标签生成

3.3.1 四边形的分数图生成

不失一般性,仅考虑几何形状为四边形的情况。分数图上四边形的面积设计为原始面积的缩小版本,如图4a所示。

east-fig4.png

对于四边形,其中是四边形顺时针顺序的4个顶点。对于缩小的,首先计算每个顶点的参考长度:

r _ { i } = \min \left( \mathrm { D } \left( p _ { i } , p _ { ( i \bmod 4 ) + 1 } \right) \right. , \mathrm { D } \left( p _ { i } , p _ { ( ( i + 2 ) \bmod 4 ) + 1 } \right) )​

其中为和之间的L2距离。

首先缩小四边形的两个长边,再缩小两个短边。对于每对两个相对的边,通过比较它们长度的平均值来确定"更长"的对。对于每个边,通过将两个端点沿着边缘分别向内移动和来缩小它。

3.3.2 几何图生成

RBOX的生成过程如图4c-e所示。数据集的文本区域标注是四边形风格(ICDAR2015),首先生成一个覆盖区域为最小面积的旋转矩形,之后对于每个具有正分数的像素,计算它到文本框4个边界的距离,并将它们放到RBOX ground truth的4个通道中。对于每个四边形真实值,在8通道几何图中具有正分数的每个像素的值是四边形的4个顶点的坐标偏移。

3.4 损失函数

损失定义如下:

其中和分别表示分数图和几何的损失,表示两个损失之间的重要性,本文设置为1(同样重要)。

3.4.1 分数图损失

为了简化训练过程,没有用类似Faster R-CNN那种多阶段的方法,而是用15年ICCV『Holistically-nested edge detection』这篇文章中提出的类平衡交叉熵:
\begin{aligned} L _ { \mathrm { s } } & = \text { balanced-xent } \left( \hat { \mathbf { Y } } , \mathbf { Y } ^ { * } \right) \\ & = - \beta \mathbf { Y } ^ { * } \log \hat { \mathbf { Y } } - ( 1 - \beta ) \left( 1 - \mathbf { Y } ^ { * } \right) \log ( 1 - \hat { \mathbf { Y } } ) \end{aligned}
其中是预测的分数图,是真值。参数是正负样本的平衡因子,由下式定义:

3.4.2 几何损失

文本检测的挑战之一是自然场景中的文本变化很大,直接使用L1或L2损失回归将导致损失朝更大和更长的文本区域偏移。所以回归损失应当是尺度不变的。因此,RBOX回归的AABB部分用IoU作为损失,QUAD回归用尺度规范化的平滑L1作为损失。

RBOX

L _ { \mathrm { AABB } } = - \log \operatorname { IoU } \left( \hat { \mathbf { R } } , \mathbf { R } ^ { * } \right) = - \log \frac { \left| \hat { \mathbf { R } } \cap \mathbf { R } ^ { * } \right| } { \left| \hat { \mathbf { R } } \cup \mathbf { R } ^ { * } \right| }

相交矩形的宽和高定义如下:
\begin{aligned} w _ { \mathbf { i } } & = \min \left( \hat { d } _ { 2 } , d _ { 2 } ^ { * } \right) + \min \left( \hat { d } _ { 4 } , d _ { 4 } ^ { * } \right) \\ h _ { \mathbf { i } } & = \min \left( \hat { d } _ { 1 } , d _ { 1 } ^ { * } \right) + \min \left( \hat { d } _ { 3 } , d _ { 3 } ^ { * } \right) \end{aligned}
其中分别表示从像素到其相应矩形的上下左右4个边界的距离。并的面积定义如下:
\left| \hat { \mathbf { R } } \cup \mathbf { R } ^ { * } \right| = | \hat { \mathbf { R } } | + \left| \mathbf { R } ^ { * } \right| - \left| \hat { \mathbf { R } } \cap \mathbf { R } ^ { * } \right|
旋转角度的损失通过下式计算:

最终,整个几何损失是AABB损失和角度损失的加权和,定义如下:

本文设置为10。

QUAD

本文扩展了Fast R-CNN提出的平滑L1损失,通过增加一个额外的用于单词四边形(通常在一个方向上更长)的规范化项。的所有坐标是有序集合:

损失定义为:
L _ { \mathrm { g } } = L _ { \mathrm { QUAD } } \left( \hat { \mathbf { Q } } , \mathbf { Q } ^ { * } \right) \\ = \min _ { \tilde { \mathbf { Q } } \in P _ { \mathbf { Q } ^ { * } } } \sum _ { c _ { i } \in \mathrm { C } _ { \mathbf { Q } } \atop \tilde { c } _ { i } \in \mathrm { C } _ { \tilde { \mathbf { Q } } } } \frac { \operatorname { smoothed } _ { L 1 } \left( c _ { i } - \tilde { c } _ { i } \right) } { 8 \times N _ { \mathbf { Q } ^ { * } } }
其中规范项是四边形的短边,由下式定义:

是顶点顺序不同的所有相等四边形的集合。由于开源训练数据集中的四边形标注不一致,因此需要这种排序。

3.5 训练

为了加速学习,在图像上均匀采样512x512的块,batch size为24,用ADAM,初始学习率为1e-3,每27300个batch衰减10倍,停在1e-5。

3.6 局部感知NMS

原始NMS的复杂度是,n是候选个数,这对于密集预测产生的成千上万的几何形状是不可接受的。

在假设附近像素的几何信息趋向于高度相关的前提下,本文提出逐行合并几何信息,并且在合并同一行几何信息时,迭代地合并当前遇到的几何信息与最后合并的几何信息。这在最佳场景下将复杂度降为,即使最坏情况下也和原始NMS一样,只要局部假设成立,算法在实际中运行的很快。

east-alg1.png

值得注意的是,在WEIGHTEDMERGE(g, p)中,合并四边形的坐标通过两个给定四边形的分数进行加权平均。

事实上,有一点微小区别,本文用的是作为一种投票机制的"平均"几何信息,而不是标准NMS的"选择"几何信息。然而,本文仍使用术语"NMS"作为功能描述。

4 实验

4.1 Benchmark数据集

ICDAR2015

使用challenge4的数据,包括1000张训练,500张测试图。用4个顶点的四边形标注,数据来自Google Glass。本文也用了ICDAR2013的229张训练图。

COCO-Text

目前最大的文本检测数据集,重用了MS-COCO的数据集。包括43686张训练,20000张测试。用轴对齐的边界框标注(AABB),所以本文将旋转角度设置为0。

MSRA-TD500

300张训练,200张测试。文本区域是任意方向的,以语义级别标注,和其他数据集不同,这个包括中英文。用RBOX格式标注,因为训练集太小,因此又加了400张HUST-TR400的数据。

4.2 基础网络

east-table2.png
VGG16

广泛使用,不过有两个缺点

1 感受野太小,conv5_3输出的每个像素的感受野只有196

2 是一个相当大的网络

PVANET

一个轻量网络,目的是替代Faster R-CNN的特征提取部分。最后一个卷积层输出的感受野是809,比VGG16大得多。

模型都是在ImageNet上预训练过的。

4.3 定性结果

如图5所示,EAST能处理不均匀光照,低分辨率,各种方向和透视失真等多种挑战。中间结果如图6所示,可以看到,模型生成高准确率的几何图和分数图,因此容易形成不同方向的文本实例的检测。

east-fig6.png

4.4 定量结果

east-table3.png
east-table4.png

ICDAR2015的Challenge 4,用原尺度F值到0.782,当用多尺度测试(0.5 0.7 1.0 1.4 2.0),F值就到0.8072了。。

east-table5.png

值得注意的是在MSRA-TD500上,VGG16比PVANET差的多,主要原因就是VGG16的感受野过小,这样以文本行级别预测而不是单词级别预测时就会很明显。

4.5 速度比较

east-table6.png

评估使用ICDAR2015的500张原始分辨率(1280x720)的测试图。

4.6 限制

检测器可以处理的文本实例的最大尺寸与网络的感受野成正比,这限制了网络预测更长文本区域的能力,如跨越图像的文本行。另外,ICDAR2015中垂直文本行的预测不好,与训练数据过少也有关系。

5 总结及未来工作

未来可能的发展方向:

1 调整几何公式以直接检测弯曲文本

2 集成文本检测与识别

3 将思路扩展到通用目标检测上

七 读后感

总的感觉比目标检测难度一点,数学公式也明显的多了。另外还是得读原文,之前听说EAST大幅度优化pipeline,还以为主要改进点在pipeline那块,其实主要还是网络结构和损失函数的优化。受当时研究条件的限制,以现在的观点来看,还有不少可以替换的地方来提高性能,比如HyperNet可以用FPN替换,PVANET可以用ResNeXt之类的替换,类平衡交叉熵可以用Focal Loss来替换,这些都是改进点。

素质四连

要解决什么问题

如何更快更准确的检测任意方向的文本

用了什么方法解决

将任意方向的文本检测定义为RBOX和QUAD两种形式,基于此设计网络的最后输出部分和损失函数,以及通过对NMS的改进来提速。

效果如何

在速度和准确率上都达到了当时的SOTA,基本上也是现在文本检测的basline

还存在什么问题

作者自己指出,受感受野的限制,预测长文本区域效果不太好

八 补充

这个实现是官方认可的:https://github.com/argman/EAST

一个改进版基于keras的实现:https://github.com/huoyijie/AdvancedEAST

知乎专栏:文本检测之EAST

CSDN上的这个解读值得一看

你可能感兴趣的:(论文阅读 | CVPR2017 | EAST: An Efficient and Accurate Scene Text Detector)