文字识别OCR也是目前CV的主要研究方向之一。本文主要总结目前文字识别OCR方向相关内容,包括单独文字识别以及结合文字检测和文字识别的端到端的文字识别。希望这篇文章能够帮助各位。

图1 文字检测Detection与文字识别Recognition

对于文字识别,实际中一般首先需要通过文字检测定位文字在图像中的区域,然后提取区域的序列特征,在此基础上进行专门的字元识别。但是随著CV发展,也出现很多端到端的End2End OCR。

文字检测(Text Detection)

文字检测定点阵图片中的文本区域,而Detection定位精度直接影响后续Recognition结果。

图2

如图2中,红框代表「LAN」字元ground truth(GT),绿色框代表detection box。在GT与detection box有相同IoU的情况下,识别结果差异巨大。所以Detection对后续Recognition影响非常大!

目前已经有很多文字检测方法,包括:

EAST/CTPN/SegLink/PixelLink/TextBoxes/TextBoxes++/TextSnake/MSR/...

其中CTPN方法的介绍如下:

场景文字检测—CTPN原理与实现?

zhuanlan.zhihu.com
图标

文字识别(Text Recognition)

识别水平文本行,一般用CRNN或Seq2Seq两种方法(欢迎移步本专栏相关文章):

  • CRNN:CNN+RNN+CTC

一文读懂CRNN+CTC文字识别?

zhuanlan.zhihu.com图标

  • CNN+Seq2Seq+Attention

完全解析RNN, Seq2Seq, Attention注意力机制?

zhuanlan.zhihu.com图标

对于特定的弯曲文本行识别,早在CVPR2016就已经有了相关paper:

  • Robust Scene Text Recognition with Automatic Rectification. Baoguang Shi, Xinggang Wang, Pengyuan Lyu, Cong Yao, Xiang Bai. CVPR2016.

Robust Scene Text Recognition with Automatic Rectification?

arxiv.org

图3

对于弯曲不规则文本,如果按照之前的识别方法,直接将整个文本区域图像强行送入CNN+RNN,由于有大量的无效区域会导致识别效果很差。所以这篇文章提出一种通过STN网路学习变换参数,将Rectified Image对应的特征送入后续RNN中识别。

图4

其中Spatial Transformer Network(STN)指:

Spatial Transformer Networks?

arxiv.org

图5 STN

对于STN网路,可以学习一组点 (x_i^s,y_i^s) 到对应点 (x_i^t,y_i^t) 的变换。而且STN可以插入轻松任意网路结构中学习到对应的变换。

left (  egin{matrix}    x_i^s \    y_i^s   end{matrix}   
ight ) = T_	heta(G_i)=A_	heta  cdot  left (  egin{matrix}    x_i^t \    y_i^t \    1   end{matrix}   
ight ) = left [  egin{matrix}    	heta_{11} &	heta_{12} & 	heta_{13} \    	heta_{21} &	heta_{22} & 	heta_{23}    end{matrix}   
ight ] left (  egin{matrix}    x_i^t \    y_i^t \    1   end{matrix}   
ight )

如果对于 A_	heta 有:

 A_	heta = left [  egin{matrix}   s &0 & t_x \   0 & s & t_y    end{matrix}   
ight ]

代表典型二维平面图像的缩放 (s_x,s_y) +平移 (t_x,t_y) 运算:

x_i^t = scdot x_i^s+t_x\ y_i^t = scdot y_i^s+t_y

核心就是将传统二维图像变换(如旋转/缩放/仿射等)End2End融入到网路中。考虑篇幅不再进行详细介绍。

  • Scene Text Recognition from Two-Dimensional Perspective. AAAI2019.【待更新】

End2End OCR (Detection+ Recognition)

由于End2End OCR同时涉及文字检测+文字识别两个方向,对于不熟悉的读者建议首先阅读上述CTPN/CRNN/Seq2Seq三篇文章了解相关内容(当然求点赞喽)。

在之前介绍的演算法中,文字检测和文字识别是分为两个网路分别完成的,所以一直有研究希望将OCR中的Detection+ Recognition合并成一个End2End网路。目前End2End OCR相关研究如下:

  • Towards End-to-end Text Spotting with Convolutional Recurrent Neural Networks. Hui Li, Peng Wang, Chunhua Shen. ICCV2017.

Towards End-to-end Text Spotting with Convolutional Recurrent Neural Networks?

openaccess.thecvf.com

图6

该篇文章采用Faster R-CNN的Two-stage结构:首先Text Proposal Network(即RPN)生成对应的文本区域Text Proposal,后续通过Bounding Box regression和Box Classification进一步精修文本位置。但是不同的是,在RoI Pooling后接入一个LSTM+Attention的文字识别分支中,如图7。由于识别与之前介绍的文字识别方法大同小异,后续不再重复介绍。

图7

但是这样的结构存在问题。举例说明:Faster R-CNN的RPN只是初步产生Proposal,后续还需要再经过一次Bounding Box regression才能获取准确的检测框,该问题在CTPN论文中有说明,如图8:

图8 CTPN文章中提及RPN生成Proposal不准的问题

所以Text Proposal不一定很准会对后续识别分支产生巨大影响,导致该演算法在复杂数据集上其实并不是很work。

  • Deep TextSpotter: An End-to-End Trainable Scene Text Localization and Recognition Framework. Michal Busta, Lukas Neumann, Jiri Matas. ICCV2017.

Deep TextSpotter: An End-to-End Trainable Scene Text Localization and Recognition Framework?

openaccess.thecvf.com

图9 Deep TextSpotter

在与Faster R-CNN不同,Deep TextSpotter生成的Region Proposal包含6个数值:

[x, y, w, h, 	heta,p]

其中 [x, y, w, h] 代表Proposal box在图像中的位置, 	heta in (-frac{pi}{2},frac{pi}{2}) 代表Proposal box与水平方向的夹角, pin[0,1] 代表置信度confidence。

对于Region Proposal所在的特征 Uin mathbb{R}^{w	imes h	imes C} ,通过双线性插值可以获得 H』=32 固定高度的变换后的特征 Vin mathbb{R}^{(wH/h)	imes H	imes C}

V^c_{x,y}=sum_{x=1}^{w}sum_{y=1}^{h}{U^c_{x,y}cdot kappa (x-mathcal{T}_x(x))cdot kappa(y-mathcal{T}_y(y))}

其中 kappa(v)=max(0, 1-|v|) 代表双线性采样核,本质就是传统的图像旋转+缩放插值变换。

图10

在获得 Vin mathbb{R}^{(wH/h)	imes H	imes C} 后,显然可以后接RNN+CTC进行识别。可以看到Deep TextSpotter通过学习角度 	heta ,将proposal通过双线性插值变换为固定高度的水平特征,然后再进行识别,达到一种End2End的效果。与同时期的上一个方法类似,同样存在RPN生成Proposal不准导致识别率低的问题,所以在复杂数据集实际效果可能并不是太好。

图11 Deep TextSpotter对应的CTC识别

  • Attention-based Extraction of Structured Information from Street View Imagery. Zbigniew Wojna, Alex Gorban, Dar-Shyang Lee, Kevin Murphy, Qian Yu, Yeqing Li, Julian Ibarz. ICDAR2017.

Attention-based Extraction of Structured Information from Street View Imagery?

arxiv.org

图12 spatial attention ocr

该文章由Google在2017年提出,主要针对多视角的街景采集数据进行OCR,其关键点为:

  1. 利用CNN提取不同视角的图片的特征,并将特征concat为一个大的特征矩阵 f
  2. 计算图片中文的spatial attention alpha_talpha_t 越大该区域为文字区域的概率越大
  3. 通过 alpha_t 抽取 f 中文字区域特征 u_t ,并送入后续RNN进行识别

该方法利用spatial attention进行端到端OCR,相比检测+检测方法更加新颖。

  • Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shapes. Pengyuan Lyu, Minghui Liao, Cong Yao, Wenhao Wu, Xiang Bai. ECCV2018.

Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shapes?

arxiv.org

图13 Mask TextSpotter

该方法由 @旷视科技 在2018年提出,主要用于解决不规则弯曲字元End2End的识别问题。相比倾斜字元,处理弯曲不规则字元更难,无法简单通过Proposal角度 	heta 对特征进行变换。

Mask TextSpotter借鉴了Mask RCNN,首先由RPN网路生成Proposal,再由Faster R-CNN分支对Proposal做进一步分类和位置回归,同时通过Mask分支分割出文本所在区域Global word map和每个字元所在中心Background map。这样不仅可以获得整个文本word区域,还可以获得每个字元character区域。

图14 Mask TextSpotter进行文字识别

在文字识别方面Mask TextSpotter设计0~1和A~Z共计36个「one-hot」形式的Character map进行分类,即没有使用RNN直接强行分类。如果用Mask TextSpotter识别汉字,则需要设计4000+ Character map,这显然是不科学的。另外该方法在识别过程中也没有用到文字的序列信息。

  • Towards End-to-End License Plate Detection and Recognition: A Large Dataset and Baseline. Zhenbo Xu, Wei Yang, Ajin Meng, Nanxue Lu, Huan Huang, Changchun Ying, Liusheng Huang. ECCV2018.

Towards End-to-End License Plate Detection and Recognition: A Large Dataset and Baseline?

openaccess.thecvf.com

在该文章中提出一个包含250k图的中国车牌数据集CCPD,每个标注包含1个box+4个定位点+识别文字GT:

图15 车牌数据集CCPD

在网路方面该文章提出一种PRNet:

  1. 利用类似SSD的Single-Shot网路,直接在不同尺度检测车牌,输出 [cx,cy,w,h] 四个量;
  2. 然后利用Roi Pooling将box所在的特征图变为固定大小,如 8*16*C
  3. 把IoU大的box对应区域的特征拼接在一起,进行识别。
图16 PRNet

该文章核心内容就是推出了一个车牌OCR数据集CCPD,并在这个数据集上提出一种BaseLine方法。该方向研究人员可以尝试使用该数据集。

在这里特别感谢一下所有开放数据集的研究人员!数据才是cv第一生产力!

  • An end-to-end TextSpotter with Explicit Alignment and Attention. Tong He, Zhi Tian, Weilin Huang, Chunhua Shen, Yu Qiao, Changming Sun. CVPR2018

An end-to-end TextSpotter with Explicit Alignment and Attention?

openaccess.thecvf.com

图17

改文章与Deep TextSpotter比较类似,首先生成带有角度 	heta 的倾斜Text Proposal,然后通过类似于RoI Pooling的Text-alignment提取固定长度的feature sequence,再送入RNN+Seq2Seq+Attention结构进行识别。

图17

与Deep TextSpotter不同的是,Text-alignment在通过双线性插值提取到整个Proposal特征后,再通过一组Inception卷积获取feature sequence送入RNN,而不是直接把双线性插值结果送入RNN。

图18
  • FOTS: Fast Oriented Text Spotting with a Unified Network. Xuebo Liu, Ding Liang, Shi Yan, Dagui Chen, Yu Qiao, Junjie Yan. CVPR2018.

FOTS: Fast Oriented Text Spotting with a Unified Network?

arxiv.org

FOTS采用Single-Shot结构结合Feature Pyramid Network直接检测文字区域,输出带角度 	heta 的Bounding Box;之后利用双线性插值RoIRotate获取固定大小的特征,送入双向LSTM进行识别。

图20 FOTS Architecture

图21 FPN
图22 RoIRotate

由于使用Single-Shot结构,所以应该是相对「Fast」一点。。。

  • SEE: Towards Semi-Supervised End-to-End Scene Text Recognition. Christian Bartz, Haojin Yang, Christoph Meinel. AAAI2018.【待更新】

SEE: Towards Semi-Supervised End-to-End Scene Text Recognition?

arxiv.org

图23
图24

另外SEE作者2017年在arXiv上放出STN-OCR的论文,应该是没有中任何会议。考虑到完整性也挂在这里。

STN-OCR: A single Neural Network for Text Detection and Text Recognition?

arxiv.org

只整理了CVPR/ICCV/ECCV/ICDAR/AAAI等顶会相关演算法,后续有相关paper随时更新。

推荐阅读:

相关文章