CTC解码算法

算法背景

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

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

总结来说,假设我们有个输入(如字幅图片或音频信号)X,对应的输出是 Y,在序列学习领域,通常会碰到如下难点:

  1. X和Y都是变长的;
  2. X和Y的长度比也是变化的;
  3. 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算法

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐