В лаборатории комании Insystem мы часто применяем наш фреймворк ODRS(подробнее тут) для решения различных задач в области компьютерного зрения. Одной из такой задач стала настройка SCARA робота для сортировки цветных крышек от пластиковых бутылок. Этот проект был вызван необходимостью автоматизировать процесс переработки, увеличивая его эффективность и точность. Используя ODRS, мы смогли обучить робота распознавать крышки различных цветов, а затем сортировать их по категориям. В ходе работы были выполнены следующие задачи:
Cбор датасета состоящего из аннотиванных фотографий цветных крышек на конвеейрной ленте.
Обучение нейросетевого детектора с использованием фреймворка ODRS.
Интеграция детектора в программу робота
Сбор датасета
Одним из ключевых этапов в решении задач компьютерного зрения является сбор датасета, и наша задача не стала исключением. Для съемки изображений мы использовали камеру, подвешенную над конвейерной лентой. В дальнейшем такая камера и аналогичные сцены будут использоваться для подачи данных в нейросетевой детектор.
Основные характеристики:
Категории: Датасет включает 10 различных цветов крышек от бутылок.
-
Цветовые метки:
Синий
Коричневый
Зеленый
Лиловый
Оранжевый
Розовый
Пурпурный
Красный
Белый
Желтый
Этапы сбора и подготовки датасета:
Фотографирование крышек: Крышки различных цветов размещаются на конвейерной ленте и фотографируются в разных ракурсах и условиях освещения для получения разнообразных изображений.
-
Аннотирование изображений: Каждое изображение проходит процесс аннотирования, при котором указываются позиции и цвета крышек. Это делается для того, чтобы модель могла точно определить местоположение и цвет каждого объекта на изображении.
разметка изображений при помощи сервиса roboflow Проверка и валидация данных: Аннотации проверяются на точность и полноту, чтобы убедиться, что все объекты правильно размечены и данные готовы для использования в обучении моделей.
-
Формирование финального датасета: Готовые изображения с аннотациями собираются в единый датасет, который затем используется для обучения и тестирования моделей машинного обучения.
В итоге было собрано 1000 фотографий, содержащих более 15 000 объектов. Для расширения набора были применены агументации, который в итоге составил 2400 изображений:
50% вероятность горизонтального отражения
Случайная настройка экспозиции в диапазоне от -24% до +24%
Случайное применение размытия по Гауссу с радиусом от 0 до 5,25 пикселей
Применение шумов типа "соль и перец" к 1% пикселей
![Статистики набора соборанного набора данных Статистики набора соборанного набора данных](https://habrastorage.org/getpro/habr/upload_files/882/68c/eb3/88268ceb3ab4b72c59a157a2b2e13882.png)
Обучение детектора
Хорошо собранный набор данных — это уже 90% успеха, но выбор подходящей модели также имеет большое значение. Для быстрого выбора и обучения оптимального детектора мы использовали наш рекомендательный фреймворк ODRS. Вначале, после анализа изображений, был сформирован список рекомендаций:
![формирование списка рекомендаций в ODRS формирование списка рекомендаций в ODRS](https://habrastorage.org/getpro/habr/upload_files/ec4/ad7/8b5/ec4ad78b579583733dbf35a1262d4cd4.png)
На основе списка рекомендаций была выбрана модель YOLOv5l. С помощью инструментов ODRS мы обучили данный детектор, результаты описаны ниже:
![метрики обучения детектора YOLOv5l метрики обучения детектора YOLOv5l](https://habrastorage.org/getpro/habr/upload_files/a71/981/610/a71981610c0dddc920806d8e3d37d847.png)
Удалось достичь высокого значения mAP0.5 ~ 0.94 почти для всех классов. К сожалению, из-за недостаточного количества розовых и желтых крышек при сборе датасета, метрики для этих объектов оказались значительно ниже. Тем не менее, для выполнения первой версии нашего проекта и проведения тестов этого вполне достаточно. Ноутбук с кодом можно найти на kaggle.
![значения метрик после конца обучения детектора YOLOv5l значения метрик после конца обучения детектора YOLOv5l](https://habrastorage.org/getpro/habr/upload_files/cbf/de7/d0c/cbfde7d0ce975f78ca81324a966bd9fa.png)
![примеры выходов детектора на валидационной выборке примеры выходов детектора на валидационной выборке](https://habrastorage.org/getpro/habr/upload_files/d6a/75f/4ac/d6a75f4ac9e07c56e058e6fef3307c32.png)
Интеграция детектора в программу робота
Для интеграции в программу робота был разработан простой, но эффективный скрипт. Этот скрипт обрабатывал результаты инференса, определяя класс объекта и вычисляя координаты центра bounding box. Далее эти данные передавались роботу по протоколу Modbus. Таким образом, робот получал необходимую информацию для точного позиционирования и выполнения своих задач.
Итог
За короткий промежуток времени нам удалось собрать датасет, обучить детектор и интегрировать его в программу робота. Будем рады лайкам и звездочкам, спасибо! Полезные ссылки:
meljohin
Первую и последнюю крышечку не присосало. Но это сбой механики наверно или не оптимизированный алгоритм, который решает брать или не брать объект уже поднеся присоску