РАСПОЗНАВАНИЕ РУКОПИСНЫХ ЦИФР С ПОМОЩЬЮ СВЕРТОЧНЫХ НЕЙРОННЫХ СЕТЕЙ НА PYTHON
Нефтекамский филиал Уфимского университета науки и технологий
студент, Факультет экономико-математический
Аннотация
Статья посвящена разработке системы распознавания рукописных цифр с использованием сверточной нейронной сети (CNN) на языке Python с помощью библиотеки TensorFlow/Keras. Рассматривается актуальность автоматического распознавания изображений в области машинного обучения и компьютерного зрения, а также описывается пошаговый алгоритм построения модели и её обучения. В статье приводится пример кода, демонстрирующий подготовку данных, создание архитектуры модели и её обучение на базе набора данных MNIST с использованием библиотек TensorFlow и Keras. Обсуждается важность методов аугментации и использования коллбеков для повышения точности. В заключении подчеркивается востребованность методов глубокого обучения для задач классификации изображений и перспективы их применения.
Ключевые слова: MNIST, Python, TensorFlow, автоматизация, машинное обучение, распознавание рукописных цифр, сверточные нейронные сети
Рубрика: 05.00.00 ТЕХНИЧЕСКИЕ НАУКИ
Библиографическая ссылка на статью:
Мухаяров Д.Д. Распознавание рукописных цифр с помощью сверточных нейронных сетей на Python // Современные научные исследования и инновации. 2025. № 12 [Электронный ресурс]. URL: https://web.snauka.ru/issues/2025/12/104001 (дата обращения: 08.07.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()
…
Вывод:
В статье рассмотрена реализация сверточной нейронной сети для распознавания рукописных цифр. Использование методов аугментации и коллбеков позволяет повысить точность модели и избежать переобучения. Визуализация процесса обучения помогает контролировать качество модели. Правильная подготовка данных и архитектуры — залог успешного решения задачи. Такой подход широко применяется в системах автоматической обработки изображений.
Библиографический список
- О. П. Солдатова, А. А. Гаршин. «Применение свёрточной нейронной сети для распознавания рукописных цифр» (Самарский государственный аэрокосмический университет имени академика С. П. Королёва, 2010 г.) — исследование методики обучения CNN с чередованием эпох с искажением и без искажения символов (на базе MNIST).
- А. А. Гаршин, О. П. Солдатова. «Автоматизированная система распознавания рукописных цифр на основе свёрточной нейронной сети» — свидетельство об официальной регистрации программ для ЭВМ № 2010610988 (от 01.12.2009 г.). Практическая реализация системы распознавания с кодом на Python/библиотеках машинного обучения.
Все статьи автора «Мухаяров Дильназ Данисович»
© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте.