论文地址:https://arxiv.org/abs/1704.03155,这篇文章发表于2017年。
摘要
目前的文字检测算法在遇到一些具有挑战性的场景时,往往检测效果会大大降低,因为总体的效果需要依赖于整个pipeline的多个阶段和组件。而作者提到,这篇论文本身很简单但是非常高效,这个pipeline直接预测任意方向和四边形形状的单词或者文本行。
贡献
- 提出了一个场景文字检测的方法,包含两个阶段:一个全卷积网络(FCN)和一个NMS。FCN直接产生文本区域,去掉了复杂且耗时的中间步骤;
- 这个pipeline灵活地产生单词级别或者文本级别的预测,几何形状可能是旋转的矩形或者是四边形;
- EAST算法显著地超过了SOTA算法。
方法
总体
这篇论文的算法借鉴了DenseBox,这是早在2015年提出的anchor free的目标检测算法:DenseBox对于输入的一张图片,经过CNN后得到多个channels的输出,每个channel有着不同的物理含义,比如channel 1表示这个像素点是前景还是背景,后面几个channels表示真正的bounding box的位置信息。
而EAST也是类似,将图片输入FCN后,产生pixel level的score map和几何形状。其中score map的每个值在[0,1]范围内,表示这个几何形状的置信度。
这里作者设计了两种几何形状:旋转形状和四边形,针对不同的几何形状,设计了不同的损失函数。对于预测得到的所有的regions,要用一个预设的阈值来筛选,只有score大于这个阈值的区域才会被保留,然后再进一步nms。
网络设计
整个包含三个部分:特征提取,特征融合的分支,输出层。特征提取层和特征融合层借鉴了Unet结构。
标签生成
为了训练,我们得到了一个预测的四边形和相应的score map,那么肯定需要有一个对应的真实的四边形和score map用于计算误差、学习网络。
score map
这里的ground truth score map将ground truth bounding box缩小了一点。
具体步骤:
- 先计算所有节点相连的两个边的最小的 r i r_i ri;
- 首先缩小较长的两个边,然后缩小较短的两个边(较长和较短的比较是根据这两个对边的平均值来计算的);
- 具体的缩小方式:向内0.3倍。
并在相应的位置填上0或1。
几何map
对于旋转矩形的表示方式,首先产生一个旋转矩形,该旋转矩形以最小的面积覆盖这个区域,然后对于score是正值的像素,我们计算这个像素到这个text box的四个边的距离,作为四个channels的ground truth值。
对于四边形的表示方式,score是正值的像素,我们直接把这个四边形的四个角的坐标作为八个channels的ground truth值。
损失函数
损失函数包括分类损失和回归损失,或者说是score map产生的损失和geometry map产生的损失。
score map
作者认为常见的使用均匀的采样和hard negative mining来解决不平衡的目标样本,提高网络表现的同时,会引入一个无法微分的环节,也就需要更多的手动调整参数的阶段,也就导致了更复杂的pipeline。
L
s
=
b
a
l
a
n
c
e
d
−
x
e
n
t
(
Y
^
,
Y
∗
)
L_s=balanced-xent(\hat Y,Y^*)
Ls=balanced−xent(Y^,Y∗)
geometry map
关于几何的损失就更复杂,计算一个不规则的四边形本来就比较复杂,如果直接用L1或者L2损失用于回归可能会导致损失偏向更大且更长的区域,而且我们希望文本几何区域的预测应该对小的和大的区域都能比较准确,所以回归损失应该是scale invariant的。
对于AABB形的,也就是常见的bounding box(没有旋转角度),几何误差可以计算为IOU loss + angle loss。
对于QUAD形的,几何误差直接计算为smooth L1。
局部NMS
从很多的待处理的geometries中合并一部分,然后进行普通的NMS。
如何合并:对于合并后的顶点i的坐标,按照score加权组合两个待合并的。