前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >03.OCR学习路径之文本检测(中)CTPN算法简介

03.OCR学习路径之文本检测(中)CTPN算法简介

原创
作者头像
Aalto
修改2019-11-14 17:06:36
1.8K0
修改2019-11-14 17:06:36
举报
文章被收录于专栏:晓说AI晓说AI

前言

文字识别的过程,首先是要确定文字的位置,即文本检测。

本文主要分享的是CTPN,paper名称是Detecting Text in Natural Image with

Connectionist Text Proposal Network,论文链接地址:https://arxiv.org/pdf/1609.03605.pdf

这个算法是在2016年被提出,由Faster RCNN改进而来,本文默认读者熟悉CNN,LSTM原理和Faster RCNN网络结构。配合上次课程《02. OCR学习路径之文本检测(上)Faster R-CNN算法简介》服用,效果或许会有一点。蛤蛤蛤,以下进入正题。

一、 CTPN算法简介

原文中有这样一段话,讲述了通用目标检测为什么不能应用于场景文本检测的:

However, it is difficult to apply these general object detection systems directly to scene text detection, which generally requires a higher localization accuracy

因为文本的字体更小,场景更加复杂,对检测框的精确度要求更高。

1.1 CTPN网络结构

CTPN的网络结构图如下:

原始CTPN只检测横向排列的文字。CTPN结构与Faster R-CNN基本类似,但是加入了LSTM层。假设输入1幅Image:

1. 首先VGG提取特征,获得大小为C*H*W的conv5 feature map,C是channel的个数,或者说是feature map数。

2. 之后在conv5上做3*3的sliding window操作,共享卷积计算,加速训练的一种方式,即每个点都结合周围区域特征获得一个长度为3*3*C的特征向量。输出H*W*3*3*C的feature map,该特征显然只有CNN学习到的空间特征。再将这个feature map进行Reshape

3. 然后将H*W*3*3*C这个feature map以最大时间长度W的数据流输入双向LSTM,学习每一行的序列特征。这样就学习到了图像像素间的水平方向的信息,双向LSTM输出256xHxW,再经Reshape恢复形状,该特征既包含空间特征,也包含了LSTM学习到的序列特征。

4. 然后经过“FC”卷积层,变为512xHxW的特征

5. 最后经过根据文章提出的vertical anchor mechanism,去预测文本框anchor是否为正,anchor中心坐标y和高度等

1.2 anchor生成机制

Anchor提出的方式不同于RPN,而是直接在FC层后的feature map上的每一个点都生成anchor,因为VGG的特征H和W是在原图上缩小16倍的,那feature map的上每个点映射回到原图上就是宽度大小是16个像素区域,从第一个anchor开始,步长stride也是16像素(映射在原图尺寸的),而高度则从11像素到283像素(依次除以0.7)变化,总共10个anchor.如下图。

这样设计Anchor的好处有:

l 保证每一行所有的anchor之间都不重合

l y值的取值区间在[11,283],适应场景多,可以是小文字,也可以是像广告牌那样的大字体;

l 预测的时候只需要预测anchor中心坐标y,anchor高度h,不需要预测中心坐标x的值,宽度是固定值16也不需要预测,

l 同时预测是text/none-text区域

垂直Anchor机制
垂直Anchor机制

图 垂直Anchor机制

相关公式如下:

vertical anchor效果图
vertical anchor效果图

当然了,仅保留那些还在图像内部的anchor,超出图像的都删掉,这一点和faster-RCNN的思想一样。

1.3 为什么用side-refinement

先看正anchor的连接法则是怎样的。

对于任意两个相邻的proposals: Bj 和 Bi,需要满足如下三个条件:

(i) Bj在水平距离上离Bi最近

(ii) 该距离小于50 pixels

(iii) 它们的垂直重叠(vertical overlap) > 0.7

但是连接完了之后,或许有的文本框的左右两端比较不够精确,可能框多了文本或者少框了,最担心的就是少框了,横向的宽度少了个像素点,对于通用目标的检测或许会影响不大,但是就文本而言,可能会导致信息的丢失,所以需要再精修一下每个anchor最左侧或者最右侧的坐标。也就是让之前预选框里的anchor进行左移或者右移动。

因此引入side-refinement的概念。

论文里的公式(4)如下:

其中x_side是边框最左或者最右的x坐标值,C_xa是最边缘正anchor的中心坐标,w_a=16,带*的都是GT值。

效果是这样如下图,红色是加了side-refinement的效果,不过目前还没人复现过,哇咔咔。

二、训练Multi-task Loss设计

获得Anchor后,与Faster R-CNN类似,联合预测关于每个固定宽度proposal的位置(location)和文本/非文本分值(text/none-text score)。序列化的anchors被连接到一个RNN上,无缝地与卷积网络相接,产生一个end-to-end的训练模型。

CTPN会做如下处理:

1. Softmax判断Anchor中是否包含文本,即选出Softmax score大的正Anchor;

2. Anchor位置信息的回归:修正包含文本的Anchor的中心y坐标与高度h;

3. Side-refinement:两端点框的回归,其实影响很小。

文本/非文本loss[采用的是softmax],垂直坐标loss[采用的是L1回归],side-refinement loss[smooth L1]

4. 这里k为anchor的个数,一共包含10个anchor,即k=10,从11-283像素,每次乘以1.4。该阶段分别输出垂直回归的中心点垂直方向的偏移和高度的偏移(vertical coordinates),维度为b*h*w*c*k(c=2,k=10),每个anchor回归的框的得分(score),前景得分和背景得分,维度为b*h*w*c*k(c=2),边框边缘的左右偏移值(side-refinement),维度为b*h*w*c*k(c=1)。

对于论文中所涉及的数字解释大致如此。


广告时间开始啦:

本课视频在B站有同步哦,欢迎来点赞三连!

https://www.bilibili.com/video/av73805100?p=3

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、 CTPN算法简介
    • 1.1 CTPN网络结构
      • 1.2 anchor生成机制
        • 1.3 为什么用side-refinement
        • 二、训练Multi-task Loss设计
        相关产品与服务
        文字识别
        文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档