An End-to-End Trainable Scene Text Localization and Recognition Framework
Baseline: Yolo v2 + RPN + STN + RNN +CTC

Yolo v2 backbone

-
使用yolo v2前18层卷积和5个池化,去掉全连接层,得到全卷积网络
用卷积层代替全连接得到全卷积网络,是为了任意输入大小,并没有减少参数!
- 全卷积就是卷积核与输入图像大小相同
从最后一层特征图到原全连接的第一层,取卷积核的滤波器模板大小与特征图大小相同,且卷积核的通道和特征图通道也保持一致,立体核的个数与下一层神经元个数即原始全连接第一层相同即可。
比如,最后一层特征图是7x7x256全连接层为7x7x256x2048,得到2048x1的向量,这个操作要用卷积替代,就是2048个7x7x256的立体卷积核。
- 全卷积就是用1x1卷积代替全连接
原始全连接和全连接层之间的 其通道与前一层保持一致,个数与后一层保持一致即可。
比如从2048x1到1024x1的卷积核就是2048x1x1x1024。
此外,除了任意输入大小,卷积相比于全连接的全局信息更多的关注的是局部邻域信息。
-
使用BN,归一化输入数据,并学习重构输入分布的参数,用于加速网络的收敛
dropout,作用缓和过拟合
yolo v2中认为使用了BN可以代替dropout
BN某种程度上可以缓和过拟合且延缓梯度消失
RPN
- yolo v2相比于yolo直接回归框,借鉴了Faster中anchor机制的思想,加入了RPN,也就是几个卷积层

- 在yolo中特征图上一个grid只预测其对应回原图的范围内,bbox的gt中心落在其间的object,即学习的偏移量激活后的值在(0,1),宽高的形变量通过学习log(b/p),(使得学习的bbox位置相关的量都在相同的范围内 )

- 使用K-means聚类,要求与真值iou至少为0.6才有效,得到的14种初始anchor box,文本的水平条形特性

与一般的RPN相比,新增了一个量,框的旋转角是直接学习的,θ∈(-π/2,π/2)
Bilinear Sampling
仿射变换与双线性插值
类似Faster,针对RPN阶段提出了不同大小的proposals要进入Fast中做二次回归,提出了RoI Pooling。
由于检测的文本框大小不同,要进入接下来的文本序列识别网络,使用STN对图像做一个矫正并将高度归一化,得到相同高度不定长的文本序列图像。

| κ(v) = max(0, 1 - | v | )是一个bilinear sampling kernel,T即为学出来的网格,其实就是一个仿射坐标变换矩阵 |
使用STN学习一个从特征图到归一化高度文本序列图像的仿射变化
这个图有种 deformable conv 的感觉

使用双线性插值计算仿射后坐标不在整数点上的像素

Recognition
一般检测任务都有NMS删除重复的框,在这里作者将NMS操作延后,在识别后再做,因为与真值iou最高的检测框的识别结果不一定优于iou也很高但不是最高的框。
识别网络结构

- Leaky ReLU

- PReLU中的ai是根据数据变化的;
- Leaky ReLU中的ai是固定的;
- RReLU中的aji是一个在一个给定的范围内随机抽取的值,这个值在测试时固定。
CTC alignment


CTPN中没有使用CTPN,只有BLSTM,CRNN中使用了CTC是先将网络输出的序列CTC-decoder解码为文字序列,通过计算使得序列概率最大(softmax的结果)得到hh–e–ll-lll-oo再合并为hello,且训练时使用CTC损失
为啥用CTC?
在RNN中,输出的文本或语音序列一般短于输入的特征序列,直接用softmax或者交叉熵是不行的,损失反传时不知道对应回哪个部分,因此使用CTC损失。CTC操作的第一步也是用softmax,可能的类别数比候选字符表中字符个数多一个,然后就产生了-hh–e–ll-lll-oo–,再合并为hello,然后计算损失,与softmax损失差不多,要记录是在初始序列中哪些位置对应了预测序列中错误的部分。
Training
- 检测用ImageNet预训练的模型在SynthText-80W上训练3个epochs
- 识别在Synthetic Word-9M上训练3个epochs
- 在SynText,Synthetic Word,ICDAR2013,ICDAR2015上联合训练,并随机裁剪原图宽高的30%
- 端到端联合训练在检测识别两个任务上超过各自单独的最高水平
Evaluation
测试集
- ICDAR2013(专业相机)相对水平
- ICDAR2015(Google Glass)较多倾斜
- COCO-TEXT 难度较大 倾斜,拍摄角度
任务
- text localization
- word spotting
- end-to-end
评价指标
-
检测任务要求IOU>0.5是召回
-
识别任务中一般有:
- 强词典:即候选的单词已知,就在固定集合里找
- 弱词典:即一般意义的词典,语义可能会出现的单词
- 一般generic:没有词典,直接按识别的结果
有词典可以在网络预测后加入计算寻找词典中编辑距离最小的对结果加以修正,因而识别准确率会高一些。
实验结果


总结
- 使用在RPN中加入旋转角度信息的yolo v2检测结构
- 使用STN网络学习仿射变换对检测结果(带有旋转角度的)候选框做一个高度归一化,类似RoI pooling
- 将归一化后的检测文本框输入到识别网络,识别使用rnn和ctc
- 先交替后联合训练端到端
原文链接:
http://openaccess.thecvf.com/content_ICCV_2017/papers/Busta_Deep_TextSpotter_An_ICCV_2017_paper.pdf