РАЗРАБОТКА СВЕРТОЧНОЙ НЕЙРОННОЙ СЕТИ ДЛЯ РАСПОЗНАВАНИЯ ИЗОБРАЖЕНИЙ КАРТОЧНОЙ МАСТИ

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

Аннотация
Данная статья посвящена разработке и исследованию сверточной нейронной сети (СНС) для эффективного распознавания карточной масти. Распознавание масти игральных карт является важной задачей в различных областях, таких как автоматический анализ игры в карты, системы компьютерного зрения и приложения для азартных игр. В работе представлена архитектура СНС, специально разработанная для решения задачи классификации карточной масти. Сеть состоит из чередующихся сверточных и подвыборочных слоев, а также полносвязных слоев для итоговой классификации. Экспериментальная часть статьи описывает процесс обучения и тестирования предложенной СНС на наборе данных игральных карт. Приводятся результаты сравнительного анализа производительности модели в сравнении с другими методами классификации. Показывается, что разработанная СНС демонстрирует высокую точность и робастность при распознавании карточной масти даже в случаях частичной видимости или искажений изображений.

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


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

Библиографическая ссылка на статью:
Бадрисламов Д.И. Разработка сверточной нейронной сети для распознавания изображений карточной масти // Современные научные исследования и инновации. 2024. № 6 [Электронный ресурс]. URL: https://web.snauka.ru/issues/2024/06/102200 (дата обращения: 22.04.2025).

Научный руководитель: Вильданов Алмаз Нафкатович
к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал

Современные технологии искусственного интеллекта (ИИ) и машинного обучения (МО) приобретают все большую популярность и находят применение в различных сферах деятельности. Одним из наиболее перспективных направлений является использование нейронных сетей для решения задач распознавания и классификации. В данной статье рассматриваются возможности и методы применения нейронных сетей для распознавания изображений карточных мастей.

Для разработки и обучения нейронных сетей широко используется библиотека TensorFlow, предоставляемая Google. Она обеспечивает высокую производительность и гибкость при создании сложных моделей МО. TensorFlow поддерживает работу как на CPU, так и на GPU, что позволяет значительно ускорить процесс обучения нейронных сетей.

Google Colab предоставляет удобную среду для разработки и обучения моделей машинного обучения. Это облачный сервис, который позволяет использовать мощные вычислительные ресурсы Google без необходимости установки дополнительного программного обеспечения. Colab поддерживает работу с Jupyter Notebook и позволяет совместно работать над проектами в реальном времени​.

Данная статья посвящена разработке и обучению сверточной нейронной сети (СНС) для эффективного распознавания изображений карточной масти. Распознавание масти игральных карт является важной задачей в различных областях, таких как автоматический анализ игры в карты, системы компьютерного зрения и приложения для азартных игр. В работе представлена архитектуры НС, специально разработанные для решения задачи классификации карточной масти. Сеть состоит из чередующихся сверточных и подвыборочных слоев, а также полносвязных слоев для итоговой классификации. Автор уделяет особое внимание выбору оптимальной архитектуры, гиперпараметров и методов предобработки изображений для повышения точности распознавания. Экспериментальная часть статьи описывает процесс обучения и тестирования предложенной СНС на наборе данных игральных карт. Приводятся результаты сравнительного анализа производительности модели в сравнении с другими методами классификации.

Первым шагом в создании системы распознавания является сбор и подготовка данных. Для обучения нейронной сети необходим большой объем данных, содержащий изображения карточных мастей. Эти данные проходят этапы предобработки, включая нормализацию и аугментацию, что улучшает качество модели и её способность к обобщению.

Формат данных выборки для обучения train.csv выглядит следующим образом: каждая строка представляет собой описание одного изображения; первый столбец содержит метки классов, к которым принадлежит изображение; оставшиеся столбцы содержат пиксельные значения изображения, например, в виде плоского вектора, где каждое значение соответствует яркости соответствующего пикселя на изображении [1].

У нас будут следующие классы изображений:

classes = ["червы","бубны","пики","трефы"]

Загрузим и посмотрим на датасет (рисунок 1):


Рисунок 1 – Датасет изображений карточных мастей

После подготовки данных, создаются и обучаются модели нейронных сетей. Используются различные архитектуры, такие как сверточные нейронные сети (CNN), которые особенно эффективны в задачах распознавания образов. Обучение модели проводится на обучающем наборе данных с последующей проверкой на валидационном наборе для оценки её производительности.

Работа нейронной сети рассматривается в трех моделях.

1.    Двухслойная нейронная сеть.

На первом шаге рассматривается сеть из двух нейронных слоев [2]. Для создания модели используется класс Sequential. На входном слое находятся 700 нейронов. Функция активации (запуска) relu, размер входных данных равен 400 (у нас картинки 20 на 20). На последнем слое должно быть 4 нейрона, так как это количество должно совпадать с количеством классификаций изображений [3] (у нас четыре изображения мастей). Модель нейронной сети строится с помощью класса Sequential [4].

N = 4

model = Sequential()

model.add(Dense(700, input_dim=400, activation=”relu”))

model.add(Dense( N, activation=”softmax”))

Приступаем к обучению модели с помощью метода fit модели (рисунок 2).


Рисунок 2 – Ход обучения нейронной сети

Можно посмотреть, как нейронная сеть делает предсказание на тестовых данных. Для этого применяется метод predict:


Рисунок 3 – Валидация нейронной сети

2. Трехслойная нейронная сеть.

Усложним нейронную сеть, сделав 3 слоя. Рассматривается сеть из трех нейронных слоев:

model = Sequential()

model.add(Dense(700, input_dim=400, activation=”relu”))

model.add(Dense(80, activation=”relu”))

model.add(Dense( N, activation=”softmax”))

Остальные шаги проделываются аналогично.

3. Сверточная нейронная сеть.

Полносвязная нейронная сеть недостаточно качественно выполняет работу с изображениями. Прогресс обучения двуслойной нейронной сети и трехслойной нейронной сети растет достаточно медленно, за счет увеличения количества слоев. Более качественный результат можно получить, построив сверточную нейронную сеть:

model = Sequential()

model.add(Conv2D(32, (3, 3),

input_shape=(img_width, img_height, 1), activation=’relu’))

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

model.add(Conv2D(64, (3, 3), activation=’relu’))

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

model.add(Flatten())

model.add( Dense( 200, activation = ‘relu’))

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

Обучение проводится аналогично. По итогам распознавания собственных изображений можно сделать следующий вывод (таблица 1):

Таблица 1 – Качество распознавания изображений нейронными сетями

Структура НС

Качество распознавания

Полносвязная нейронная сеть из двух слоев

99.69 %

Полносвязная нейронная сеть из трех слоев

99.75 %

Сверточная нейронная сеть с двумя сверточными слоями

99.94 %

Подготовим также в Paint собственные изображения и загрузим их на гугл-диск (рисунок 4).


Рисунок 4 – Собственные изображения для проверки

работы нейронной сети

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


Рисунок 5 – Распознавание и предсказание нейронной сети

Сверточная нейронная сеть будет, как и ожидалось, будет давать наилучшее предсказание.

Заключение. Разработка и использование нейронных сетей для распознавания изображений карточных мастей демонстрирует высокую эффективность и перспективность данного подхода. Применение библиотек TensorFlow и сервисов, таких как Google Colab, значительно упрощает процесс создания и обучения моделей машинного обучения. Эти технологии открывают новые возможности для автоматизации процессов и повышения точности распознавания в различных приложениях.


Библиографический список
  1. Вильданов А. Н. Генерация датасетов для учебных задач компьютерного зрения // Инженерный вестник Дона. – 2023. – № 4(100). – С. 92-101.
  2. Моделирование сверточной нейронной сети [Электронный ресурс] // И. К. Салимгариева, А. Н. Вильданов, 2021. – URL: https://infourok.ru/nauchnaya-statya-na-temu-modelirovanie-svertochnoj-nejronnoj-seti-5238446.html (дата обращения: 01.06.2024).
  3. Решение задачи классификации изображений с помощью Tensorflow [Электронный ресурс] // Д.Н. Мухитова, А.Н. Вильданов, 2021. – URL: https://infourok.ru/nauchnaya-statya-na-temu-reshenie-zadachi-klassifikacii-izobrazhenij-s-pomoshyu-tensorflow-5238536.html (дата обращения: 01.06.2024).
  4. Искусственные нейронные сети и приложения: учеб. пособие [Электронный ресурс] / Ф.М. Гафаров, А.Ф. Галимянов. – Казань: Изд-во Казан. ун-та, 2018. – 121с. URL: https://kpfu.ru/staff_files/F1493580427/NejronGafGal.pdf (дата обращения: 01.06.2024).


Все статьи автора «Бадрисламов Денис Игоревич»


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

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться: