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

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

В этой статье мы попытаемся разработать приложение для распознавания рукописных цифр, используя набор данных MNIST и платформу Pytorch. По сути, мы будем проектировать нейронную сеть в среде Pytorch с использованием набора данных MNIST и, наконец, скомпилируем ее в deepC, чтобы наконец получить желаемый результат.

Набор данных MNIST

Набор данных MNIST (модифицированный национальный институт стандартов и технологий) содержит 60 000 изображений в обучающем наборе и 10 000 изображений в наборе тестовых данных, причем оба изображения имеют 10 цифр в диапазоне от 0 до 9. Рукописные цифры размещаются в матрице 28*28 в виде изображений, где каждая ячейка содержит значения пикселей в оттенках серого.

Скачать набор данных

Разделить набор данных

Проверить набор данных

Проектирование модели NN (нейронной сети)

Модель NN состоит из одного входного слоя, двух полностью связанных скрытых слоев и одного выходного слоя. Первый скрытый слой может принимать 784 значения из входного слоя, но передавать из него 100 значений (где batch_size = 100), тогда как второй скрытый слой принимает 100 входных значений из первого скрытого слоя и передает 10 числовых значений (0–9). которые, наконец, сохраняются в выходном слое. Функция активации softmax выводит максимальное вероятное значение, которое хранится в фактических выходных данных, и отображает его.

  1. Функция потерь используется для нахождения разницы между желаемым выходом и полученным выходом. Нейтральная сеть обучается 10 эпох, и в итоге мы получаем точность теста 97,7100%!

Компиляция с помощью DeepC:

Чтобы перенести сохраненную модель на MCU, установите deepC — независимую библиотеку глубокого обучения с открытым исходным кодом, компилятор и платформу логического вывода для микрокомпьютеров и микроконтроллеров.

Вот ссылка на полный блокнот: https://cainvas.ai-tech.systems/use-cases/pytorch-mnist-vision-app/

Автор: Санлап Дутта