MNIST dataset — это база данных, в которой хранятся образцы написания рукописных цифр. Она состоит из 70 тысяч картинок одинакового размера, где изображены написанные от руки цифры. Набор данных, или датасет, используют для машинного обучения — на нем программы учат распознавать числа.
Название расшифровывается как Modified National Institute of Standards and Technology — «Модифицированная [база данных] Национального института стандартов и технологий США». Институт занимается стандартизацией: он собрал большой набор образцов почерка, привел все изображения с цифрами к единообразному виду и отрегулировал их.
Образцы написания цифр взяты из результатов переписи населения. Позже к ним добавлялись другие варианты, например взятые из тестирований студентов.
Существуют другие вариации набора, усложненные или нужные для иных задач. Например, датасет Fashion-MNIST — это подборка изображений с разными предметами одежды.
Для чего нужна база MNIST
Набор данных MNIST активно применяют в машинном обучении, в частности в создании и обучении нейронных сетей. Это такие цифровые модели, которые по структуре повторяют соединения нейронов в человеческом мозгу. Их можно обучать, но для этого нужны большие массивы данных — так программа «запомнит», как выглядит то, с чем она имеет дело.
Базу MNIST используют, когда обучают программу распознавать рукописные числа и цифры. Это важно в практических целях — сейчас есть много сервисов, которые работают с распознаванием картинок. Но кроме того, датасет используют в научных целях — например, когда сравнивают эффективность разных алгоритмов распознавания.
Сейчас с MNIST работают в том числе новички. Некоторые разработчики считают, что для решения серьезных задач набор исчерпал себя, но с ними согласны не все.
Как выглядят данные в базе MNIST
В датасете 70 тысяч картинок с цифрами от 0 до 9, приведенных к одинаковому виду. Все они переведены в формат CSV и имеют размер 28×28 пикселей. У них черный фон, на котором изображена белая цифра. Цифра помещена в середине, так, чтобы ее центр масс совпадал с центром изображения. Сама она чуть меньше целой картинки — ее размер составляет 20×20 пикселей.
Изначальные данные, конечно, выглядели иначе. Плюс MNIST в том, что картинки уже обработаны так, чтобы программе было легче их воспринять. Поэтому фон сделан черным, а сами цифры — белые и центрированные.
Обучающая и тестовая выборки
70 тысяч картинок разделены на две части: train и test.
Train — это 60 тысяч изображений, которые должны использоваться для обучения. Программе показывают эти картинки, чтобы она «поняла», как выглядят те или иные цифры. В обучающем наборе уже есть правильные результаты, то есть программа сразу получает ответ, что именно ей показывают.
Test — это 10 тысяч изображений тестовой выборки. Их не используют для обучения, а показывают нейросети позже, чтобы проверить, насколько правильно она научилась распознавать числа.
Современные нейронные сети дают точность до 99,6% при распознавании цифр из MNIST. Это много: получается, что качественные программы практически всегда правильно распознают цифры.
Как пользоваться базой данных MNIST
Поддержка датасета MNIST есть во многих крупных фреймворках для работы с нейронными сетями. Чаще всего специалисты по машинному обучению пишут на языке программирования Python, поэтому большинство соответствующих фреймворков — для него.
Например, MNIST есть среди данных библиотеки Keras. Чтобы добавить датасет к программе, нужно просто указать в начале кода строчку:
from keras.datasets import mnist
Библиотека Keras работает на основе фреймворка для машинного обучения Tensor Flow — тот тоже поддерживает MNIST. А изобразить результаты в графическом виде можно с помощью библиотеки Matplotlib, которая может построить график или диаграмму.
Что нужно учесть
Обучить нейронную сеть на датасете MNIST не так сложно, если вы умеете пользоваться соответствующими фреймворками и библиотеками. Сложнее сделать так, чтобы полученная программа умела распознавать произвольные цифры. Ведь если показать ей какие-то непохожие на исходный набор данных картинки, она не сможет сопоставить их с черно-белыми квадратиками набора MNIST.
Поэтому, если вы хотите, чтобы нейросеть умела распознавать любые цифры, в программу понадобится добавить обработку предварительных данных. Это значит, что входящие картинки нужно будет обрезать до цифр, переводить в черно-белые оттенки, центрировать и следить, чтобы цифры не деформировались при изменении размера.
Это предварительная обработка картинок — она нужна во многих задачах, связанных с распознаванием. Она поможет программе лучше понимать, что изображено на картинке.
Как начать работу с MNIST
Вам понадобится какой-либо из фреймворков для машинного обучения: создавать модель с нуля сложно, долго и неудобно. Можно воспользоваться Keras или другим популярным решением. Так писать код будет проще: для сложных вещей уже есть команды, поэтому их можно реализовать в одну строчку.
После этого достаточно импортировать MNIST, построить и обучить модель. Для всего этого в библиотеках и фреймворках есть свои команды.
Но чтобы разобраться в происходящем было легче, понадобится знать Python и приблизительно понимать, как работают нейросети. Поэтому, если вы новичок, мы советуем вам начать с изучения теории. Когда вы разберетесь, перейти к практике будет легче.
0 комментариев