CTC的直观理解(Connectionist Temporal Classification连接时序分类),单行文本时序分类识别的端到端方法

llvm15源码分析:函数调用链、流程分析、链长短、频率分析

clang-前端插件-给各种无花括号的“块”加花括号-基于llvm15–clang-plugin-add-brace

CTC(Connectionist Temporal Classification), ctc擅长单行验证码识别:

两组谷歌验证码示例在这里插入图片描述

ctc可以提高单行文本识别鲁棒性(不同长度不同位置 )。本文用几个重点直观的见解把ctc讲的简洁易懂,所以在这里就和大家一起补一补ctc 。

首先ctc算不上一个框架,更像是连接在神经网络后的一个归纳字符连接性的操作:
在这里插入图片描述
来自:https://towardsdatascience.com/intuitively-understanding-connectionist-temporal-classification-3797e43a86c

cnn提取图像像素特征,rnn提取图像时序特征,而ctc归纳字符间的连接特性。

那么CTC有什么好处?

因手写字符的随机性,人工可以标注字符出现的像素范围,但是太过麻烦,ctc可以告诉我们哪些像素范围对应的字符:

在这里插入图片描述

手写字符的单行像素标注, 来自:https://towardsdatascience.com/intuitively-understanding-connectionist-temporal-classification-3797e43a86c

如上图标注“t”的位置出现t字符,标注o的区域出现o字符。是的就是这样简单,ctc会总结出上述标注规律,不用人工标注,你所要做的只是提供loss函数做模型训练。

CTC是如何工作的?

ctc的编码有一个地方需要注意即是对重复字符的处理,如上述例子中的“to”, 如果真实字符串是“too”,而编码时也为“to”,就会和真实字符串“to”混淆。

所以在重复字符处要引入一个占位符号“-” 。下面是一些例子:

在这里插入图片描述

来自:https://towardsdatascience.com/intuitively-understanding-connectionist-temporal-classification-3797e43a86c

然后,ctc会计算loss ,从而找到最可能的像素区域对应的字符。事实上,这里loss的计算本质是对概率的归纳:

在这里插入图片描述

来自:https://towardsdatascience.com/intuitively-understanding-connectionist-temporal-classification-3797e43a86c

如上图,对于最简单的时序为2的(t0t1)的字符识别,可能的字符为“a”,“b”和“-”,颜色越深代表概率越高。

对于真实字符为空即“”的概率为0.6*0.6=0.36

而真实字符为“a”的概率不只是”aa” 即0.4*0.4 , 实时上,“aa”, “a-“和“-a”都是代表“a”,所以,“a”的概率为:

0.40.4 + 0.4 * 0.6 + 0.60.4 = 0.16+0.24+0.24 = 0.64

所以“a”的概率比空“”的概率高!通过对概率的计算,就可以对之前的神经网络进行方向传播更新。

最后,ctc的解码也是根据概率获得最高的那条路径:

在这里插入图片描述

来自: https://towardsdatascience.com/intuitively-understanding-connectionist-temporal-classification-3797e43a86c

当然,我们讨论到现在,CTC的适用范围还只是单行文本,对于多行如双行的黄牌识别就可能需要介入一些分行算法(line segmentation algorithms 参考【2】)的集成:

在这里插入图片描述

来自:http://blog.sina.com.cn/s/blog_13ead40120102wsxh.html

对于多行复杂的文本也是一样的:

在这里插入图片描述

参考文献:

  1. https://towardsdatascience.com/intuitively-understanding-connectionist-temporal-classification-3797e43a86c
  2. Joint Line Segmentation and Transcription for End-to-End Handwritten Paragraph Recognition
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ziix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值