Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 25(237)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2

Библиографическое описание:
Козынченко В.С. РАЗРАБОТКА WEB-ПРИЛОЖЕНИЯ ДЛЯ РАСПОЗНАВАНИЯ ВИДОВ ПТИЦ ПО ФОТОГРАФИИ // Студенческий: электрон. научн. журн. 2023. № 25(237). URL: https://sibac.info/journal/student/237/297995 (дата обращения: 02.09.2024).

РАЗРАБОТКА WEB-ПРИЛОЖЕНИЯ ДЛЯ РАСПОЗНАВАНИЯ ВИДОВ ПТИЦ ПО ФОТОГРАФИИ

Козынченко Вячеслав Сергеевич

студент, факультет компьютерных наук и информационных технологий, Саратовский национальный исследовательский государственный университет имени Н. Г. Чернышевского,

РФ, г. Саратов

Сафрончик Мария Ильинична

научный руководитель,

старший преподаватель, факультет компьютерных наук и информационных технологий, Саратовский национальный исследовательский государственный университет имени Н. Г. Чернышевского,

РФ, г. Саратов

DEVELOPMENT OF A WEB-APPLICATION FOR RECOGNITION OF BIRD SPECIES FROM PHOTOGRAPHY

 

Vyacheslav Kozynchenko

Student, Faculty of Computer Science and Information Technology, Saratov State University,

Russia, Saratov

Maria Safronchik

Scientific supervisor, senior lecturer, Faculty of Computer Science and Information Technology, Saratov State University,

Russia, Saratov

 

АННОТАЦИЯ

Целью данной статьи является создание веб-приложения для классификации птиц. Датасет, содержащий 525 видов птиц, взят с сайта Kaggle, который предоставляет множество наборов данных для оттачивания навыков машинного обучения и работы с нейронными сетями. Используемой архитектурой для решения задачи классификации является MobileNetV2. Для обнаружения птиц на фото используется архитектура YoloV3, предварительно обученная на датасете COCO. Для вывода результатов работы классификации птиц используется веб-приложение, реализованное на языке Python3 и фреймворке Flask. Разработанное приложение может быть интересно широкому кругу людей, интересующихся видами и особенностями поведения птиц.

ABSTRACT

The purpose of this article is to create a web application for classifying birds. The dataset containing 525 bird species comes from Kaggle, which provides many datasets to hone your machine learning and neural network skills. The architecture used to solve the classification problem is MobileNetV2. To detect birds in the photo, the YoloV3 architecture is used, previously trained on the COCO dataset. To display the results of bird classification, a web application implemented in Python3 and the Flask framework is used. The developed application may be of interest to a wide range of people interested in the species and behavior of birds.

 

Ключевые слова: машинное обучение, классификация, сверточные нейронные сети.

Keywords: machine learning, classification, convolutional neural networks.

 

Введение

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

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

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

Машинное обучение

Машинное обучение — это раздел искусственного интеллекта, направленный на создание систем, которые обучаются на основе входных данных программы. Такие системы позволяют улучшить производительность и снизить затраты на ручную работу экспертов.

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

классификации делят на бинарную и мультиклассовую.

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

Нейрон человека состоит из аксона, синапса и дендритов. Аксоны служат для передачи информации между нейронами. Места контактов между двумя нейронами называются синапсами. Функцией дендритов является передача нервных импульсов к телу нейрона.

Нейрон можно представить в виде математической модели, пример приведен на рисунке 1. Такой нейрон должен содержать следующие объекты:

X1 . . . Xn — входные значения;

Y — выходное значение;

W1 . . . Wn — синапсы, которые также называются весами-связями;

— аксон — связь между нейроном и выходным значением, может быть представлен как связь между выходным значением одного нейрона и входным значением другого;

— вес смещения — значение S, помещенное в тело нейрона.

 

Рисунок 1. Математическая модель нейрона

 

На выходе к полученному значению может применяться одна из следующих функций активации [2]:

— ступенчатая функция;

— сигмоида;

— гиперболический тангенс;

— ReLu (Rectified linear out).

Таким образом, значение на выходе нейрона можно получить с помощью формулы 1 [3].

,                                                                  (1)

где  — функция активации нейрона;

 — веса связей;

 — входные значения;

 — вес смещения нейрона.

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

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

,                                                                                (2)

где  — значение, полученное на последнем слое нейронной сети;

 — нейрон;

 — количество классов.

Алгоритм процесса обучения нейронной сети можно представить следующим образом:

  1. Выбор входных значений.
  2. Распространение сигнала по нейронной сети.
  3. Получение результата вычисления.
  4. Расчет полученной ошибки.
  5. Если порог допустимой ошибки пройден — завершение процесса обучения, иначе настройка весов сети, выбор новых входных значений, возвращение на пункт 2.

Для расчета полученной ошибки используется функция потерь. Чем больше значение данной функции, тем сильнее «ошибка» нейросети. Примеры функций потери — среднеквадратичная ошибка и кросс-энтропия.

При перерасчете весов необходимо найти минимум функции потерь. Для решения данной задачи используется метод градиентного спуска. Перед началом нужно задать начальную точку и длину шага градиентного спуска. Остановка производится в случае, если значение функции, представленной формулой 3 примерно равно нулю или достигнуто максимально допустимое количество итераций [4].

,                                                                  (3)

где  — начальная точка;

 — длина шага;

 — производная исходной функции в точке .

Если условия остановки не выполнены, то значением, соответствующим  на следующего итерации становится значение .

Недостатком градиентного спуска является зависимость от начальной точки и длины шага. При неправильно выбранном шаге минимум может быть найден неверно, а также может произойти «зацикливание» алгоритма. Данную проблему можно решить, выбирая на каждой итерации новое значение длины шага.

Переобучение является одной из основных проблем нейронных сетей. Оно заключается в том, что сеть вместо того, чтобы решать поставленную задачу, запоминает обучающие примеры. Таким образом, нейронная сеть будет показывать более низкую точность, если она получит на вход новые данные, отличающиеся от тех, что использовались при обучении. Одним из способов борьбы с переобучением является применение Дропаута.

Дропаут — это метод регуляризации нейронных сетей, заключающийся в исключении нейронов с некоторой вероятностью p. Данная вероятность одинакова для каждого нейрона, что предотвращает возможность слоя полагаться на другие для исправления собственных ошибок. Это предоставляет самым обученным нейронам получить больший вес в нейронной сети. Таким образом, Дропаут обучает ансамбль нейронных сетей, в состав которых входят «выжившие» нейроны, с последующим усреднением результатов [5].

Сверточная нейронная сеть — это алгоритм глубокого обучения, который может принимать входное изображение, назначать важность (обучаемые веса и смещения) различным аспектам на изображении и иметь возможность отличать один объект от другого. Предварительная обработка, необходимая в сверточной нейронной сети, намного проще по сравнению с другими алгоритмами классификации [6].

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

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

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

Transfer learning — это метод машинного обучения, который повторно использует готовую модель, разработанную для одной задачи, в качестве отправной точки новой модели для выполнения другой задачи [8].

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

MobileNet — это сверточная архитектура нейронной сети, адаптированная под использование мобильными устройствами. Особенность данной архитектуры заключается в использовании операции свертки с разделением по глубине, а также в отсутствии слоев max-pooling, так как используется свертка с шагом фильтра равным двум [9].

Yolo — это архитектура нейронной сети для обнаружения объектов, которая применяется один раз ко всему изображению [10]. YoloV3 состоит из 106-ти сверточных слоев, а также трех слоев для детекции объектов разного размера.

Клиент-серверная архитектура

Клиент-серверная архитектура — это вычислительная архитектура, в которой участвуют серверы, распределяющий и контролирующий ресурсы, а также сервисы, запрашиваемые клиентом [11]. Общение между клиентом и сервером осуществляется с помощью протоколов передачи данных. Одним из таких протоколов является HTTP, использующий отдельные TCP\IP сессии для каждого запроса и осуществляющий доступ к ресурсам с помощью символьных строк, позволяющих идентифицировать запрашиваемый ресурс.

Реляционные базы данных

Реляционная модель данных — это теоретическая основа реляционных баз данных, представляющая собой способ структурирования данных с использованием отношений, которые представляют собой сеточные математические структуры, состоящие из столбцов и строк. Таблицы являются физическим представлением отношений в базе данных [12].

Преимуществами реляционных баз данных являются:

— модель реляционной базы данных масштабируется и расширяется, предоставляя гибкую структуру для меняющихся требований и увеличения объема данных;

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

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

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

Подготовка данных

Используемый датасет был предварительно разделен на выборки. При анализе этих выборок было обнаружено, что на валидационную и тестовую выборки выделено мало данных, а также выявлен недостаточный объем данных для каждого класса. Классы были объединены и разделены на выборки со следующим процентным соотношением: 70% для тренировочной и по 15% для валидационной и тестовой выборок.

Изображения птицы до применения аугментаций и после представлены на рисунках 2, 3.

 

Рисунок 2. Изображение краснохвостой мышиной тимелии до применения аугментаций

 

Рисунок 3. Изображение краснохвостой мышиной тимелии после применения аугментаций

 

Подбор параметров для модели MobileNetV2

Для обучения модели классификации птиц, представленных в датасете, была взята предобучанная сверточная нейронная сеть MobileNetV2. Модель была инициализирована весами imagenet с указанием на «замораживание» слоев предобученной модели, чтобы не обучать их. Также был указан гиперпараметр α со значением 1.4, так как при таком значении сеть показывала максимальный для себя результат на датасете imagenet.

Выходным слоем является полносвязный слой с функцией активации softmax.

Список пробных наборов слоев представлен в таблице 1.

Лучшей моделью оказалась составная сеть со следующими слоями:

  1. GlobalAveragePooling2D;
  2. BatchNormalization;
  3. Dense(512);
  4. DropOut(0.35);
  5. Dense(256);
  6. DropOut(0.25).

Таблица 1.

Результаты подбора структуры модели

Структура

train_loss

train_acc

val_loss

val_acc

GlobalAveragePooling2D

Dense (256)

DropOut (0,2)

Dense (256)

DropOut (0,2)

0.5813

0.8271

0.6933

0.8178

Flatten

Dense (512)

DropOut (0.4)

Dense (512)

Dense (128)

BatchNormalization

0.2135

0.9374

0.6410

0.8396

Flatten

Dense (512)

BatchNormalization

DropOut (0.4)

Dense (512)

BatchNormalization

DropOut (0.4)

0.1784

0.9440

0.6527

0.8468

GlobalAveragePooling2D

BatchNormalization

Dense (256)

DropOut (0.4)

BatchNormalization

Dense (256)

DropOut (0.25)

0.8739

0.7608

0.6627

0.8276

GlobalAveragePooling2

Dense (512)

BatchNormalization

DropOut (0.2)

Dense (512)

BatchNormalization

DropOut (0.2)

0.3285

0.9011

0.6216

 0.8460

GlobalAveragePooling2D

BatchNormalization

Dense (512)

DropOut (0.35)

Dense (256)

DropOut (0.25)

0.4601

0.8635

0.5160

0.8662

 

Для данной модели был осуществлен подбор скорости обучения. Лучшим вариантом оказалось использование значения 4e − 5, что помогло достигнуть точности 86.6% на валидационной выборке.

Визуализация анализа результатов классификации представлена на рисунках 4, 5.

 

Рисунок 4. Точность модели во время обучения

 

Рисунок 5. График функции потерь модели во время обучения

 

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

Также можно предположить, что в датасете присутствуют гибриды птиц. Факт скрещивания различных видов птиц в природе встречается очень часто. Чаще всего это происходит между близкородственными видами.

Модель птицы

Для работы с данными о птице, а также их локализации был создан класс Bird, для визуализации был реализован отдельный класс showBird, содержащий данные для текущего языка страницы.

Обнаружение птицы на фото

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

 Классификация птицы на фото

Для классификации птиц на фото был создан класс Predictor, который при инициализации принимает модель MobileNetV2. Для загруженных изображений формата PNG, был реализован перевод в цветовое пространство RGB. Результаты классификации представляют собой вероятности принадлежности к тому или иному классу, чтобы получить наиболее вероятный класс для изображения используется метод argmax библиотеки NumPy.

Взаимодействие с базой данных

Для работы с локализацией осуществлен перенос информации из Excelфайла в базу данных. Для этого была выбрана однофайловая система управления базами данных sqlite3. Были созданы три таблицы:

— Classes — таблица, хранящая идентификаторы классов и их названия, под которые адаптирована модель MobileNetV2;

— ruBirds и enBirds — таблицы, хранящие информацию о птицах для русского и английского языков.

Локализация

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

Локализация информации о классе птицы, полученной при обработке загруженного изображения, происходит в несколько этапов:

  1. На вход функции поступает идентификатор птицы, полученный при классификации или из запроса страницы о птице.
  2. С помощью идентификатора осуществляется поиск данных о птице для двух языков из соответствующих таблиц.
  3. С помощью методов для извлечения данных определенного языка объекта Bird подготавливается необходимая локализация данных о птице для вывода.

Верстка веб-приложения

Верстка веб-приложения осуществлялась с помощью языка гипертекстовой разметки HTML и кода стилизации CSS. Дополнительно был подключен фреймворк Bootstrap, предоставляющий готовые стили и объекты для быстрой верстки веб-приложений [13].

Для работы с изображениями были созданы два блока элементов: форма для загрузки изображений и блок с ошибками на форме. Форма обозначена тегом, в атрибутах которого указан тип отправляемого запроса POST. Для вывода ошибок на форме выделен отдельный элемент с тегом ‹span›. Также реализована возможность просмотра загруженного фото с помощью отдельного блока элементов.

Маршрутизация

Маршрутизация в фреймворке Flask определяет URL-адреса для доступа пользователя к методам через HTTP-запросы [14].

В данной работе существуют следующие маршруты:

— главная страница;

— предпросмотр загруженного изображения;

— страница птицы;

— случайное фото для страницы птицы.

Заключение

В ходе выполнения данной работы было разработано веб-приложение с использованием фреймворка Flask и его дополнений. Также была обучена и внедрена в приложение модель MobileNetV2, обладающая точностью в 86.6%. Итоговая модель имеет следующую структуру:

  1. GlobalAveragePooling2D;
  2. BatchNormalization;
  3. Dense (512);
  4. DropOut (0.35);
  5. Dense (256);
  6. DropOut (0.25).

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

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

Может быть улучшен маршрут до страницы, содержащий информацию об одной птице, добавлением «Базы знаний». Такое улучшение может увеличить время пребывания пользователя странице, так как появляется больше доступного функционала и дополнительного объема информации.

 

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

  1. Хайкин, С. Нейронные сети: полный курс / С. Хайкин. — Москва: Вильямс, 2006.
  2. Бабушкина, Н. Е. Выбор функции активации нейронной сети в зависимости от условий задачи / Н. Е. Бабушкина, А. А. Рачев // ИННОВАЦИОННЫЕ ТЕХНОЛОГИИ В МАШИНОСТРОЕНИИ, ОБРАЗОВАНИИ И ЭКОНОМИКЕ. — 2020. — №27. — С. 12–15.
  3. Созыкин, А. В. Обзор методов обучения глубоких нейронных сетей / А. В. Созыкин // Вестник ЮУрГУ. — 2017. — №3-6. — С. 28–59.
  4. Lu, J. Gradient Descent, Stochastic Optimization, and Other Tales / J. Lu. — Seattle: Amazon Digital Services LLC - Kdp, 2022.
  5. Brownlee, J. Better Deep Learning / J. Brownlee. — San Juan: Machine Learning Mastery, 2018.
  6. Николенко, С. Глубокое обучение / С. Николенко, А. Кадурин, Е. Архангельская. — Санкт-Петербург: Питер, 2017.
  7. Афанасьев, Д. Ю. Применение аугментации для улучшения качества классификации / Д. Ю. Афанасьев // StudNet. — 2022. — №4-5. — С. 2397– 2411.
  8. Богатырева, А. Исследование способности к?transfer learning сверточных нейронных сетей, обученных на imagenet / А. Богатырева, А. Виноградова, С. Тихомирова // МЕЖДУНАРОДНЫЙ ЖУРНАЛ ПРИКЛАДНЫХ И ФУНДАМЕНТАЛЬНЫХ ИССЛЕДОВАНИЙ. — 2019. — №7. — С. 106–111.
  9. Sandler, M. Mobilenetv2: Inverted residuals and linear bottlenecks // 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. — 2018. — Pp. 4510–4520.
  10. Redmon, J. Yolov3: An incremental improvement / J. Redmon, A. Farhadi // CoRR. — 2018. — Vol. abs/1804.02767.
  11. Yadava, S. C. Introduction To Client/Server Computing / S. C. Yadava. — Delhi: New Age International, 2009.
  12. Жалолов, О. И. Понятие sql и реляционной базы данных / О. И. Жалолов, Х. У. Хаятов // Universum: технические науки. — 2020. — С. 26–29.
  13. Freeman, E. Head First HTML with CSS and XHTML / E. Freeman, E. Robson, E. Freeman. — Sebastopol: O’Reilly Media, 2005.
  14. Stouffer, J. Mastering Flask / J. Stouffer. — Birmingham: Packt Publishing, 2015.

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

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.