Распознавание цифр — это процедура, принятая машинами для распознавания рукописных цифр. В реальном мире онлайн-распознавание цифр выполняется машиной для распознавания сумм банковских чеков, оценки чисел, заполненных практическими различными документами, такими как налоговые формы, и так далее.
Трудность в случае рукописных цифр заключается в том, что стиль, размер, ширина и ориентация каждой цифры каждый раз разные, что отличается от человека к человеку. Таким образом, машинам сложно каждый раз идеально распознавать рукописные цифры. Однако недавний прогресс в машинном обучении облегчает машинам распознавание рукописных цифр разного размера, ширины и ориентации.
В этой статье мы попытаемся разработать приложение для распознавания рукописных цифр, используя набор данных 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 выводит максимальное вероятное значение, которое хранится в фактических выходных данных, и отображает его.
- Функция потерь используется для нахождения разницы между желаемым выходом и полученным выходом. Нейтральная сеть обучается 10 эпох, и в итоге мы получаем точность теста 97,7100%!
Компиляция с помощью DeepC:
Чтобы перенести сохраненную модель на MCU, установите deepC — независимую библиотеку глубокого обучения с открытым исходным кодом, компилятор и платформу логического вывода для микрокомпьютеров и микроконтроллеров.
Вот ссылка на полный блокнот: https://cainvas.ai-tech.systems/use-cases/pytorch-mnist-vision-app/
Автор: Санлап Дутта