【全志开发板部署】系列5:LPRNet汽车车牌识别模型部署后处理中的CTC解码算法
·
CTC解码算法
算法背景
CTC 算法主要用来解决神经网络中标签和预测值无法对齐的情况,通常用于文字识别以及语音等序列学习领域。举例来说,在语音识别任务中,我们希望语音片段可以与对应的文本内容一一对应,这样才能方便我们后续的模型训练。但是对齐音频与文本是一件很困难的事,如 图1 所示,每个人的语速都不同,有人说话快,有人说话慢,我们很难按照时序信息将语音序列切分成一个个的字符片段。而手动对齐音频与字符又是一件非常耗时耗力的任务。

在文本识别领域,由于字符间隔、图像变形等问题,相同的字符也会得到不同的预测结果,所以同样会会遇到标签和预测值无法对齐的情况。

总结来说,假设我们有个输入(如字幅图片或音频信号)X,对应的输出是 Y,在序列学习领域,通常会碰到如下难点:
- X和Y都是变长的;
- X和Y的长度比也是变化的;
- X和Y相应的元素之间无法严格对齐。
算法概述
CTC有主流的两种算法,分别是
- Greedy decode,每次都选取概率最大。
- Beam Search,对规整字符串进行束搜索算法。
greedy decode




Beam Search


参考文章
https://paddlepedia.readthedocs.io/en/latest/tutorials/deep_learning/loss_functions/CTC.html
https://www.cnblogs.com/D876887913/p/17600839.html
https://zhuanlan.zhihu.com/p/258975252
总结
在实际生产中,考虑到实时性,一般使用greedy decode算法
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)