(Школьники и студенты СПО) Обработка изображений для задач автономного транспорта

Цель трека

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

Задание

Вам необходимо разработать программу на языке Python3.8.0, которая сможет обнаружить на снимках, полученных с камеры автономного робота, искомые объекты и вывести в стандартный поток вывода (stdout) информацию об их наличии в кадре и характеристиках (bounding box в системе координат снимка).

При подготовке решений разрешено использовать пакеты Numpy (1.22.4) и OpenCV-Python (4.6.0.66).

Шаблон и примеры - будут уточнены в дальнейшем.

Исходные данные.

Исходные данные для проверки решений представляют собой кадры с камеры автономного колесного робота или квадрокоптера, выполняющего движение в лаборатории автономного транспорта в СПБГЭТУ “ЛЭТИ”.

Примеры исходных данных для решений можно увидеть в официальном репозитории симулятора https://github.com/duckietown/gym-duckietown. Дополнительная информация будет уточнена чуть позже.

 

Отличие между этапами олимпиады для данного трека заключается в сложности распознавания:

Проверка решений.

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


Алгоритм проверки решений:

  1. Запуск решения на открытом наборе снимков, сравнение полученных выходных данных с эталонными данными на этом наборе снимков, вычисление баллов по каждому снимку
  2. Запуск решения на закрытом наборе снимков, сравнение полученных выходных данных с эталонными данными на этом наборе снимков, вычисление баллов по каждому снимку
  3. Вычисление штрафов и итоговых баллов (произвоится в конце этапа)

Штрафы:

 

Подсчет баллов для одного решения происходит путем определения средней точности:

  1. Для каждого из снимков выполнить подсчет точности обнаружения объектов -
    1. Для каждого объекта на снимке найти по метрике IoU (Intersection over Union) наилучший bоunding box среди объектов возвращаемых решением.
    2. Каждый bоunding box учесть только один раз.
    3. Точность по снимку == сумма наилучших IoU для каждого из возвращенных решением участниках bоunding box
    4. Если снимок обрабатывался дольше 5 секунд, то его точность обнуляется
  2. Сложить точность по всем снимкам и разделить на их количество.

Правила перехода участников между этапами:

  1. Переход к основному этапу - оценка решения >= 0.4 или лучшая половина решений согласно общему рейтингу (если доля набравших оценку выше порога будет меньше одной трети)
  2. Переход к финальному этапу - оценка решения >= 0.6 или или лучшая половина решений согласно общему рейтингу (если доля набравших оценку выше порога будет меньше одной трети)