CTC blank 理解

 

项目场景:

提示:PaddleOCR 源码阅读
ppocr/data/postprocess/rec_postpocess.py

使用ctclabeldecode


问题描述:

当时面试时 问CTC是如何解码的,回答有点模糊,就大概理解是一个序列话,跟字典去一一对应


解决方案:

1、ctc blank机制

现在的理解是这样的。一张图片要映射到一个字符序列,识别的基础还是单字符的识别(如果不考虑直接把图片映射为一个单词的方法)。单字符的识别就涉及到图片切分的问题了,切分有显示切分和隐式切分两种方法。早期的方法是显示切分,切成图片块序列再进行单字符分类,但是识别性能受制于切分的质量。后面出来的隐式切分方法如crnn,用cnn+lstm做序列建模,加上ctc转码实现隐式切分。

也就是说切分是绕不开的,实现切分的话就需要知道字符边界。显示切分确定字符边界最简单的方法就是,把图片灰度均值超过阈值的列视做边界(假设白底黑字,这里随便说的一个想法,我还没做过显示切分的工作)。前面说过显示切分的问题,切分质量难以保证。如果不用这种方法怎么实现切分呢?

既然抛弃了在图片端进行切分的方法,那就只能在图片处理过后进行切分了。不论用cnn还是rnn,最后都可以把图片变成一个特征序列,我们可以对序列中的每列特征进行分类。为了在这里进行切分,引入一个新的类别,这个类别代表字符边界。所以ctc引入blank的目的就是为了表征字符边界,实现隐式切分的目的。

 

2、一篇博客 整体的讲述了一下  CTC原理和理解及实现

https://zhuanlan.zhihu.com/p/39266552 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值