【问题标题】:Why the "get_output_size" is len(alphabet) + 1 not len(alphabet) in the Keras OCR example?为什么在 Keras OCR 示例中“get_output_size”是 len(alphabet) + 1 而不是 len(alphabet)?
【发布时间】:2018-11-22 06:11:28
【问题描述】:

我只是一个 Keras 初学者,我尝试通过 Keras 实现一个 OCR 项目。所以我尝试学习 Keras OCR 示例。这里是a link
我不明白为什么 TextImageGenerator 类中的“get_output_size”是 len(alphabet) + 1 而不是 len(alphabet)? 如果有人能告诉我原因,我将不胜感激..

【问题讨论】:

    标签: keras ocr


    【解决方案1】:

    它与用作成本函数的 CTC 层有关。也许阅读科学论文会给你更多的视角,但这与模型使用的“额外”类说(“没有字母”)有关。 Paper by Graves explaining the algorithm behind

    【讨论】:

      【解决方案2】:

      在使用 CTC 损失 训练的神经网络中需要一个额外字符。这个额外的字符本质上意味着“在这个位置没有看到任何字符”并且被称为 CTC 空白

      它用于允许文本的不同对齐方式或允许字符之间有一些空格(想想包含“你好”或“你好”的图像,它们周围有空格,因为你想识别“你好”) . 识别文本时,这些空白被删除:例如使用最佳路径解码时,取每个位置得分最高的字符,但会去掉空格。

      为了更好地了解这个特殊的 CTC 空白字符,让我们看一下下面的插图。神经网络的输出包含字符 a、b 和 CTC 空白(表示为“-”)。 让我们为每个位置 t0...t4 挑选得分最高的字符,这给了我们“aaa-b”。最佳路径解码去除了重复的字符,这给了我们“a-b”,最后去除了所有的空白,这给了我们“ab”。

      如果您想了解更多信息,可以查看我的CTC article,或this article,或original paper

      【讨论】:

      • 感谢您帮我解释这个问题...我会阅读一些关于 CTC 的论文...
      • @CaptainSama 当有人提供有帮助或解决问题的答案时,预计您作为提问者分别支持或接受。请看stackoverflow.com/help/someone-answers
      猜你喜欢
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 2014-11-10
      • 2013-09-13
      相关资源
      最近更新 更多