В лаборатории комании Insystem мы часто применяем наш фреймворк ODRS(подробнее тут) для решения различных задач в области компьютерного зрения. Одной из такой задач стала настройка SCARA робота для сортировки цветных крышек от пластиковых бутылок. Этот проект был вызван необходимостью автоматизировать процесс переработки, увеличивая его эффективность и точность. Используя ODRS, мы смогли обучить робота распознавать крышки различных цветов, а затем сортировать их по категориям. В ходе работы были выполнены следующие задачи:
Cбор датасета состоящего из аннотиванных фотографий цветных крышек на конвеейрной ленте.
Обучение нейросетевого детектора с использованием фреймворка ODRS.
Интеграция детектора в программу робота
Сбор датасета
Одним из ключевых этапов в решении задач компьютерного зрения является сбор датасета, и наша задача не стала исключением. Для съемки изображений мы использовали камеру, подвешенную над конвейерной лентой. В дальнейшем такая камера и аналогичные сцены будут использоваться для подачи данных в нейросетевой детектор.
Основные характеристики:
Категории: Датасет включает 10 различных цветов крышек от бутылок.
-
Цветовые метки:
Синий
Коричневый
Зеленый
Лиловый
Оранжевый
Розовый
Пурпурный
Красный
Белый
Желтый
Этапы сбора и подготовки датасета:
Фотографирование крышек: Крышки различных цветов размещаются на конвейерной ленте и фотографируются в разных ракурсах и условиях освещения для получения разнообразных изображений.
-
Аннотирование изображений: Каждое изображение проходит процесс аннотирования, при котором указываются позиции и цвета крышек. Это делается для того, чтобы модель могла точно определить местоположение и цвет каждого объекта на изображении.
Проверка и валидация данных: Аннотации проверяются на точность и полноту, чтобы убедиться, что все объекты правильно размечены и данные готовы для использования в обучении моделей.
-
Формирование финального датасета: Готовые изображения с аннотациями собираются в единый датасет, который затем используется для обучения и тестирования моделей машинного обучения.
В итоге было собрано 1000 фотографий, содержащих более 15 000 объектов. Для расширения набора были применены агументации, который в итоге составил 2400 изображений:
50% вероятность горизонтального отражения
Случайная настройка экспозиции в диапазоне от -24% до +24%
Случайное применение размытия по Гауссу с радиусом от 0 до 5,25 пикселей
Применение шумов типа "соль и перец" к 1% пикселей
Обучение детектора
Хорошо собранный набор данных — это уже 90% успеха, но выбор подходящей модели также имеет большое значение. Для быстрого выбора и обучения оптимального детектора мы использовали наш рекомендательный фреймворк ODRS. Вначале, после анализа изображений, был сформирован список рекомендаций:
На основе списка рекомендаций была выбрана модель YOLOv5l. С помощью инструментов ODRS мы обучили данный детектор, результаты описаны ниже:
Удалось достичь высокого значения mAP0.5 ~ 0.94 почти для всех классов. К сожалению, из-за недостаточного количества розовых и желтых крышек при сборе датасета, метрики для этих объектов оказались значительно ниже. Тем не менее, для выполнения первой версии нашего проекта и проведения тестов этого вполне достаточно. Ноутбук с кодом можно найти на kaggle.
Интеграция детектора в программу робота
Для интеграции в программу робота был разработан простой, но эффективный скрипт. Этот скрипт обрабатывал результаты инференса, определяя класс объекта и вычисляя координаты центра bounding box. Далее эти данные передавались роботу по протоколу Modbus. Таким образом, робот получал необходимую информацию для точного позиционирования и выполнения своих задач.
Итог
За короткий промежуток времени нам удалось собрать датасет, обучить детектор и интегрировать его в программу робота. Будем рады лайкам и звездочкам, спасибо! Полезные ссылки:
meljohin
Первую и последнюю крышечку не присосало. Но это сбой механики наверно или не оптимизированный алгоритм, который решает брать или не брать объект уже поднеся присоску