Архипелаг 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 | Железный капут |