Разбор Финала НТО Junior: Технологии и Искусственный интеллект
О сложностях и успехах в цифрах
В финале участие приняли 171 команда! Мы подготовили аналитику, чтобы выяснить сложность задач и направлений: какие навыки Джуниоры освоили на все 100%, а какие нужно прокачать.
Зеленый показывает количество команд, которые успешно решили задачу
Процент решаемости показывает долю команд с верными решениями задач ко всем (кто решение отправлял).
Цвет столбцов соответствует рекомендуемым ролям в команде:
Лучшие решения команды показали в задачах:
- реализованных на платформах машинного обучения Machine learning for kids и Teachable Machine,
Задача №2. Виртуальный помощник
Модель работает с погрешностью. Она распознает положительные отзывы с вероятностью 0.85 , а также ошибочно классифицирует нейтральные как положительные с вероятностью 0.1 и отрицательные как положительные с вероятностью 0.05. Известно, что положительные отзывы составляют 70% от всех поступающих отзывов, нейтральные – 20%, а отрицательные – 10%.
Вероятность распознавания положительного отзыва как положительного:
P(P∣P)=0.85
Вероятность распознавания нейтрального отзыва как положительного:
P(P∣N)=0.1
Вероятность распознавания отрицательного отзыва как положительного:
P(P∣B)=0.05
Подставим значения из условия в формулу:
Теперь подставляем полученные значения:
P(положительный)=0.595+0.02+0.005=0.602
Вероятность того, что очередной отзыв будет распознан как положительный, составляет 0.602 или 60,2%.
Задача №3. Сортировка мест в системе «Автопилот»
- Создать проект распознавания текста
- Создать метки классов и загрузить данные с экземплярами из txt файлов
Пример ответа для входных данных:
"Рынок рыцарей" - это торговый центр, предлагающий широкий выбор товаров и услуг для всей семьи. На территории центра расположены магазины одежды, обуви, аксессуаров, электроники, товаров для дома, продукты питания и многое другое. Для удобства посетителей предусмотрены кафе, рестораны, зоны отдыха и развлечений. "Рынок рыцарей" - это место, где можно провести время с пользой и удовольствием, совершая покупки и наслаждаясь атмосферой.
Задача №4. Геокодирование системы «Автопилот»
Cоставьте запрос для получения координат мест и их категорий, используя спецификацию API (https://yupest2.pythonanywhere.com/api/v2024). Откройте полученную ссылку в браузере и скопируйте содержимое форматаJSON. Запишите его в переменнуюdata.
Напишите программу, которая по категории мест (category) выводит список координат в формате:lon,lat 100,500 200,300
- Составить запрос для получения координат мест: https://yupest2.pythonanywhere.com/api/celestial/get_locations/
- Перейти по этой ссылке, скопировать содержимое и записать его в переменную (
data). - Получить список локаций.
- Создать структуру словаря для записи координат мест по категориям.
- Осуществить запись координат в виде отформатированной строки (как в формате
csv) с заголовками «lon,lat», где каждая строка записывается с новой. - Осуществить вывод данных для вводимой категории (в любом регистре)
Задача №5. Умный гид в системе «Автопилот»
Подробнее о задаче на классификацию категорий было в разборе задач отборочного этапа: https://teletype.in/@yupest/CfiDhy5tuK5#NkND
Обучим модель «Распознавание числа» на тренировочных данных.
Задача №6. Расчет кратчайшего маршрута
Формула для расчета евклидова расстояния между двумя точками x_1, y_1 и x_2, y_2 в двумерном пространстве выглядит так:
Нужно узнать для какая точка ближайшая к целевой и ее путь
- Получить координаты точки (по
id) из входных данных (a_lon, a_lat). - Задать изначально большое значение
min_distance. - Обход локаций в цикле:
Ссылка на проект Scratch с решением: https://disk.yandex.ru/d/sRMhbFgW0NlwlA
Аналогичное решение на Python. Данные переменной data скопированы из функции API о получении локаций: https://yupest2.pythonanywhere.com/api/celestial/get_locations/
Задача №7. Транспортная сеть с прогнозированием времени поездки
Матрица входных данных в задаче задается генеративно. Решение приводится для одного из вариантов генерации с целью объяснения подхода к получению верного ответа.
Этап 0. Для удобства граф, соответствующий матрице, можем нарисовать.
Обратим внимание на тот факт, что дороги могут быть, как односторонними так и двусторонними. Время движения туда и обратно выставляется согласно прогнозной модели и может не совпадать.
Этап 1. Определяем начальные условия
Мы начинаем в пункте A и хотим добраться до пункта D. Для этого нужно проверить все возможные пути и найти самый короткий.
Этап 2. Проверка путей через другие пункты
Этап 3. Вывод
Таким образом, наибыстрейшим путем передвижения из точки A в точку D для нашего концепт-кара будет маршрут: A→B→D, время передвижения по которому составит 35 минут.
Рекомендуем тренажер: https://clck.ru/36d34k
Задача №8. Детекция дорожных знаков: создания классификатора
- Обучите вашу модель на данных (по ссылке №1 или по ссылке №2) с параметрами по умолчанию. После обучения в самом правом окне, в правом верхнем углу нажмите кнопку
“Экспорт модели”, после чего нажмите кнопку“Загрузить мою модель”(она будет расположена там же, где на картинкеОбновить облачную модель). Скопируйте ссылку, под надписью“Ссылка общего доступа”.
2. Зайдите на Machine learning for kids в раздел Pretrained (Предобученный). В самом конце вы найдете карточку TensorFlow, в которой будет кнопка “open a TensorFlow model”, нажмите её.
3. Вставьте в верхнее поле публичную ссылку на модель Teachable Machine, которую вы скопировали ранее. Далее у вас откроется Scratch-проект с вашей моделью.
4. Загрузите шаблон сцены.
5. Добавьте блок распознавания "recognise (data) (label)" костюма "costume image", чтобы полученная метка добавлялась к списку predictions и запустите сцену при помощи зелёного флажка справа сверху.
6. Экспортируйте список predictions из 100 записей на сцене в текстовый файл. Для этого кликните на полученном списке правой кнопкой мыши (ПКМ) и нажмите экспорт.
Ссылка на проект с решением (с обученной моделью), можно загружать через обычный Scratch.
Задача №9. Оценка классификации. Расчёт f1-меры
F1-мера показывает, насколько хорошо модель находит положительные объекты из всех положительных объектов и какая доля объектов, определённых как положительные, действительно является положительными. Таким образом, F1-мера помогает оценить общее качество работы модели, при этом ей ещё и не мешает дисбаланс классов.
Подробнее о ней рассказано на каждом этапе нашей сферы на платформе: https://orbita.education/ru/events/379/5797
Решение проще всего осуществить программно с помощью Python-кода или на Scratch.
- Создать счетчик для обхода в цикле значений из
dataиpredictions - По условию, соответствующим матрицы ошибок рассчитать значения TP, FP, TN, FN.
- По формуле вычислить
recallиprecision.
Precision = TP / (TP + FP) и показывает долю объектов, названных нашей моделью положительными и при этом действительно являющимися положительными.
Recall = TP / (TP + FN) и показывает нам какую долю объектов положительного класса из всех объектов положительного класса нашел алгоритм. - По формуле вычислить F1-меру.
Ссылка на проект Scratch с решением: https://disk.yandex.ru/d/nn-ixk41C3hnNg
Задача №10. Детекция дорожных знаков: сегментация
- В каждом спрайте (сегменте изображения) считываем часть картинки с помощью
backdrop image. - Проверяем сегмент на наличие знака.
- Если знак обнаружен, подсвечиваем сегмент (рамку) с помощью костюма
thin-border.
Проект-Scratch с решением: https://disk.yandex.ru/d/88pXI5nr5G1P-Q
Задача №11. Оценка качества детекции
IoU
Bounding box — это прямоугольник, который обводит объект на картинке. Например, если на картинке есть кошка, bounding box — это прямоугольник, который обводит эту кошку.
- Пересечение (Intersection) - это область, где предсказанный прямоугольник и правильный прямоугольник перекрываются (Area of Overlap).
- Объединение (Union) - это общая область, которую покрывают оба прямоугольника (Area of Union).
Формула: IoU=Intersection/Union
Рассмотрим частные случаи пересечений правильного и предсказанного областей прямоугольников:
Чтобы узнать площадь пересечения прямоугольников, нужно перемножить его стороны по формуле площади прямоугольника:
Рассмотрим частный случай, чтобы получить стороны a и b:
Зная координаты точек "верхнего правого" угла и "нижнего левого" (отмечены фиолетовыми точками), можем рассчитать стороны a и b.
Для получения общей площади Union нужно сложить площади настоящего прямоугольника и предсказанного и отнять площадь пересечения:
Union=data+predictions−Intersection
На вход подаются координаты области data и predictions (соответственно - 8 списков). В списках каждая строка рассматривает некоторый случай.
Также эту задачу можно решить с помощью Табличных вычислений, например в Excel (_i - обозначает номер):
Задача №12. Назначение метрик для оценки качества моделей машинного обучения
Это самая простая и интуитивно понятная метрика, но к сожалению она крайне неправильная при дисбалансировки классов, из-за чего редко используется.
Доля объектов, которые классифицировались положительным и при этом действительно являются положительными.
Доля найденных положительных классов, по-русски её называют «Полнота».
Одна из самых распространённых метрик, потому что при её простом расчете не боится дисбалансировки классов.
Метрика используемая для понимания качества детекции, в её названии скрыта её суть.