РАЗРАБОТКА ПРОГРАММЫ ДЛЯ РАСПОЗНАВАНИЯ ГЕОМЕТРИЧЕСКИХ ФИГУР И ИХ КЛАССИФИКАЦИИ НА ОСНОВЕ НЕЙРОННОЙ СЕТИ - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

РАЗРАБОТКА ПРОГРАММЫ ДЛЯ РАСПОЗНАВАНИЯ ГЕОМЕТРИЧЕСКИХ ФИГУР И ИХ КЛАССИФИКАЦИИ НА ОСНОВЕ НЕЙРОННОЙ СЕТИ

Данковцев В.И. 1, Безумнов Д.Н. 1
1МТУСИ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

Переход к цифровой экономике предполагает создание гибких производственных систем, беспилотного транспорта, мобильных роботов для выполнения рутинной работы [6]. Корректная работа автономных устройств и роботов возможна лишь при наличии интеллектуальных систем распознавания образов. Часть таких образов представляет собой геометрические фигуры: здания, детали, грузы. Распознавание и классификация геометрических фигур используется, например, в мобильных роботах для определения препятствия, роботах-манипуляторах для определения положения и ориентации детали.

Данные задачи решаются при помощи методов машинного обучения.

Машинное обучение (Machine Learning) – это обширный подраздел искусственного интеллекта, изучающий методы построения алгоритмов, способных обучаться [7].

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

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

Обучающий набор данных

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

количество изображений: 474;

формат изображений: *png;

размер изображений: 75*75 пикселей;

количество классов: 5;

цветовая гамма: чёрно-белая.

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

Таблица 1.

Информация о наборе данных

Название класса

Количество изображений для обучения

Количество изображений для тестирования

Название фигуры на выходе

Pentagon

68

21

пятиугольник

Sixer

71

15

шестиугольник

Square

86

21

квадрат

Star

78

17

звезда

Tringle

78

19

треугольник

Рисунок 1. Фрагмент набора данных

Разработка архитектуры нейронной сети

Для разработки нейронной сети можно использовать персептрон. Персептрон — это простейший вид нейронной сети. [8].

В разрабатываемой сети на вход будет подаваться изображение, на котором присутствует фигура.

Результатом работы сети должна быть информация о том, к какому классу относится фигура, представленная на изображении.

Для решения данной задачи использована модель многослойного персептрона с двумя скрытыми слоями. Входной слой состоит из n нейронов, где n – количество пикселей изображения (n=5625). Первый и второй скрытые слои содержат m и k нейронов соответственно, где m = 256 и k = 256. Выходной слой содержит 5 нейронов, что соответствует количеству классов изображений. Архитектура разрабатываемой сети представлена на рисунке 2.

Рисунок 2. Архитектура разрабатываемой нейронной сети

Реализацию нейронной сети для распознавания изображений решено проводить с использованием языка программирования Python, поскольку в нём есть необходимые библиотеки для реализации поставленной задачи:

tensorflow [1] - открытая программная библиотека для машинного обучения, разработанная компанией Google для решения задач построения и тренировки нейронной сети с целью автоматического нахождения и классификации образов, достигая качества человеческого восприятия;

keras [2] - библиотека с открытым исходным кодом, которая позволяет создавать нейронные сети. Нацелена на оперативную работу с сетями глубинного обучения;

numpy [3] - это расширение, добавляющее поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами;

matplotlib [4] - библиотека для графической визуализации данных.

Результаты реализации нейронной сети

В ходе использования разработанного алгоритма и теоретических знаний сначала был протестирован набор данных с геометрическими фигурами. После обучения нейронной сети на тестовой выборке была проведена оценка точности, которая составила 96.67% (рис. 3).

Рисунок 3. Результат в ходе обучения на геометрических фигурах

Далее было проведено тестирование обученной модели с набором данных на изображениях, которые не применялись для обучения. Правильно было классифицировано 9 из 10 изображений. На рисунке 4 и 5 представлен результат с верным и неверным выводами.

   

Рисунок 4. Результат верного определения изображения

   

Рисунок 5. Результат неверного определения изображения

Неверное определение фигуры на рисунке 5 связано с тем, что фигура находится в углу изображения. Если её поместить по центру, фигура будет определяться верно. Результат данного действия представлен на рисунке 6.

   

Рисунок 6.Результат верного определения программы

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

Выводы

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

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

Нейронная сеть была реализована с использованием языка программирования Python и специализированных библиотек для компьютерного зрения: tensorflow, keras, numpy, matplotlib.

Для обучения нейронной сети был использован набор данных с геометрическими фигурам. В ходе обучения и тестирования было выявлено, что для более точного определения фигуры исходный набор данных должен быть достаточно объемным.

Список литературы

Открытая библиотека машинного обучения TensorFlow // TensorFlow [Электронный ресурс]. – Режим доступа: https://www.tensorflow.org/ (дата обращения: 09.12.2018).

Keras: The Python Deep Learning library // Keras [Электронный ресурс]. – Режим доступа: https://keras.io/ (дата обращения: 2.12.2018).

NumPy // NumPy [Электронный ресурс]. – Режим доступа: http://www.numpy.org/ (дата обращения: 2.11.2018).

Matplotlib // matplotlib [Электронный ресурс]. – Режим доступа: https://matplotlib.org/ (дата обращения: 12.11.2018).

Л.И. Воронова, В.И. Воронов. Machine Learning: Регрессионные методы интеллектуального анализа данных: учебное пособие – МТУСИ, 2017 – 81 с.

Безумнов Д.Н., Воронова Л.И. О развитии и стандартизации технологии Интернета вещей // Технологии информационного общества. Материалы XII Международной отраслевой научно-технической конференции. – М.: ООО "Издательский дом Медиа паблишер", 2018. – С. 293-294.

Воронов В.И., Воронова Л.И., Генчель К.В. Применение параллельных алгоритмов в нейронной сети для распознавания жестового языка // Актуальные проблемы инфотелекоммуникаций в науке и образовании (АПИНО 2018). VII Международная научно-техническая и научно-методическая конференция. Сборник научных статей. В 4-х томах. Под редакцией С.В. Бачевского. – СПб.: СПбГУТИ им. проф. М.А. Бонч-Бруевича, 2018. – С. 207-212.

Глава 4. Персептроны // neuralnet [Электронный ресурс]. – Режим доступа: http://neuralnet.info/chapter/персептроны/ (дата обращения: 10.11.2018).

Просмотров работы: 493