LSTM 与 CTC loss (以及DP、HMM)

最近在OCR识别,用到了CTC loss。只能说爱你不容易啊。

1、CTC解决什么问题?

[1] Sequence to sequence learning
[2] Unsegmented real-valued input stream (一般用于语音与光符字体识别)

LSTM 与 CTC loss (以及DP、HMM)_第1张图片

因为如果在ocr或者语音方面,寻求分割的方式解决识别问题,那是难上加难。 例如:分割难度大,成本高,错误率高

LSTM 与 CTC loss (以及DP、HMM)_第2张图片

2、解决问题分几步?

[1] Classification
[2] Temporal Classification
[3] Connectionist Temporal Classification

如图:

这里写图片描述

3、一个实例

本例中,batch_size=1,图像为RGB 3通道,size=64*128

3.1 首先对图像特征提取

LSTM 与 CTC loss (以及DP、HMM)_第3张图片

3.2 然后送入lstm中

LSTM 与 CTC loss (以及DP、HMM)_第4张图片

3.3 整个lstm视图

LSTM 与 CTC loss (以及DP、HMM)_第5张图片

3.4 结果

LSTM 与 CTC loss (以及DP、HMM)_第6张图片

4 如何训练网络

第3小节已经说明了,网络如何进行识别(network的一次inference),本节讲述如何训练网络

4.1 网络的损失计算

LSTM 与 CTC loss (以及DP、HMM)_第7张图片

上图展示了CTC loss 的计算过程,也就是一次前向传播的损失。 就是当前序列标签的负对数
这个看起来简单,但是时间片的长度为8,每个时间片可能出现6中候选标签中的任意一种。共有6的8次幂这么多种可能。因此计对应的标签的负对数并不是一件简单事!

4.2 动态规划

Reference

【1】http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.16.6652&rep=rep1&type=pdf
【2】https://www.cs.toronto.edu/~graves/preprint.pdf
【3】http://deeplearning.net/tutorial/lstm.html
【4】https://github.com/dlunion/CaffeLSTM-OCR
【5】https://www.youtube.com/watch?v=uVbOckyUemo

你可能感兴趣的:(ocr)