Научная статья на тему 'ПОДХОДЫ МАШИННОГО ОБУЧЕНИЯ ДЛЯ АВТОМАТИЧЕСКОЙ КЛАССИФИКАЦИИ ВИДОВ ЛЕБЕДЕЙ НА ФОТОГРАФИЯХ'

ПОДХОДЫ МАШИННОГО ОБУЧЕНИЯ ДЛЯ АВТОМАТИЧЕСКОЙ КЛАССИФИКАЦИИ ВИДОВ ЛЕБЕДЕЙ НА ФОТОГРАФИЯХ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
143
36
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЛЕБЕДЬ / КЛАССИФИКАЦИЯ / ПРЕДСКАЗАНИЕ / YOLO / FINE-TUNING / PYQT5

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Чуфистов Г.А., Луняков А.А.

Предмет. Классификация объектов на фотографии является одной из задач, решаемой при помощи принципов и алгоритмов компьютерного зрения. В контексте этой статьи будет рассмотрена задача классификации лебедя по фотографии. Цели. Целью данной научной статьи является, прежде всего, создание точной модели по предсказанию видов лебедей, а также создание программного продукта, с помощью которого обычный пользователь сможет протестировать модель на собственных фотографиях и, как следствие, убедиться в ее точности. Методолгия. В процессе создания программного продукта были произведены эмпирические исследования как моделей нейронных сетей, так и библиотек для создания программных приложений на языке Python. Результаты. Была выбрана и обучена модель YOLOv8, было создано программное приложение на языке Python при помощи графического фреймворка PyQT5. Выводы. Сделан вывод о том, что для конкретной задачи распознавания вида животного необходимо: знать ключевые признаки определенного вида, иметь данные для обучения модели и подстраиваться под требования конечного пользователя, специалиста-зоолога.Subject. The classification of objects in a photograph is one of the tasks solved using the principles and algorithms of computer vision. In the context of this article, the problem of classifying a swan from a photograph will be considered. Goals. The purpose of this scientific article is, first of all, to create an accurate model for predicting swan species, as well as to create a software product with which an ordinary user can test the model on their own photographs and, as a result, verify its accuracy. Methodology. In the process of creating a software product, empirical studies of both neural network models and libraries for creating software applications in the Python language were carried out. Results. The YOLOv8 model was selected and trained, a software application was created in Python using the PyQT5 graphics framework. Conclusions. It is concluded that for a specific task of recognizing an animal species, it is necessary to know the key features of a certain species, have data for training the model, and adapt to the requirements of the end user, a specialist zoologist.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Чуфистов Г.А., Луняков А.А.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

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

УДК 004.8

Информационные технологии

Георгий Александрович Чуфистов, студент бакалавриата, 3 курс, МИРЭА-Российский технологический университет (РТУ МИРЭА), Россия, г. Москва, Институт информационных технологий

Россия, г. Москва Алексей Александрович Луняков, студент бакалавриата, 3 курс, МИРЭА-Российский технологический университет (РТУ МИРЭА), Россия, г. Москва, Институт информационных технологий

Россия, г. Москва

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

Аннотация: Предмет. Классификация объектов на фотографии является одной из задач, решаемой при помощи принципов и алгоритмов компьютерного зрения. В контексте этой статьи будет рассмотрена задача классификации лебедя по фотографии.

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

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

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

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

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

Ключевые слова: лебедь, классификация, предсказание, YOLO, Fine-Tuning, PyQT5.

Annotation: Subject. The classification of objects in a photograph is one of the tasks solved using the principles and algorithms of computer vision. In the context of this article, the problem of classifying a swan from a photograph will be considered.

Goals. The purpose of this scientific article is, first of all, to create an accurate model for predicting swan species, as well as to create a software product with which an ordinary user can test the model on their own photographs and, as a result, verify its accuracy.

Methodology. In the process of creating a software product, empirical studies of both neural network models and libraries for creating software applications in the Python language were carried out.

Results. The YOLOv8 model was selected and trained, a software application was created in Python using the PyQT5 graphics framework.

Conclusions. It is concluded that for a specific task of recognizing an animal species, it is necessary to know the key features of a certain species, have data for training the model, and adapt to the requirements of the end user, a specialist zoologist.

Keywords: swan, classification, prediction, YOLO, Fine-Tuning, PyQT5.

ВВЕДЕНИЕ

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

распознавания характерных признаков на фотографии.

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

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

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

ВЫБОР МОДЕЛИ ДЛЯ КЛАССИФИКАЦИИ

Выбор решения

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

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

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

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

На данный момент сверточные нейронные сети (CNN) успешно показывают лучшие результаты, чем самые инновационные нейронные сети, основанные на архитектуре трансформеров (Vision Transformers) [1].

Рисунок 1 — Сравнение метрики accuracy при обучении CNN и ViT моделей

Выбор модели

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

По той причине, что на фотографии может присутствовать несколько особей, а по условию необходимо классифицировать каждую из них, необходимо выбрать такую модель, которая будет находить на фотографии каждого лебедя и впоследствии вырезать области, внутри которых находится определенный лебедь. В качестве такой модели была выбрана модель v8 семейства YOLO [3; 6].

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

К сожалению, для нас оказалось невозможным найти в Интернете готовый датасет, который подходил бы по формату для модели YOLOv8, поэтому мы самостоятельно разметили порядка 2400 фотографий.

ПОДГОТОВКА ДАННЫХ ДЛЯ ОБУЧЕНИЯ

Прежде всего, необходимо создать данные - сделать разметку объектов фотографий, на которых модель будет обучаться. Чтобы избежать некорректного обучения, модель должна делать анализ не всей фотографии, а некоторой ее области. В качестве сервиса для разметки была выбрана Label Studio - гибкая платформа маркировки данных для обучения различных ML и DL моделей, доступная как для Windows, так и для дистрибутивов Linux [3; 4].

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

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

Для обучения было вручную размечено порядка 2400 фотографий. Для разметки выбирались фотографии, содержащие разное количество лебедей [5]. Ниже приведены примеры разметок:

Разметка всего лебедя Разметка головы из-за клюва, как

характерного признака

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

ВЫБОР КЛАССИФИКАТОРА

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

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

В это же время предварительно обученные классификаторы (Pre-trained Classificators), выпущенные различными компаниями (Google, *другие компании*), обладают важным достоинством: они уже заранее обучены на большом количестве данных. Например, модели GoogLeNet, выпущенные в 2014 году, были обучены на терабайтах фотографий, что, конечно же, не

сравнится с тем объемом фотографий, который мы могли бы получить самостоятельно [2].

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

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

ОКОНЧАТЕЛЬНЫЙ ВЫБОР МОДЕЛИ

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

Работая в реальных условиях, важно помнить, что не всегда есть возможность использовать определенные ресурсы (например, графические ускорители) в большинстве возможных сервисов, либо использовать модели при развертывании в облаке. Даже такие серьезные сервисы, как Yandex Datasphere или VK Cloud, не предоставляют обычным пользователям для развертывания своей модели графические ускорители, что вынуждает рассчитывать модели с возможностью работы только на центральных процессорах. Поэтому у разработчиков нет возможности использовать крайне эффективные методы ансамблирования для повышения точности моделей и им приходится применять квантизацию (уменьшение точности весов модели),

вызывающую снижение точности с одновременным уменьшением веса модели и повышением ее производительности.

На стадии подбора самих моделей для обучения или Fine-Tuning разработчики также вынуждены выбирать не самые эффективные модели по уже готовым метрикам, таким как accuracy в случае классификаторов или mAP50:95, а выбирать те модели, которые можно будет с наибольшей скоростью как обучить, так и предоставить конечному пользователю для его работы. В нашем случае финальный продукт был предложен для развертывания и использования сотрудникам Министерства природы Российской Федерации, с их стороны выставлялись следующие требования: легковесность и возможность использования на портативных устройствах даже без графических ускорителей. С учетом этих требований мы решили сделать следующее:

- отказаться от повышения качества модели при помощи ансамблирования;

- выбрать максимально легкие в своем семействе модели, компенсируя их первоначальную пониженную точность большим количеством данных при fine-tuning^ и увеличенным числом эпох при обучении.

Исходя из всего вышеперечисленного нами была выбрана модель Yolov8-nano, как самая эффективная среди всех nano моделей, выпущенных компанией Ultralytics. При весе модели всего в 5 Мб, при помощи длительного обучения и большого количества данных, мы смогли достигнуть такой же точности, как и при обучении модели Yolov8-medium, обладающей размером в 20 раз больше, чем наша [6].

Для классификатора нами была выбрана модель EfficientNetV2 в виду своей легковесности по сравнению с другими моделями классификаторов. Она весит порядка 70 Мб без квантизации и с учетом того, что для своего относительно легкого веса (относительно других моделей, как и среди моделей классификаторов только на свертках, так и среди моделей классификаторов, основанных на архитектуре трансформеров) эта модель обладает либо меньшим весом и лучшими характеристиками, либо гораздо большей

скоростью во время работы и не сильно проигрывает в качестве относительно метрики accuracy.

СОЗДАНИЕ ПРИЛОЖЕНИЯ НА PYQT5

Существует множество различных фреймворков для создания приложений на Python, все они имеют разную степень настройки конфигурации приложения. Поскольку основной упор статьи сделан на эффективность модели и точность ее классификации, для создания приложения на Python было решено использовать фреймворк PyQT5 — это простой и удобный фреймворк, позволяющий достаточно быстро создать приложение, что очень важно в условиях ограниченного времени [7; 8].

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

Рисунок 3 — Интерфейс приложения-классификатора

Слева сверху указано название команды и мероприятия там же -подсказка для пользователя. Ниже располагается область, в которую пользователю необходимо перенести фотографию. Фотография должна

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

Рисунок 4 — Корректное предсказание лебедя по фотографии

ЗАКЛЮЧЕНИЕ

В результате выполнения научной работы было создано программное приложение, способное по фотографии определить вид лебедя: кликун, шипун или малый. Универсальность представленного решения заключается в том, что набор классов может быть не только расширен, но и полностью изменен в зависимости от поставленной задачи. Результаты этой работы будут полезными для исследователей в области Computer Vision и Object Detection, а также для

специалистов, занимающихся изучением видов животных. Данное решение было представлено на «Окружном хакатоне «Цифровой прорыв. Сезон: Искусственный интеллект» (2023 год)» 21 мая 2023 года и оказалось в списке 7 лучших реализаций.

Авторы выражают благодарность и глубокую признательность кандидату технических наук, доценту кафедры вычислительной техники Института информационных технологий, Сорокину Алексею Борисовичу, и старшему преподавателю кафедры вычислительной техники Института информационных технологий, Железняк Лилии Михайловне за советы и ценные замечания при работе над данной статьей.

Библиографический список:

1. Сравнение CNN и ViT: [Электронный ресурс] // Fahim Rustamy, Vision Transformers vs. Convolutional Neural Networks. URL: https://medium.com/@faheemmstamy/vision-transformers-vs-convolutional-neural-

networks-5fe8f9e 18efc?source=user_profile.........0............................ (дата

обращения: 20.06.2023).

2. Архитектура глубокой сверточной нейронной сети: [Электронный ресурс] // Going deeper with convolutions. URL: https://arxiv.org/pdf/1409.4842v1.pdf (дата обращения: 14.06.2023).

3. Как обнаруживать объекты, используя YOLO, OpenCV и PyTorch в Python: [Электронный ресурс] // URL: https://waksoft.susu.ru/2021/05/19/kak-vypolnit-obnaruzhenie-obektov-yolo-s-pomoshhyu-opencv-i-pytorch-v-python/ (дата обращения: 07.07.2023).

4. Система компьютерного зрения движущегося воздушного объекта: [Электронный ресурс] // Обработка изображений, распознавание образов. Титов И.О., Емельянов Г.М. URL: https://cyberleninka.ru/article/n7sistema-kompyuternogo-zreniya-dvizhuschegosya-vozdushnogo-obekta/viewer (дата обращения: 25.05.2023).

5. Внедрение и обучение CNN с нуля с помощью PyTorch Lightning :

[Электронный ресурс] // Implement and Train a CNN from Scratch with PyTorch Lightning. URL: https://towardsdatascience.com/implement-and-train-a-cnn-from-

scratch-with-pytorch-lightning-ce22f7dfad83?source=collection_home.........8.......

.....................(дата обращения: 20.06.2023).

6. Документация YOLO (You Only Look Once) от Ultralytics: [Электронный источник] // Ultralytics YOLOv8 Modes. URL: https://docs.ultralytics.com/modes/ (дата обращения: 20.06.2023).

7. Документация QT для Python: [Электронный ресурс] // Qt for Python. URL: https://doc.qt.io/qtforpython-6/ (дата обращения: 21.06.2023).

8. Написание приложений, основаных на Qt, на языке Python: [Электронный источник] // URL: https://habr.com/ru/articles/31426/ (дата обращения: 10.06.2023).

i Надоели баннеры? Вы всегда можете отключить рекламу.