2-D CTC Loss

Posted 爆米花好美啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2-D CTC Loss相关的知识,希望对你有一定的参考价值。

2D-CTC for Scene Text Recognition,1-D CTC Loss参考CTC Loss和Focal CTC Loss

Motivation

普通的CTC仅支持1-d,但是文字识别不像语音识别,很多时候文字不是水平的,如果强行“压”到1d,对识别影响很大,如下图所示

Review 1-D CTC

首先对alphabeta进行扩充,加入blank符号,然后定义一个映射规则: blank之间的相同字符可以去重
计算loss时,对每个gt label字符间加入blank

然后计算

但是如果穷举能够经过映射规则变换到apple字符串的话,计算量太大。其实可以将apple分开进行映射,其实是互不干扰的,这时可以用动态规划重复利用子问题答案,参考博客






2-D CTC

2d比1d多了个高度,不仅可以左右跳还可以上下跳。

左右跳是有固定的规则

而上下跳我们可以利用一个网络进行学习,上面第一个输出是wh各个位置的概率输出向量,而下面第二个输出是各个位置在h方向上跳动的概率,由于最后一列不用跳,因此输出是(w-1) h * h

每个位置在h方向跳动的概率和为1


同样在计算2-D CTC loss时依然可以用到动态规划,只是在多了个h方向(将原来的某一个点(一个概率值),换成某一条竖线,变成h个概率值乘以跳转概率的和)

备注

本文为了简便,在预测上下跳动概率时,假设同一列位置上,他们跳动到该列其他点上概率分布相同(好像attention呀,就是预测该列上出现文字的地方),该转移概率输出为(w-1) * h
作者说两者效果差不多

实验

解释下Vanill CTC + Attention,即网络结构和输出和2D-CTC一样,然后利用2d转移概率图乘以输出的概率图,最后在h方向求和以利用1d ctc

对比结果2d-ctc还是最好的

点评

个人认为这个应该是1.5d ctc,解决的是弯曲的一行文字,而不是真正的2d即多行文字

以上是关于2-D CTC Loss的主要内容,如果未能解决你的问题,请参考以下文章

验证码识别ctc_loss

CTC Loss原理

CTC_Loss

使用keras框架cnn+ctc_loss识别不定长字符图片操作

pytorch如何导入ctc库

自动驾驶—— Image Caption的学习笔记