TextBoxes与TextBoxes++ OCR场景文字检测
TextBoxes
提出了一种端到端可训练的快速场景文本检测器,名为TextBoxes,它可以在单个网络正向通道中以高精度和高效率检测场景文本,除标准非最大抑制外,不涉及后处理。TextBoxes在文本定位精度方面优于其他竞争方法,并且速度更快,每张图片只需0.09s便可快速实现。此外,与文本识别器相结合,TextBoxes明显优于最先进的文字识别和端到端文本识别任务。
网络结构:
72 = 12 * 6, 6为2+4
它继承了流行的VGG-16体系结构(Simonyan和Zisserman 2014),保持从conv1_1到conv4_3的层次。最后两个完全连接的VGG-16层被转换为通过参数下采样卷积层(Liu et al。2016)。 它们之后是一些额外的卷积和合并层,即conv6到pool11。多个输出层(我们称之为文本框图层)被插入到最后和一些中间卷积层之后。它们的输出被聚合并经历非最大抑制(NMS)过程。输出层也是卷积的。总而言之,TextBoxes仅包含卷积和合并图层,因此完全卷积。它适用于训练和测试中的任意大小的图像。
在文本框图层中,采用了不规则的1 * 5卷积滤波器而不是标准的3 * 3卷积滤波器。这种初始形式(Szegedy et al。2015)滤波器产生矩形接收场,更适合具有更大纵横比的字, 还避免了方形感受野会带来的嘈杂信号。
Anchors
Anchors的生成与SSD不同,采用细长型Anchor,
与普通对象不同,单词倾向于具有较大的宽高比。因此,包括具有较大宽高比的“长”默认框。具体而言,定义了默认框的6种宽高比,包括1,2,3,5,7和10。然而,这使得默认框在水平方向上密集而垂直稀疏,这导致了较差的匹配框。为了解决这个问题,每个默认框设置了垂直偏移。默认框的设计如图2所示。
外接矩形的回归采用和SSD一样的映射关系:
在训练阶段,根据(Liu et al。2016)的匹配方案,将GT矩形框按照框重叠匹配到默认框。每个地图位置与多个不同大小的默认框相关联。允许TextBoxes学习特定的回归和分类权重,以处理类似大小的单词。因此,默认框的设计高度针对特定任务。
损失:
采用与(Liu et al。2016)相同的损失函数。令x为匹配指示矩阵,c为置信度,l为预测位置,g为地面实况位置。具体而言,对于第i个 默认框和第j个基本事实,Xij = 1表示匹配,而Xij = 0否则,损失函数定义为:
其中N是匹配groundtruth框的默认框的数量,以及α设置为1。我们采用Lloc的平滑L1损失(Girshick 2015)和Lconf的2级softmax损失。
使用TextBoxes的输入图像的多个重新缩放版本。输入图像是重新分为五个尺度,包括(宽*高)300 * 300,700 * 700,300 * 700,500 * 700和1600 * 1600。请注意,有些尺度水平挤压图像,以便缩短某些“长”字。 多尺度输入提高了检测精度,同时稍微增加了计算成本。在ICDAR 2013上,他们进一步提高了5%的检测f-measure。检测所有五个尺度每个图像需要0.73s,如果我们移除最后的1600 * 1600尺度,则需要0.24s。运行时间在单个Titan X GPU上测量。请注意,与测试不同,只使用单一尺度输入(300 * 300)进行训练。
结果:
参考:
https://blog.****.net/w_xiaowen/article/details/80834403
原文:
https://arxiv.org/pdf/1611.06779.pdf
TextBoxes++: A Single-Shot Oriented Scene Text Detector
提出了一个端对端训练的快速场景文本检测器,命名为TextBoxes++,能够准确高效的在神经网络的一次forward pass中实现对任意方向的场景文本的检测,并且不需要除了非极大值抑制之外的后处理。在四个公开数据集上评价TextBoxes++。在所有的实验中,TextBoxes++ 在准确率和运行时间上都超过了我们用来对比的方法。准确来说,TextBoxes++在ICADR 2015上取得了0.817的f-measure,在coco-text image上取得了0.5591的f-measure。和文本识别器结合后,TextBoxes++超过了目前最好的word spotting和端对端文本检测方法。
论文的主要贡献有三个方面:1. 提出的任意方向文本检测器TextBoxes++是准确的、快速的、端对端训练的,并且具有简单且有效的pipeline。2. 这个论文提供了一些设计上的选择的考量,包括边界框表达、模型配置和不同的评价方法的效果。这些研究的结果也能被用到别的文本阅读算法上,并且给出一些启发。3. 我们也介绍了一个使用识别结果来改进检测结果的方法。
overview
TextBoxes++依赖端对端训练的全连接层来检测任意方向的文本。受SSD的启发,文章进行了一些空间设计来将SSD网络用于高效地识别自然图像中的有向文本。提出用四边形或者有向长方形对文本进行表示,然后用网络来预测边界框到有向文本表达的回归。为了更好的覆盖文本,提出了使用vertical offsets densify默认框。此外,我们用能更好地处理长文本问题的卷积核。TextBoxes++在六个尺度上检测有向文本,在测试阶段,多阶段检测结果被组合起来,依靠基于IOU阈值的级联多非极大值抑制。
网络结构:
TextBoxes++的结构在图中展示。它继承了vgg-16的结构,保留了从conv1_1到conv5_3的层,并把最后两个全连接层变成卷积层。另外八个卷积层被分为四个阶段(conv8到conv11),通过最大池化变为不同的分辨率。多层输出层,被我们称为text-box-layers,被插入在最后一层和一些中间层上,这些层也是卷积层,用来预测输出,之后进行非极大值抑制过程。综合来讲,TextBoxes++是一个只包括卷积层和池化层的全卷积结构。因此Textboxes++能够处理任意形状的图像,它用卷积层取代了平均池化,有利于多尺度的训练和测试。
在有向文本中,使用3x5的卷积核。这种inception-style滤波器使用矩形的感受野,这也能更好的匹配拥有大长宽比的文本。inception也帮助避免了方形感受野可能带来的噪声信号(创新点1)
Anchors:
带vertical offsets默认框:文本框层是TextBoxes++的核心部件。一个文本框层同时预测text表征和边界框。输出的边界框包括有向边界框{q}或{r},最小水平边界矩形{b}。通过预测一些对在每个位置预设计的水平默认框的offset的回归来实现的。更细致地,默认矩形框为
也可以表达为:
或:
其中,(X0, Y0)表示default box的中心点,w0和h0为default box的宽高。q0为外接四边形的四个顶点表示,r0为外接矩形的顶点(左上角和右上角)和旋转角度表示。
则可得到以下换算关系:
多角度文本框是通过default box回归得到的,如下图表示,图中绿色虚线表示与ground truth匹配的default box,黄色框表示ground truth,红色箭头表示回归的方向,黑色框表示未匹配到真值的default box,绿色实线框表示对应与ground truth的最小外界水平矩形框。
在每个特征图位置,输出分类得分和位置偏移量(q0或r0的偏移量,其中一种)。 对于带方向的文字,
1. 使用四点坐标表示文本框的表示方法,网络输出的是预测的值表达为:
(∆x, ∆y, ∆w, ∆h, ∆x1, ∆y1, ∆x2, ∆y2, ∆x3, ∆y3, ∆x4, c)
一个水平矩形框 b = (x, y, w, h)和一个四边形框
计算方式如下所示,c表示置信度:
2. 使用旋转矩形坐标表示文本框的表示方法,网络输出的是预测的值表达为:
旋转矩形表示为:
在训练阶段,ground-truth单词框和默认框根据重叠机制相匹配。旋转矩形或者四边形框的最小化水平矩形被用来和默认框进行匹配。考虑到一个位置针对不同的长宽比会有多个默认框,因此我们将单词根据他们的长宽比进行区分,允许TextBoxes++学习特定的回归和分类权值来应对相似长宽比的单词。因此默认框的设计是和任务高度匹配的。
和一般物体不一样,单词长宽比变化很大。因此,在早期的研究学习中,TextBoxes++包括了对应大长宽比的长默认框。特别的,对于水平文本数据集,我们定义了六个长宽比1,2,3,4,7和10。本文致力于检测任意长宽比的文本,因此我们将默认框的长宽比设置为1,2,3,5,1/2,1/3,1/5。此外,文本通常在某个区域密集,所以每个默认框都设置了垂直offset从而更好地覆盖所有文本,这使得默认框在垂直方向上密集。(创新点2)
Ground Truth:(创新点3)
1. 对于四边形表示的GT:
水平框的ground truth就是标定框的外界水平矩形,且该矩形的四个点是顺时针排列的,第一个点为矩形的左上角点
文本框的ground truth就是标定的框,但是规定文本框的四个点也为顺时针排列,第一个点为左上角点,这里左上角点的定义为将文本框与水平框的四个点按照顺时针方向计算四点的距离和(这里需要计算四次)。当距离和最小的那次,与水平框左上角点对于的点为文本框的第一个点。
2. 外接旋转矩形表示的GT:
水平框的ground truth就是标定框的外界水平矩形,且该矩形的四个点是顺时针排列的,第一个点为矩形的左上角点
旋转文本框的获得,先按照上式确定出文本框的左上和右上点,宽高为旋转矩形的高。(不用θ原因是:一个最常用的是用一个水平矩形+一个旋转角度,写成(x,y,w,h,θ)(x,y,w,h,\theta)(x,y,w,h,θ)。然而,由于数据集本身的偏差,这个θ的分布通常是不平衡的,使得模型具有一定的数据集依赖。)
损失函数:
同TextBoxes,
对于Lloc,使用平滑的L1损失,对于Lconf使用二分类softmax损失。
训练Trick:
-
一些纹理和标志和文本非常像,导致我们的网络难以区分。使用了hard negative mining方法。具体来说,在对应的数据集上的训练被分为两个阶段,第一阶段中负正样本的比例为3:1,第二阶段中为6:1。
-
数据扩充:和很多基于cnn的视觉问题相似,数据扩充是个增加训练集大小的必要手段。常用方法是在原图随机裁剪一块于ground truth的jaccard overlap大于最小值的图片。这样做存在两个问题,首先这个jaccard不适用于小物体,同时裁剪后的图像中文字可能会占据所有部分,这在自然图像中很不常见。所以我们加入了一个命名为object coverage的新约束。两个约束J和C定义如下:
其中, | ·|为基数,即面积。随机裁剪更适用于自然图像中包含很多小目标文字的检测。本文中,随机裁剪的阈值设置为0, 0.1, 0.3, 0.5, 0.7 and 0.9。随机裁剪后再放缩至网络的输入大小。
3. 多尺度训练:在最后的几个训练阶段,为更好的适应多尺度文字,使用了大尺度的输入尺寸。
结果:
参考:
https://blog.****.net/liuxiaoheng1992/article/details/86703611
https://blog.****.net/github_39502869/article/details/105681794
原文: