文字检测+识别之Deep_TextSpotter

论文:

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

Github:

https://github.com/MichalBusta/DeepTextSpotter

 

ICCV 2017的文章

Pipeline:

整体流程,输入图片先进行一个基于YOLOv2 的全卷积网络,然后经过RPN网络,输出经过NMS过滤后的ROI边框,然后根据该边框在最后一层卷积层上通过类似于STN的方式映射出高度固定的patch块。然后基于ctc进行识别。再根据识别的结果进行NMS过滤,得到最终结果。

这里在训练的时候,只取预测边框和targets的IOU最大的边框进行loss计算。而在测试的时候,如果也这样做,会出现漏检的情况。因此修改为通过一个阈值的限制,只要高于固定阈值的都会进行前向传播,后续再将得到的结果进行合并。

 

FCN:

该基础结构采用YOLOv2 的结构,使用了18个卷积层,5个pooling层。假设输入图片为H*W*3,最终得到的featuremap大小为(W/32)* (H/32)*1024

 

RPN:

首先RPN模块的anchor还是采用YOLOv2 中使用的基于kmeans的方式,在训练集合上生成的包含了各种aspect ratio和scale的一共14个anchor,即k=14。

RPN模块会输出预测的中心坐标rx,ry,宽高rw,rh,角度rseita,得分rp。一共6个维度的特征。加上anchor的维度,最终将会输出(W/32)* (H/32)*6k 的特征图。

坐标的预测方式和Yolov2也一样。角度seita是Yolov2中没有的。

如上式所示,rx,ry,rw,rh,rseita为需要预测的值。

这里预测中心坐标rx,ry,和宽高rw,rh来生成最终的边框。最终的x,y,w,h分别表示中心坐标相对于anchor中心的倍数和宽高相对于anchor宽高的倍数。

cx,cy为框的中心坐标所在的grid cell 距离左上角第一个grid cell的cell个数。

rx,ry为预测的边框的中心点坐标。

σ()函数为logistic函数,将坐标归一化到0-1之间。最终得到的bx,by为归一化后的相对于grid cell的值。

rw,rh,为预测的边框的宽,高。求exp函数后会得到anchor的不同倍数,包括小于1和大于1的。

aw,ah为anchor的宽,高。

seita等于rseita,为直接预测的角度。角度区间为(-pi/2,pi/2)

 

Bilinear Sampling :

该模块主要进行旋转,平移,缩放的仿射变换。通过该变换,将ROI区域都归一化到固定32个像素的高度。类似于stn的操作。和roi pooling操作还是有区别。roi pooling只能得到固定大小的ROI区域,但是Bilinear Sampling 可以得到固定高度,宽度不一定的ROI区域,很好的保证了aspect ratio。缺点就是,这块没法像roi pooling那样走并行了。

 

Text Recognition :

识别模块的网络结构如下:

Loss使用的是ctc loss。

 

总结:

(1)以前的检测框架都是利用检测的分数来过滤检测框。但是本文利用识别结果的分数来对检测框进行过滤,思想很好。更好的使用检测辅助识别,识别辅助检测。这样做的优势就是只需要一个RPN模块就可以了,而不需要额外的后续的fast RCNN模块了。自然网络整体效率就会大大提升。

(2)整体RPN检测模块+ctc识别模块,相比mask text spotter只能识别26个字母和10个数字更加具有通用性。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值