繁体   English   中英

如何使用Python和TF,Keras从照片(.jpg格式)中识别数字?

[英]How can I recognize digits from photo (.jpg format) using Python and TF, Keras?

我使用OpenCV裁剪照片中的图像。 由此: 在此处输入图片说明

对此: 在此处输入图片说明

然后,将其裁剪为5个不同的部分,使用不同类型的阈值和角度(在旋转矩阵2D中)来训练神经网络。 现在,我有45个相似的jpg文件,可用于从0到9的任何数字。但是我不明白如何用自己的数据训练它,而不使用MNIST数据集。请帮助我处理构建数字识别程序。 我需要将所有数字从img提取到文本。

如果您打算采用NN方法,那么我将首先从一个小nn开始,然后看看它的效果如何,您可以从此处使用MNIST玩具示例。

请注意,您将需要使用自己的数据,而不是mnist:

import tensorflow as tf

x_train, y_train = load_train_data()
x_test, y_test = load_test_data()


model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

请注意,我“发明”了两个函数: load_train_data()load_test_data() ,您需要为数据实现它们,并为每个函数返回一个((samples,x,y), labels)元组。

一旦有了感觉,我将探索更高级的网络,您可以在这里查看: https : //towardsdatascience.com/a-simple-2d-cnn-for-mnist-digit-recognition-a998dbc1e79a ,它是一个不错的教程对于2D CNN网络,只需使用数据加载功能而不是mnist。

由于您现在可能正面临一堵墙,因为您没有足够的数据,因此需要应用一些数据扩充。
最后一个CVPR提供了一个很好的解决方案“ Deep Diffeomorphic Transformer Networks ”,它在样本数量少的数字分类方面表现出色。 您可以在此处找到mnist代码,然后再次使用数据功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM