EAST 场景文字检测

正午 2020-03-09 PM 433℃ 0条

EAST: An Efficient and Accurate Scene Text Detector arXiv:1704.03155v2

EAST 是文字检测算法,输入:图片,输出: 图片中文字的位置

EAST 的主要创新在对文字位置的定义,也就是文字检测这个问题的定义. 从而简化整个检测的流程,达到比较好的速度和准确率。

EAST 主要考虑的是文字标注为四边形的情况,文中提出了两种方式, 带角度的矩形框 (RBOX) 和 四边形 (QUAD)。 我解释下 QUAD , RBOX 相对会更加复杂和麻烦。

如果我们把最终的特征上采样到和输入图片一样大,EAST 相当于是在每个像素点预测当前像素是文字区域的概率我们可以叫做 score_map(H,W), 同时对当前点到标注框四个定点的距离做回归,由于有四个点,所以总共输出八个值 我们可以叫做 geo_map( 8,H,W) 最后用 score_map, 和 geo_map 后处理得到文字框。

上面说了 EAST 通过预测当前像素是文字的概率和对当前几何信息的回归来定位文字位置,训练数据就需要我们准备对应的 geo_map 和 score_map
EAST 用到一个很多文字检测常用的技巧,把标注框缩小如下图这样,虚线是真实标注框,绿色实线是缩小后的框,缩小后的框内的像素 score_map 的值为 1.0 其他为 0, 然后计算每个缩小的框内的像素到虚线框的4个点的水平距离和垂直距离。当然四个点因该是有顺序的, geo_map 一共 8 个 channel 每两个 channel 对应一个顶点。缩小框我理解主要是为了能很好的把很近的文字分开,如果自己的数据都是一行一行的,所以我以为完全可以不缩。

截屏2020-03-09下午3.21.22.png

loss 自然也分两部分, score_map 对应的 loss 是 BCELoss , 至于 geo_map 文章写的是和 fast-rcnn 一样的平滑的 l1 .

后处理的过程也非常简单,根据 score_map 可以知道文字在文字区域内的像素,每个像素会对应八个位置信息,根据这些位置信息我们能计算出一个矩形框,所以在 score_map > threshold 的任意一个点都能得到一个框,所以最终会有很多框。文章写的是用 Locality-Aware NMS 一句话解释就是先合并合并的时候是对坐标做了加权平均,再 NMS。真实用的时候完全可以对 score_map 做连通域分析,然后计算得到所有的顶点,最后拟合一个最小面积的矩形框,这些操作都能用 opencv 完成。

文中提取特征用的是 PVANet 然后 unet 的结构融合特征,这里完全可以采用 resnet 或者其他特征融合的方式应该也是可以的,

标签: none

非特殊说明,本博所有文章均为博主原创。

评论