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

2024-03-29 11:45:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我用OpenCV裁剪照片中的图像。 从这里: enter image description here

为此: enter image description here

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


Tags: 文件数据图像文本程序img矩阵阈值
1条回答
网友
1楼 · 发布于 2024-03-29 11:45:40

如果您要使用NN方法,我将首先从一个小NN开始,看看它有多好,您可以使用here中的MNIST toy示例。在

请注意,您需要使用自己的数据,而不是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)

注意,我“发明”了2个函数:load_train_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代码here,再次对数据使用您的函数。在

相关问题 更多 >