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

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

第一次写CSDN博客,这一篇主要是看了许多其他博主的文章,加上自己的一点理解,mark 一下,如果我有什么理解上的问题欢迎提出来。

先看一下主要的文本检测和识别的效果:
Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shape_第1张图片]
左边是水平文本的检测识别效果,中间的是有方向性的文本检测识别效果,右边的是本文所提出的端到端文本检测和识别结果,其中绿色框是检测结果,绿色框中的红色部分是识别结果。

我们可以从文章中可以大致看出Mask Textspotter和之前文章的差别:
1、一个简单平滑的端到端训练网络
2、可以检测任意方向的文本(一开始注意到这篇文章也是因为他的弯曲文本检测是比较少见的,让人印象深刻)
3、将语义分割和实例分割应用到了文本检测识别当中来

虽然这篇文章的网络主要是按着Mask RCNN略加改变的,但将时下当热的语义分割应用到文本识别中来也是比较新颖的(纯属个人观点)

接下来先大概了解一下图片分类、物体检测、语义分割和实例分割的区别(其实这四个的实质也是分类,只是后面两个是像素级别的分类)
Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shape_第2张图片

接下来看一下这篇文章所提出的网络:
Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shape_第3张图片

作者所提出的检测识别网络主要的基于Mask RCNN的,所以为了便于理解,下面我也贴出Mask RCNN的网络结合这一起看。

Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shape_第4张图片

作者提出的网络整体结构可以分为4个部分:
1、backbone:主要是FPN(特征图金字塔),这是自然场景文字检测的最常使用的网络,他将卷积所得的不同大小的特征图concate在一起,大文本在较小特征图中检测,小文本在大的特征图中检测从而加强对信息的利用,尽量不遗漏小文本

2、RPN网络:这个部分我感觉比较难以理解看了很多博客,比较推荐李沐大神的视频,在b站上有,讲了一系列物体检测的文章(包括RCNN系列,SSD,YOLO等),是结合着代码讲解,感觉很清楚。比较想指出的是这边作者RPN网络中所使用的anchor大小和ratio与检测物体的Faster RCNN一模一样,而不是采用文本检测中常用的长矩形anchor框,主要应该是本文想针对的是弯曲文本的检测和识别,而弯曲文本的形状通常也不是长矩形的,所以作者比较巧妙的还是使用了原有的anchor大小和比例

3,4 第三部分Fast RCNN和Mask Branch部分想合着一起讲一下,我一开始比较难理解,fast rcnn是做文本检测的,但检测出的文本框主要是矩形的而非本文显著的曲形文本框,而mask branch部分也有文本框的预测且是曲形的,后来主要再去看了看mask rcnn的文章,其中提到,mask rcnn中的mask branch主要是做语义分割以及辅助fast rcnn部分检测,在两部分之后会将两者的结果concate起来,再结合本文的将其用在文本检测识别的特殊性上来看,mask branch应该是主要的网络结构,而fast rcnn部分则是做到一个辅助结果,而且作者提到在测试阶段,主要是将fast rcnn检测出的结果输入mask branch中,做到快速和高精度。

下面是mask branch的结构:
Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shape_第5张图片

卷积网络:4个卷积层,一个反卷积层,再加上最后一个卷积层,减少通道数为38

结果输出包括一个全局文本实例映射(给出了文本区域的精确定位)、36个字符映射和一个字符背景映射。全局文本实例映射可以对文本区域进行精确定位,而不管文本实例的形状如何。字符映射是由36个字符组成的映射,包括26个字母和10个Ara bic数字。字符的背景图,不包括字符区域,也需要进行后期处理。

可见掩码分支不仅能用来分割文本区域,还能预测字符概率

label产生:

Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shape_第6张图片

Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shape_第7张图片

其实文章还提出了两个实现上的细节,一个是在预测时,使用了pixel voting的方法,还有是作者还用了字典方法,将检测出来的单词再做一个矫正,防止出现不正确的单词,在矫正过程中用了一种新的loss方法,这两块我还没有仔细理解,之后再做补充。

实验结果:

在水平文本检测和识别上:
Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shape_第8张图片

在方向性文本检测和识别上:
Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shape_第9张图片

在弯曲文本检测和识别上:
Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shape_第10张图片

从上面的实验结果也可看出,mask textspotter在任意方向的文本检测和识别上都基本到了state-of-the-art的结果,尤其在弯曲文本上效果突出。

最后说下该种方法的缺点:

无法用来检测中文,因为中文字的类别太多了
并且按着作者设置的label,似乎是只能检测大写字母的单词,这样也更加限制了这种方法的使用范围(这一点不是很确定,希望大佬指正)

你可能感兴趣的:(OCR小白,Mask,Textspotter,end,to,end,OCR,文本检测与识别)