场景文字识别总结

待补:

  • TPS-based STN;
  • ScRN;
  • weighted loss function;
  • label smoothing;
  • warmup learning rate, init lr scale;
  • Datasets-Chn-Eng;
  • post-processing tricks;

目录:

  • beam search
  • CTC loss
  • attention mechanism 注意力机制

Beam Search

字符识别的beam search只在inference时(train的时候label已知),且只用于输出时存在前后依赖关系的网络结构中使用;

  1. 假设预测第一个位置的字符为a的概率为0.2, 为b的概率为0.1;
  2. 预测第二个字符时,前一个预测字符作为输入,如果第一个字符预测取a,则第二个字符预测为c的概率最大,为0.2;
  3. 但是如果第一个字符取b,此时可能第二个字符预测为d的概率最大,为0.9;
  4. 这个时候整个字符串预测为ac的概率为 0.2 * 0.2 = 0.04, 而预测为bd的概率为 0.1 * 0.9 = 0.09。

这种情况下我们发现基于贪心的策略不是很合理,因此beam search的做法是选定一个K值(K > 1),每次取前K个概率最大的字符和前面保留的前K个概率最大的字符串(长度为n)排列组合,再得到概率最大的长度为n+1的字符串,依次向后预测和生成。


CTC (loss):Connectionist Temporal Classification (参考: CTC)

  • 作用:切分输入序列的单个词以及整合输出序列;
  • 优点:
    • 多个连续文字,作为一个输入;
    • 整合 RNNs 输出最优序列;
  • e.g 

       上图 RNN 每一步的输出其实都是一组概率分布,p(l|x), l\in Alphebat, 对于第一个矩形框,输出可能是p(l='h'|x)=0.5, \, p(l='m'|x)=0.3

  • 损失函数:Lebal Error Rate (LER),其中涉及到 ED (Edit Distance, 量化两个字符串的相异性)的概念。

定义:

场景文字识别总结_第1张图片

  • LER(h, S')=\frac{1}{|S'|} \sum_{(x,z)\in S'}\frac{ED(h(x), z)}{|z|}
  • CTC 的 softmax 输出类别有 L+1 种,1 为分隔符(L通常为94:10个数字,52个大小写字母,31个标点);
  • 场景文字识别总结_第2张图片
  • 同一种输入对应的多种输出可能会有多种形式:把空格和连续重复的字母去掉,即l=B(\pi), |l|\leqslant T
  • 预测标签有很多备选的输出序列,所以预测标签 ll 的概率公式:p(l|x)=\sum_{\pi \in B^{-1}(l)}p(\pi |x)
  • 输出模型构建:
    • 搜索最优前缀:找到第一个字母的最优输出,然后找到以这个字母为开头的子串,并在子串中找到下一个最优的子母,依次下去。
    • 启发式(论文中):用预测出来的空格把预测结果划分成几段,且预测成空格的概率必须大于一个阈值(强条件),再对每一段用最优前缀的方法;

你可能感兴趣的:(场景文字识别)