[关闭]
@Team 2019-02-12T07:20:42.000000Z 字数 3360 阅读 1741

ctpn:图像文字检测方法

夏敏


1. 区别

本文工作基于faster RCNN , 区别在于

  1. 改进了rpn,anchor产生的window的宽度固定为3。
  2. rpn后面不是直接接全连接+分类/回归,而是再通过一个LSTM,再接全连接层。
  3. 坐标仅仅回归一个y,而不是x1, y1, x2, y2
  4. 添加 side-refinement offsets(可能这个就是4个回归值中的其中2个)

2. 问题分析

  1. 文字目标的特殊性,一个很大的先验是,文字总是水平排列的。
  2. 文字的特征总感觉体现在edge上。
  3. 自然场景文字检测的难点在于:小目标,遮挡,仿射畸变。本文使用VGG16,只使用conv5,可能对小文字的检测效果不好。

3. 实验

CTPN用在ICDAR2017中文检测数据集上的结果:AP=0.18

论文的关键idea

文本检测的其中一个难点就在于文本行的长度变化是非常剧烈的。因此如果是采用基于faster rcnn等通用物体检测框架的算法都会面临一个问题:怎么生成好的text proposal。这个问题实际上是比较难解决的。

Detecting Text in Natural Image with Connectionist Text Proposal Network

在这篇文章中作者提供了另外一个思路,检测一个一个小的,固定宽度的文本段,然后再后处理部分再将这些小的文本段连接起来,得到文本行。检测到的文本段的示意图如下图所示。
image.png-136.7kB

pipeline

整个算法的流程主要有以下几个步骤:(参见下图)
image.png-59.5kB

一些细节

vertical anchor

k个anchor的设置如下:宽度都是16像素,高度从11~273像素变化(每次乘以1.4)
- 预测的k个vertical coordinate的坐标如下:
回归的高度和bounding box的中心的y坐标如下,带*的表示是groundTruth,带a的表示是anchor

BLSTM

文章使用了双向的LSTM,每个LSTM有128个隐层
- 加了RNN之后,整个检测将更加鲁棒,
image.png-376.1kB

Side-refinement

image.png-243.6kB

训练

对于每一张训练图片,总共抽取128个样本,64正64负,如果正样本不够就用负样本补齐。这个和faster rcnn的做法是一样的。
- 训练图片都将短边放缩到600像素。

总结

这篇文章的方法最大亮点在于把RNN引入检测问题(以前一般做识别)。文本检测,先用CNN得到深度特征,然后用固定宽度的anchor来检测text proposal(文本线的一部分),并把同一行anchor对应的特征串成序列,输入到RNN中,最后用全连接层来分类或回归,并将正确的text proposal进行合并成文本线。这种把RNN和CNN无缝结合的方法提高了检测精度。

特点

不是在字的级别,最终输出是在行的级别
- 对每一行,每一个feature map位置,固定需要回归的框的宽度为16像素,需要预测k个anchor的高度和数值方向
- side-refinement用来预测每一个anchor的x的坐标,准确率有效得到提升

问题

1没有很好地处理多方向的文本行

2训练的时候由于有regression和LSTM,需要小心控制梯度爆炸。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注