РАСПОЗНАВАНИЕ РУКОПИСНЫХ ЦИФР С ПОМОЩЬЮ СВЕРТОЧНЫХ НЕЙРОННЫХ СЕТЕЙ НА PYTHON

Мухаяров Дильназ Данисович
Нефтекамский филиал Уфимского университета науки и технологий
студент, Факультет экономико-математический

Аннотация
Статья посвящена разработке системы распознавания рукописных цифр с использованием сверточной нейронной сети (CNN) на языке Python с помощью библиотеки TensorFlow/Keras. Рассматривается актуальность автоматического распознавания изображений в области машинного обучения и компьютерного зрения, а также описывается пошаговый алгоритм построения модели и её обучения. В статье приводится пример кода, демонстрирующий подготовку данных, создание архитектуры модели и её обучение на базе набора данных MNIST с использованием библиотек TensorFlow и Keras. Обсуждается важность методов аугментации и использования коллбеков для повышения точности. В заключении подчеркивается востребованность методов глубокого обучения для задач классификации изображений и перспективы их применения.

Ключевые слова: , , , , , ,


Рубрика: 05.00.00 ТЕХНИЧЕСКИЕ НАУКИ

Библиографическая ссылка на статью:
Мухаяров Д.Д. Распознавание рукописных цифр с помощью сверточных нейронных сетей на Python // Современные научные исследования и инновации. 2025. № 12 [Электронный ресурс]. URL: https://web.snauka.ru/issues/2025/12/104001 (дата обращения: 10.04.2026).

Введение

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

Рисунок 1. Архитектура сверточной нейронной сети

Алгоритм решения задачи

- импортируем библиотеки `tensorflow.keras`, `pandas`, `numpy`, `matplotlib` и инструменты для аугментации;

- загружаем и проверяем структуру данных через `pd.read_csv()`;

- извлекаем метки и изображения, нормализуем их и преобразуем форму для подачи в модель;

- создаем сверточную модель с помощью `Sequential()`, добавляя слои Conv2D, MaxPooling2D, Dropout;

- компилируем модель, указывая функцию потерь и оптимизатор;

- задаем коллбеки для ранней остановки и снижения скорости обучения;

- делим данные на обучающую и валидационную выборки;

- применяем аугментацию данных через `ImageDataGenerator`;

- обучаем модель с помощью метода `fit()`, использующего генератор и коллбеки;

- визуализируем процесс обучения, строя графики точности и потерь;

- делаем предсказания на тестовом наборе и сохраняем их в CSV файл.

Рисунок 2. Схема процесса обучения

Код:

python

# Создаем модель

model = Sequential()

model.add(Conv2D(32, (3,3), activation=’relu’, padding=’same’, input_shape=(28,28,1)))

model.add(BatchNormalization())

model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Dropout(0.25))

# (добавляем дополнительные слои)

model.add(Dense(10, activation=’softmax’))

# Компиляция модели

model.compile(loss=’categorical_crossentropy’, optimizer=’adam’, metrics=['accuracy'])



# Обучение модели с аугментацией

history = model.fit(

datagen.flow(x_train_part, y_train_part, batch_size=128),

epochs=100,

validation_data=(x_val, y_val),

callbacks=[early_stop, reduce_lr, lr_scheduler],

verbose=1

)



python

# Визуализация результатов

plt.plot(history.history['accuracy'], label=’Train Accuracy’)

plt.plot(history.history['val_accuracy'], label=’Validation Accuracy’)

plt.legend()


Вывод:

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


Библиографический список
  1. О. П. Солдатова, А. А. Гаршин. «Применение свёрточной нейронной сети для распознавания рукописных цифр» (Самарский государственный аэрокосмический университет имени академика С. П. Королёва, 2010 г.) — исследование методики обучения CNN с чередованием эпох с искажением и без искажения символов (на базе MNIST).
  2. А. А. Гаршин, О. П. Солдатова. «Автоматизированная система распознавания рукописных цифр на основе свёрточной нейронной сети» — свидетельство об официальной регистрации программ для ЭВМ № 2010610988 (от 01.12.2009 г.). Практическая реализация системы распознавания с кодом на Python/библиотеках машинного обучения.


Все статьи автора «Мухаяров Дильназ Данисович»


© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте.