我正在训练卷积神经网络来识别智能手机上的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/

10-13 00:05