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

  • Cбор датасета состоящего из аннотиванных фотографий цветных крышек на конвеейрной ленте.

  • Обучение нейросетевого детектора с использованием фреймворка ODRS.

  • Интеграция детектора в программу робота

Сбор датасета

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

Основные характеристики:

  • Категории: Датасет включает 10 различных цветов крышек от бутылок.

  • Цветовые метки:

    • Синий

    • Коричневый

    • Зеленый

    • Лиловый

    • Оранжевый

    • Розовый

    • Пурпурный

    • Красный

    • Белый

    • Желтый

Этапы сбора и подготовки датасета:

  1. Фотографирование крышек: Крышки различных цветов размещаются на конвейерной ленте и фотографируются в разных ракурсах и условиях освещения для получения разнообразных изображений.

  2. Аннотирование изображений: Каждое изображение проходит процесс аннотирования, при котором указываются позиции и цвета крышек. Это делается для того, чтобы модель могла точно определить местоположение и цвет каждого объекта на изображении.

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

  4. Формирование финального датасета: Готовые изображения с аннотациями собираются в единый датасет, который затем используется для обучения и тестирования моделей машинного обучения.

    В итоге было собрано 1000 фотографий, содержащих более 15 000 объектов. Для расширения набора были применены агументации, который в итоге составил 2400 изображений:

    • 50% вероятность горизонтального отражения

    • Случайная настройка экспозиции в диапазоне от -24% до +24%

    • Случайное применение размытия по Гауссу с радиусом от 0 до 5,25 пикселей

    • Применение шумов типа "соль и перец" к 1% пикселей

Статистики набора соборанного набора данных
Статистики набора соборанного набора данных

Обучение детектора

Хорошо собранный набор данных — это уже 90% успеха, но выбор подходящей модели также имеет большое значение. Для быстрого выбора и обучения оптимального детектора мы использовали наш рекомендательный фреймворк ODRS. Вначале, после анализа изображений, был сформирован список рекомендаций:

формирование списка рекомендаций в ODRS
формирование списка рекомендаций в ODRS

На основе списка рекомендаций была выбрана модель YOLOv5l. С помощью инструментов ODRS мы обучили данный детектор, результаты описаны ниже:

метрики обучения детектора YOLOv5l
метрики обучения детектора YOLOv5l

Удалось достичь высокого значения mAP0.5 ~ 0.94 почти для всех классов. К сожалению, из-за недостаточного количества розовых и желтых крышек при сборе датасета, метрики для этих объектов оказались значительно ниже. Тем не менее, для выполнения первой версии нашего проекта и проведения тестов этого вполне достаточно. Ноутбук с кодом можно найти на kaggle.

значения метрик после конца обучения детектора YOLOv5l
значения метрик после конца обучения детектора YOLOv5l
примеры выходов детектора на валидационной выборке
примеры выходов детектора на валидационной выборке

Интеграция детектора в программу робота

Для интеграции в программу робота был разработан простой, но эффективный скрипт. Этот скрипт обрабатывал результаты инференса, определяя класс объекта и вычисляя координаты центра bounding box. Далее эти данные передавались роботу по протоколу Modbus. Таким образом, робот получал необходимую информацию для точного позиционирования и выполнения своих задач.

Итог

За короткий промежуток времени нам удалось собрать датасет, обучить детектор и интегрировать его в программу робота. Будем рады лайкам и звездочкам, спасибо! Полезные ссылки:

  1. Набор данных с крышками

  2. Ноутбук с кодом

  3. Github ODRS

Комментарии (1)


  1. meljohin
    09.07.2024 05:01

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