Для реализации технического зрения предлагается использовать архитектуру YOLOv4, построенная по принципу singleshot-детектора. Обращение к каждому кадру видеопотока происходит 1 раз, что повышает производительность до зоны, в которой возможно применение системы распознавания и классификации без задержек, то есть в режиме реального времени.
Помимо решения задачи классификации средствами YOLO [1], также необходимо производить максимально точный трекинг обнаруженных отходов на движимой линии. Данный вопрос усложняется, если рассматривать конвейер с отходами как движимую поверхность. Могут случаться ситуации, когда мусор ненадолго пропадает из поля видимости оптического модуля или оказывается в нераспознаваемом положении. Нейросетевые алгоритмы либо потеряют объект, либо затратят большой ресурс на поиск и потеряют в эффективности.
В устранение этого недостатка следует дополнительно применить методы, закладываемые фреймворком DeepSort. Это дает прибавку сразу по нескольким показателям:
становится возможным распараллелить нагрузку между роботами;
обнаружить объект заново, не затрачивая дополнительных ресурсов, тем самым повышая общий FPS распознавания и классификации. По окончанию проведенного анализа и выбора необходимых подходов можно перейти к разработке предлагаемого решения по части ПО.
Интерфейс приложения написан с помощью фреймворка PySimpleGUI. Он основан на идее использования жизненного цикла объекта window до тех пор, пока выполняется цикл while(true). Интерфейсы окна задаются layout-ами, вызываемыми в цикле.
С помощью фреймворка была создана многоуровневая структура программного приложения. Главное окно, выводимое при запуске приложения, представлен на рисунке 1:
Рисунок 1 – Стартовое окно программы
Для начала рассмотрим, какие функции приложения вызываются по нажатиям на кнопки в строковом меню, и какой код отвечает за их функционал. Во вкладке «Инфо» находится окно с информацией о приложении. Для настроек распознавателя были разработаны окна программы, задающие основные параметры настройки. Опции задаются через флаги, прописываемые в коде [2]:
Рисунок 2 – Настройки распознавателя
Получаемые с вебкамеры данные бинаризируются и пропускаются через нейросетевой аппарат фреймворка TensorFlow [3]. Возвращающимися значениями будут набор bounding boxes и коэффициентов предсказания. В дальнейшем они обрабатываются кодом на рисунке 3 и визуализируются в специально разработанном окне программы 4:
Рисунок 3 – Работа нейросети
Ра 4 – Результат работы нейросети
Для обучения технического зрения был создан датасет, состоящий из 2500 уникальных изображений классов отходов на класс. В рамках курсового проекта этими классами выступали «bottle» (бутылка) и «metal can» (жестяная банка).
Тестирование обучения было проведено следующим образом – подсистеме был отдан под обработку видеофайл длительностью одну минуту, содержащий 30 объектов отходов. Нейросеть должна правильно распознать, классифицировать и вывести необходимую информацию о результатах на экран. Тестирование было проведено успешно, его результаты представлены на рисунке 5:
Были достигнуты отличные показатели распознавания, не распозналась лишь 1 бутылка.
Список использованных источников:
1. Bochkovskiy A,, Wang C., Liao H. YOLOv4: Optimal Speed and Accuracy of Object Detection [Электронныйресурс]. – Режимдоступа URL: https://arxiv.org/abs/2004.10934 (датаобращения 10.12.2021).
2. Горелов А.И. Обучение сети yolo для распознавания отходов в городской среде // Вестник науки и образования. 2019. №9-4 (63). [Электронный ресурс]. – Режим доступа URL: https://cyberleninka.ru/article/n/obuchenie-seti-yolo-dlya-raspoznavaniya-othodov-v-gorodskoy-srede (дата обращения: 09.12.2021).
3. Документация Tensorflow [Электронный ресурс]. – Режим доступа URL: https://www.tensorflow.org/ (дата обращения 10.12.2021).