总结

  • 端到端文本检测,端到端日期识别
  • 不需要进行字符分割和水平缩放,可识别任意长度序列
  • CNN+RNN架构,检测结果更具鲁棒性
  • CTC选择最优序列
  • 可检测部分旋转后的日期
  • 无需对旋转后的角度进行数据标注
  • STN + CTPN + CRNN

这是一个经典的架构。可以替换的部分有VGG的部分,可以用DenseNet,ResNet替代,体积更小,速度更快,更精准。ROI生成也可以换其他的,参考YOLO,个人不觉得需要复杂。识别部分的特征提取也可以考虑换成其他的base。


CTPN部分(检测)

  1. CNN卷积提取特征,取得特征图层(HxWxC)
  2. 将提取后的特征做卷积滑窗,每个滑窗负责预测K个可能存在的文字位置
  3. 由于文字具有上下文关系,考虑后面接一个BLSTM(双向的LSTM)
  4. 将卷积后的滑窗(Wx3x3xC),变形后接入到BLSTM中
  5. BLSTM将输出Wx256的特征图层,再接入隐藏层为512的全连接层,准备输出
  6. 输出分两部分,2K个坐标与2K个分类(第一个2是由于存在左上与右下的坐标,第二个2由于只预测是文字还是背景)
  7. 通过真实数据标注与网络输出部分计算每个文字框的实际覆盖率
  8. 输出文本可能存在区域,计算损失函数后对网络权重进行更新,损失函数由二进制的交叉熵与L1线性回归组成

后续处理步骤

  1. 对实际输出做过滤处理,过滤掉IOU较小的文本框
  2. 采用NVM(非极大值抑制算法)进行二次过滤
  3. 设定阀值,将靠的较近的文本框连接起来,形成最后的长文本框

基于Faster RCNN的目标检测算法改进的内容

  • 由于目标主要是文字与日期,因此强调上下文关系,因此接一个循环神经网络来考虑时间序列的数据
  • 预测的文本端的位置无需输出四点(中心坐标,长,宽),改为输出两点(中心Y轴,长),这是由于文字框往往不存在- 固定宽度且可能出现在任意位置
  • 相对于传统的算法,无需构建底层特征,网络自学习特征,更具鲁棒性

CRNN(识别)

  1. 根据识别后的文本框定位到文本位置,作为基础特征图层输入CNN
  2. 卷积后进行特征切割,形成时间序列的特征图层
  3. 输入到BLSTM
  4. CTC算法选择最佳序列与剔除多余字符

亮点:

  1. 加入批量归一层加速收敛
  2. 采用深度RNN,让模型更具非线性,更具鲁棒性
  3. 最后两层MaxPool采用2x1窗口,更加适用与文字

STN(空间预处理)

  • 对倾斜文字进行优化,空间转换网络预处理
  • 无需特殊标注,自动对倾斜文本框进行线性放射处理
  • 使得整体识别更具鲁棒性
  • 可作为处理层在任意位置加入定制的网络

亮点: Bipolar interpolation.

缺陷:

  1. 难收敛,需大量数据

附图: