【问题标题】:Strange prediction's output (OCR CRNN)奇怪的预测输出(OCR CRNN)
【发布时间】:2020-05-19 11:09:07
【问题描述】:

我将 CRNN (CNN+RNN+CTCLoss) 用于我的 OCR。我的数据集是 10000 个图像文本(7000 个训练+有效和 3000 个测试)

例子:

我的架构受到 VGG-16 的启发,我使用了 13 个 conv 层和 3 个双向 LSTM 层,并且我使用了 CTC Loss。 这是我的架构(培训):

这是我的训练结果: 批量大小 = 256 纪元 = 50

我不知道为什么,但我的输出只预测了我所有数据集的“p”字符。

我不能把我所有的代码都放在这里,所以你们都可以在这里看到我的代码: https://colab.research.google.com/drive/1Mio5i6ySlSPnSs1o1sc-WpgfYLu9i9iy?usp=sharing

问题:为什么我的预测只是“p”?是因为我的数据集不多还是因为我的架构?以及如何减少我的损失???谢谢

【问题讨论】:

    标签: image machine-learning testing ocr prediction


    【解决方案1】:

    一看到您的代码,我就意识到您的代码与此处的代码几乎相似:https://github.com/its-jd/A-CRNN-model-for-Text-Recognition-in-Keras 或此处: https://github.com/TheAILearner/A-CRNN-model-for-Text-Recognition-in-Keras

    如果您使用的是某人的代码,那么请不要忘记在原始帖子中注明。

    现在让我们来解决你的问题,

    您有 7000 张训练图像,这对于训练具有数百万个参数的模型来说非常少,最重要的是,您的损失约为 19 左右,这非常高。所以你的模型在这次训练中没有学到任何东西。对于这个特殊问题,你的损失应该在 ~ 0.5 左右(我已经在上面的 git repo 中训练了模型,所以根据我的经验我这么说)

    由于您的模型具有不同的维度,您将无法使用上述 github 存储库中的预训练权重。所以,有两种可能的方法:

    1. 麻烦一些且耗时: 使用合成文本训练您的模型,然后对您的数据集进行微调(同时微调保持您的学习率非常小,因为您不想搞砸一切)
    2. 简单: 使用上面 githubb 存储库中的直接模型,并使用您的数据集对其进行微调。为此,首先您必须调整数据集的大小,使其高度小于 128 像素。但我敢肯定,这会带来更好的结果!

    训练愉快:)

    【讨论】:

      猜你喜欢
      • 2017-11-28
      • 1970-01-01
      • 2016-11-07
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2015-02-18
      • 2011-06-14
      相关资源
      最近更新 更多