python - CNN OCR 机器可读区

标签 python tensorflow keras conv-neural-network

我正在训练卷积神经网络来识别智能手机上的 MRZ(机器可读区)字符。我想知道为了提高准确性,我是否应该使用多种字体来训练它,即使 MRZ 仅使用 OCR-B。此外,该模型在设备上的执行精度与我用来训练/测试它的 python 代码的精度水平不一样。有什么想法吗?

这是我正在使用的架构:

    model = Sequential()
    model.add(Convolution2D(filters=32, kernel_size=(3, 3), strides=(2, 2), activation='relu', input_shape=input_shape))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.5))
    model.add(Convolution2D(filters=64, kernel_size=(1, 1), strides=(1, 1), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.2))
    model.add(Flatten())
    model.add(Dense(128, activation='relu'))
    model.add(Dense(num_classes, activation='softmax'))
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

最佳答案

如果 MRZ 仅使用一种字体,那么您应该仅使用该字体来训练您的 CNN。
为了提高结果,您应该在将图像传递给 CNN 之前对图像进行预处理,例如,首先识别图像中的文本区域,然后将它们传递给 CNN。

由于处理单元架构的不同,模型的准确性可能会因设备而异,例如,CPU 和 GPU 由于数值稳定性会得到不同的结果。

关于python - CNN OCR 机器可读区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55269547/

相关文章:

python - 如何从 Python 中的列表列表中删除所有无元素

Python 列表反转:[::-1]?

python - 无法创建 CUBLAS 句柄。 Tensorflow 与 OpenCV 的交互

Python 脚本在 Spyder 上运行,但如果我打开 .py 文件则不会运行

python - 使用 tf.keras 和 Inception-v3 进行迁移学习 : No training is happening

python - Out of Memory 在 for 循环中训练顺序模型;以前的解决方案不起作用

python - 恢复模式下的 etree.XMLParser 是否仍会抛出解析错误?

python - 如何使用 Python 将 Pandas DataFrame 导出到 Google 表格?

python-3.x - 如何在 tensorflow 中使用 python3 预测 LSTM 模型中的情绪?

tensorflow - PREFETCH 样本后 TFRecord 读取管道速度减慢