670 подписчиков

Машинное обучение. Распознавание рукописных цифр

228 прочитали
Машинное обучение применяться для написания интеллектуальных (умных) программ. Благодаря машинному обучению разработчик не пишет сложные инструкции, учитывающие все возможные варианты решения задачи.

Машинное обучение применяться для написания интеллектуальных (умных) программ. Благодаря машинному обучению разработчик не пишет сложные инструкции, учитывающие все возможные варианты решения задачи. Вместо этого в программу закладывают алгоритм самообучения, самостоятельного поиска решений путём использования статистических данных, из которых выводятся закономерности и на основе которых делаются прогнозы. Человек обучается в течении жизни выполняя простые задачи, практикуясь повторяя, улучшая решение, запоминая алгоритм решения, анализируя как данную задачу решают другие люди. В результате у человека формируется опыт решение подобных задач, некоторые решения доводятся до автоматизма, что-то входит в привычку.

Машинное обучение работает по схожему принципу. Например, распознавание объектов, классификация объектов на изображении, сегментация изображения, распознавание рукописного текста и цифр.

Распознавание рукописных цифр это способность компьютера узнавать написанные от руки цифры. Для машины это сложная задача, ведь каждая написанная цифра может отличаться от эталонного написания.

В данной статье мы рассмотрим, как реализовать распознавание рукописных цифр используя Python, машинное обучение и набора данных MNIST, для машинного обучения.

База данных MNIST объёмная база данных образцов рукописного написания цифр. База данных является стандартом, предложенным Национальным институтом стандартов и технологий США с целью калибрации и сопоставления методов распознавания изображений с помощью машинного обучения в первую очередь на основе нейронных сетей. Данные состоят из заранее подготовленных примеров изображений, на основе которых проводится обучение и тестирование систем.

Машинное обучение применяться для написания интеллектуальных (умных) программ. Благодаря машинному обучению разработчик не пишет сложные инструкции, учитывающие все возможные варианты решения задачи.-2
  • Изображения в градациях серого 28х28 пикселей.
  • 60 000 обучающих примеров и 10 000 тестовых.
  • Цифры отцентрованы и приведены к сравнимому масштабу.

Для распознавания рукописных цифр будем использовать библиотеки Keras и Tensorflow установим их через командную строку.

Первым шагом импортируем в проект все необходимые библиотеки.

Теперь мы готовы создать простую нейросеть, используя Tensorflow.

Мы создали модель нейронной сети класс Sequential. Создадим сверточную нейроную сеть. Сверточные нейронные сети были созданы для работы с изображениями. Основная задача при работе с изображениями состоит в распознавании на них различных объектов. Но крайне трудно что-то разобрать на картинке, если думать в категориях одного пикселя. Вместо этого сверточная нейронная сеть нацелена на использование скользящего окна (его еще называют ядром), принимающего во внимание группу пикселей. Это позволяет надеяться на распознавание небольших особенностей, таких как «края» или «кривые». После распознавания другой слой сможет принять комбинации краев или кривых для определения формы. Сверточные сети гораздо эффективнее они используют принцип свертки, по которому так называемое ядро (kernel) перемещается вдоль изображения и выделяет ключевые эффекты на картинке, если они есть. Затем полученный результат сообщается «обычной» нейронной сети, которая и выдает готовый результат.

Чтобы распознавать цифры, мы создаем сеть с десятью выходами, и единица будет на выходе, соответствующем нужной цифре.

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

У нас есть два блока данных: train и test — один служит для обучения, второй для верификации результатов. Это общепринятая практика, обучать и тестировать нейронную сеть желательно на разных наборах данных.

Все готово. Мы создаем модель, обучаем ее и записываем модель в файл:

Мы можем использовать нейросеть для распознавания изображений:

Проект для распознавания рукописных цифр на Python готов. Была разработана и обучена сверточная нейронная сеть. Проект можно расширить обучив модель распознавать рукописные буквы.

С уважением, Карян Армен.
Занимаюсь профессиональной разработкой прикладных программ на Python.
email SoftSAR@yandex.ru
Telegram @SoftSar_am