Как распознать цифры с фотографии (формат .jpg), используя Python и TF, Keras? - PullRequest
0 голосов
/ 23 декабря 2018

Я использовал OpenCV для обрезки изображений с фотографии.Из этого: enter image description here

до этого: enter image description here

Затем я обрезаю его до 5 различных частей с различными типами порогов иугол (в матрице вращения 2D) для обучения нейронной сети.Теперь у меня есть 45 аналогичных jpg-файлов для любых цифр от 0 до 9. Но я не могу понять, как я могу обучить его своим собственным данным, не используя наборы данных MNIST. Помогите мне, пожалуйста, разобраться с созданием программы распознавания цифр.Мне нужно извлечь все цифры из img в текст.

1 Ответ

0 голосов
/ 23 декабря 2018

Если вы собираетесь использовать 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)

Обратите внимание, что я «изобрел» 2 функции: load_train_data() и load_test_data(), вам нужно реализовать их для ваших данныхи возвращает кортеж ((samples,x,y), labels) для каждой функции.

Как только вы почувствуете, я хотел бы изучить немного более продвинутые сети, вы можете посмотреть здесь: https://towardsdatascience.com/a-simple-2d-cnn-for-mnist-digit-recognition-a998dbc1e79a, это хорошее руководство для сети 2d CNN, просто используйте ваши функции загрузки данныхвместо мниста.

Поскольку теперь вы, вероятно, окажетесь лицом к стене, поскольку у вас недостаточно данных, вам необходимо применить некоторое увеличение данных.
Существует очень хорошее решение ' Глубинные диффеоморфные сети трансформаторов ' из последнего CVPR, очень хорошо работает с классификацией цифр с небольшим количеством выборок.Вы можете найти код mnist здесь , снова использовать ваши функции для данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...