Архипелаг 2025. Дисциплина "Компьютерное зрение в навигации беспилотных роботизированных систем". Квалификационная задача. Определение угловых отклонений объектов от траектории беспилотника.

Финиш 31 июля 23:59 (МСК)

Условие

Камера беспилотника направлена на чёрный прямоугольник, расположенный в горизонтальной плоскости, на которой стоит беспилотник. Длинные стороны прямоугольника параллельны нижнему краю кадра с камеры. Прямоугольник имеет размеры 6×8 метров. На нём установлены от 2 до 4 цветных вертикально ориентированных стержня различной высоты.
Ваша задача — написать функцию, распознающую цвет каждого стержня. Кроме того, функция должна определять угол в горизонтальной плоскости между линией «беспилотник–стержень» и направлением движения беспилотника. Беспилотник движется в той же горизонтальной плоскости, причём направление его движения совпадает с центром кадра. Текущее положение беспилотника — это середина нижней границы кадра и одновременно середина ближней к камере стороны прямоугольника.

Видимый угол не соответствует реальному углу в горизонтальной плоскости! Если приложить транспортир к изображению и измерить угол α, он будет равен 18°. Ваша задача — найти реальные углы, которые можно измерить, приложив транспортир к поверхности чёрного прямоугольника, а не к его изображению.

Функция должна возвращать список пар «цвет–угол» для всех стержней на изображении. Пары должны быть представлены в порядке расположения объектов в кадре слева направо. Например, на изображении три стержня: красный, зелёный и синий. Функция должна вернуть список:
[[“red”, -45], [“green”, 10], [“blue”, 25]].
Объекты в левой половине изображения имеют отрицательный угол отклонения, в правой половине — положительный.

Выполнение

1. Скачайте материалы задания

2. Ознакомьтесь с материалами задания

Для Вас подготовлены несколько файлов “.py”, набор изображений с камеры беспилотника и аннотации к нему. Среди подготовленных файлов есть:
eval.py - файл с ключевыми функциями preliminary_operations и predict_color_and_angle, именно их Вам необходимо дописать!
main.py - файл проверяющий точность работы вашего алгоритма. Не редактируйте его. main.py использует написанные вами функции из eval.py и сверяет предсказания вашего алгоритма с верными ответами.
horizontal_marking.jpg, vertical_marking.jpg – изображения с разделением прямоугольника на равные части. Используйте их для решения задачи.

3. Допишите в файле eval.py функцию predict_color_and_angle

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

4. Запустите файл main.py и проверьте свой алгоритм

Если программа выдала ошибку, то найдите и исправьте её в файле eval. Вновь запустите файл main.py. Улучшайте алгоритм до тех пор, пока не получите желаемую точность.

5. Пришлите решение на онлайн платформу для проверки

В качестве решения, необходимо сдать отредактированный файл eval.py. Либо архив “*.zip” с файлом eval.py и остальными файлами, требующимися для его работы. Внутри архива должны находиться непосредственно файлы, а не папка с тем же именем. Дождитесь проверки решения, чтобы увидеть точность алгоритма. Набор данных для проверки на онлайн-платформе отличается от того, который был предоставлен вам.
Задание считается успешно выполненным, если точность превышает 0,9.

6. Заполните Анкету участника квалификации дисциплины.

К анкете необходимо приложить снимок экрана (screenshot) вашего личного кабинета на онлайн-платформе. Перейдите в личный кабинет. Прокрутите страницу так, чтобы в кадре была видна попытка попытка с лучшим результатом решения квалификационной задачи. Сделайте снимок экрана — на нём должны быть видны адресная строка браузера и ссылка с номером пользователя, как в примере ниже.

Технические ограничения

Размер решения ограничен - не более 2 МБ. Если ваш алгоритм успешно проверен платформой, то следующее решение можно прислать только через 10 минут. Если ваш алгоритм в ходе проверки выдал сообщение об ошибке, то следующее решение можно прислать сразу.

Пакеты, ориентированные на работу с изображениями и данными, использующиеся на платформе проверки: Python 3.8.10; catboost 1.1.1; dlib 19.24.0; gast 0.4.0; h5py 3.7.0; imutils 0.5.4; keras 2.9.0; Keras-Preprocessing 1.1.2; matplotlib 3.6.2; numpy 1.23.2; opencv-python 4.6.0.66; pandas 1.5.1; scikit-image 0.19.3; scikit-learn 1.1.3; scipy 1.9.3; tensorflow-cpu 2.9.2; torch 1.13.0; torchaudio 0.13.0; torchvision 0.14.0.

Используйте совместимые пакеты.


Вопросы по задаче можно задать разработчикам в чате дисциплины.



Очки Участник Дата Команда Город Учебное заведение
1.0 Олег Синопальников 29.07.2025 18:50 krabatzens
1.0 Татьяна Петровская 29.07.2025 18:54 krabatzens
1.0 Полина Кандарацкова 29.07.2025 12:54 krabatzens
1.0 Sanechek Io 29.07.2025 12:50 krabatzens
1.0 qasdf123df 29.07.2025 11:56 krabatzens
1.0 Елизавета Капля 29.07.2025 11:50 krabatzens
1.0 Артём Семикин 14.07.2025 14:32 Нетраннеры чёрного заслона
1.0 Александра Шапкина 14.07.2025 14:25 Нетраннеры чёрного заслона
1.0 Александр Абаренов 27.06.2025 18:49 Нетраннеры чёрного заслона
1.0 Андрей Максимов 27.06.2025 18:35 СарДронТех
1.0 Александр Екименков 14.07.2025 20:51 Ёжики на паскале
1.0 Артём Лункин 27.06.2025 18:45 СарДронТех
1.0 Егор Щеренко 27.06.2025 18:33 СарДронТех
1.0 Егор Румянцев 14.07.2025 20:38 Ёжики на паскале
1.0 Александр Владимиров 27.06.2025 18:32 СарДронТех
1.0 Шустов Станислав 27.06.2025 19:48 Нетраннеры черного заслона
1.0 Григорий Лаврентьев 02.07.2025 18:54 Катион
1.0 Александр Знахаренко 02.07.2025 18:54 Катион
1.0 Анастасия Алиева 02.07.2025 18:48 Катион
1.0 Матвей Панин 14.07.2025 20:29 Ёжики на паскале
1.0 Дмитрий Майоров 11.07.2025 22:02 Ёжики на паскале
0.98 Даниил Рыбин 26.06.2025 15:53 Пегас
0.98 Дмитрий Колесников 26.06.2025 15:09 Пегас
0.98 Илья Великодный 26.06.2025 15:17 Пегас
0.98 Матвей Машуков 25.06.2025 14:19 БВС Стресс-тест
0.98 Крючков Данил 26.06.2025 05:15 БВС Стресс-тест
0.98 Константин Винокуров 25.06.2025 10:56 БВС Стресс-тест
0.98 Антон Бондарчук 25.06.2025 11:01 БВС Стресс-тест
0.98 Ариф Шукюров 23.06.2025 12:08 Vision Copters
0.98 Никто Никак 23.06.2025 12:05
0.98 Елена Ом 11.07.2025 12:06
0.98 Даниил Князев 27.06.2025 17:38 Vision Copters
0.96 Кристина Белякова 14.07.2025 14:05 ВАЗ-1111
0.96 Максим Ерофеев 14.07.2025 11:23 Velocity speed
0.96 Юдин Дмитрий 12.07.2025 22:06 Velocity Speed
0.96 Егор Мудров 27.06.2025 18:59 ВАЗ-1111
0.96 Кирилл Трушин 27.06.2025 18:57 ВАЗ-1111
0.96 Максим Зубахин 27.06.2025 18:45 ВАЗ-1111
0.96 Кирилл Бабаскин 14.07.2025 09:20 Velocity Speed
0.96 Даниил Стойко 26.06.2025 19:21 BELVA
0.96 Валентин Исаев 26.06.2025 12:04 BELVA
0.94 Богдан Таран 27.06.2025 16:44 Holocron
0.94 Максим Соловьев 27.06.2025 16:29 Holocron
0.94 Котов Амир 27.06.2025 16:33 Holocron
0.94 Юрий Скурихин 27.06.2025 16:47 Holocron
0.92 Артём Соловьёв 31.07.2025 14:33 Синее Небо
0.92 Саша Смуров 31.07.2025 14:29 Синее Небо
0.92 Алексей Логинов 31.07.2025 14:07 Синее Небо
0.92 Nikolay Maryevichev 31.07.2025 19:13 Синее Небо
0.92 Артем Сотов 13.07.2025 23:24 SOVA
0.92 Яков Подмарёв 13.07.2025 23:02 SOVA
0.92 Роман Михайлов 27.06.2025 10:26 BELVA
0.92 Наталья Борисова 25.06.2025 20:41 Really-KSIK
0.92 Артем Лукин 25.06.2025 20:39 Really-KSIK
0.92 Максим Васильев 13.07.2025 16:42 Really-KSIK
0.92 Павел Таскаев 16.06.2025 16:29 Железный капут
0.92 Михаил Вершинин 10.07.2025 10:59 SiberAI
0.92 Максим Валяев 14.07.2025 16:44 Железный капут
0.92 Андрей Миняев 12.06.2025 13:06 Железный капут
0.92 Денис Русинович 19.06.2025 21:22 Железный капут