23 Решения Одной Проблемы: Как Мы Проводили Конкурс По Компьютерному Зрению

Меня зовут Миша Лиз, я специалист по анализу данных в 2ГИС.

Вместе с командой ML мы используем машинное обучение в продуктовых задачах — от построения оптимального маршрута для пользователя до распознавания дорожных знаков и типов дорожного покрытия по видео.

В основном я работаю над задачами, связанными с компьютерным зрением.

Осенью мы приняли участие в конкурсе в рамках ИИ-путешествие , который организовали ребята из Сбербанка.

Команды соревновались в решении задач ML разных сервисов — Ситимобил, Сбер AR/VR, Нейролаб, Работа.

ру.

Были проблемы и у нас.

Расскажу о финальном задании и его результатах.



Конкурс

AI Journey — серия мероприятий, посвященных науке о данных.

Они призваны объединить разработчиков и специалистов по машинному обучению по всему миру.

В конкурсе соревновались дети, которые учатся в школах и интересуются машинным обучением.

Они смогли попробовать свои силы в 10 задачах в разных областях — обработка естественного языка (NLP), компьютерное зрение (CV), обучение с подкреплением (RL), а также классическое машинное обучение.



Как прошли соревнования

Есть два этапа – отборочный и финальный.

В ходе отборочного тура мы могли решить сразу несколько задач и выяснить, какая из них нам больше всего понравилась (на этом этапе наша задача оказалась одной из самых популярных).

По итогам отборочного этапа мы выбрали шесть команд с лучшими решениями.

При оценке решений учитывалось как качество алгоритма, так и продуктового решения.

В финале было фиксированное количество участников, и команда могла участвовать только в одном задании.

Этот этап длился 5 дней — за это время участники решали задачу с нуля.

В финал вышли команды из России, Вьетнама и стран СНГ.

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



Задача

ML-часть нашей задачи с заключительного этапа — научиться распознавать направления движения по полосам на дорожных знаках 5.15.1 и 5.15.2. Это реальная проблема, которую мы решаем в 2ГИС, чтобы сделать наш граф дорог более точным.



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

Эти знаки могут иметь одну или несколько полос движения.

Максимальное количество полос на знаке – пять.



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

Для удобства изложения введем обозначения: разные полосы на знаке будем разделять запятыми.

А разные стрелки на одной полоске разделены плюсом.

Например, для знака 5.15.1 на изображении выше метка будет «Прямо+Влево, Прямо, Вправо».

Целевая метрика задачи — точность:

23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению



Что в этом такого сложного?

Да, задача выглядит простой.

Но только на первый взгляд. Есть несколько проблем, с которыми вы столкнетесь, если копнете глубже.



Классовый дисбаланс

Знаки были собраны с реальных дорог.

А на дорогах направления по полосам движения распределены неравномерно.

Есть частые направления, например «Прямо», а есть редкие, например «Направо с последующим поворотом налево».

Вы хотите правильно распознавать все направления, поэтому этот дисбаланс необходимо учитывать при обучении модели.



Комбинации стрелок

Всего в данных было 7 стрелок (на самом деле их больше, некоторые мы убрали из конкурса).



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

Каждая полоса на знаке может содержать одну или несколько стрелок.

Поэтому у нас не 7 вариантов ответа на каждую полосу, а гораздо больше.

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



Комбинации полос

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

То есть на знаке может быть от 1 до 5 полос движения.

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

Примеры необычных комбинаций стрелок:

23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

Нечасто увидишь на дорогах, что с одной полосы можно ехать прямо, налево и направо.



Условия съемки

Кадры были получены с разных видеорегистраторов в разное время суток и в разное время года.

Таким образом, изображения могут иметь:

  • разное качество,


23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

  • разные ракурсы,


23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

  • разное освещение,


23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

  • вмешательство.



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению



Архитектурные решения участников

В среднем за пять дней каждая команда представила 23 решения финальной задачи.

Далее я расскажу вам об архитектурных идеях, которые команды опробовали в финале конкурса.



Классическое резюме + классификация

Идея Используя классические алгоритмы CV, найдите стрелки, а затем распознайте их с помощью классификационной сетки.



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

Стоит отметить, что для распознавания стрелок можно использовать как обычную классификацию, так и мультиметку (на схеме ниже).

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



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

плюсы

  • Устойчивость к новым комбинациям стрелок на полосах движения.

    В случае классификации по нескольким меткам сеть учится отличать отдельные стрелки от комбинации стрелок.

    Например, если сеть изучила стрелки «Прямо» и «Вправо», она выдаст правильный прогноз для их комбинации — «Прямо + Вправо».

Минусы
  • Настройка алгоритмов CV. Классические алгоритмы компьютерного зрения непросто настроить и это может занять много времени.

    А у участников этого было мало.

  • Несоответствие качества изображения.

    Классические алгоритмы CV неустойчивы к изменениям условий съемки.

    И в этой задаче это одна из главных трудностей.



Обнаружение + классификация

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



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

плюсы

  • То же, что и для архитектуры «Классическая CV + классификация».

    .

    Ведь основная идея одна — сначала разделить полосы, а потом распознавать каждое направление на каждой полосе независимо.

  • Качество обнаружения.

    По сравнению с обнаружением классическими алгоритмами CV сети обеспечивают лучшее качество и более устойчивы к изменениям условий съемки.

Минусы
  • Дополнительный макет обучающих данных.

    Данные на знаке не содержали полос, необходимых для тренировки обнаружения.

    Но мы не запрещали дополнительную аннотацию обучающих данных.

    Стоит помнить, что времени у участников было мало, и важно было правильно распределить свои ресурсы, чтобы все успеть.

  • Медленный вывод. Как правило, модели обнаружения являются объемными, поэтому время прогнозирования может быть медленным.



Только многоуровневая классификация

Идея Мы знаем, что полосок у нас максимум 5, каждая из которых может иметь разные варианты из 7 стрелок.

Затем вы можете закодировать эти 5 полос с 7 возможными стрелками в матрицу 5x7, а затем растянуть эту матрицу в один вектор, который модель обучит. Задача сводится к многомерной классификации.



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

плюсы

  • Быстрый вывод. Классификационные сети в глубоком обучении являются самыми быстрыми, поэтому время прогнозирования быстрое.

  • Устойчивость к новым комбинациям стрелок на полосах движения.

    Сеть учится выбирать отдельные стрелки из комбинации стрелок.

    Например, если сеть изучила стрелки «Прямо» и «Вправо», то она выдаст правильный прогноз для их комбинации «Прямо + Вправо».

Минусы
  • Неустойчивость к новым комбинациям полос движения.

    Фактически мы кодируем полосы движения в один вектор, а значит, их распознавание не является независимым.

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

    Есть риск, что если, например, сеть научилась хорошо распознавать знак «Прямо, Направо», то она не сможет так же хорошо распознавать «Прямо, Направо».



Многоглавая классификация



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

Идея Для каждой полосы на знаке сделайте отдельную классификационную головку, которая будет использоваться для распознавания стрелок на этой полосе.

В результате получается 5 целей, каждая с 7 выходами.

Преимущества и недостатки

  • То же, что и идея «Только классификация по нескольким меткам».

    Идеи схожи, только в этом есть четкое разделение полос движения.



Советы и рекомендации от участников

Помимо необычных архитектур, команды предложили и интересные способы работы с данными.

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



Расширение набора данных за счет дополнений, меняющих метки классов.

Некоторые дополнения, такие как горизонтальное вращение, меняют метку изображения.

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

Таким образом мы боремся с дисбалансом в зеркальных классах.



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению



Увеличение времени тестирования (TTA)

При прогнозировании тестовой выборки вы также можете дополнить изображение.

Тогда вы получите несколько похожих изображений с одной и той же меткой.

Затем мы усредняем вероятности предсказания для каждого варианта изображения и получаем окончательную вероятность.



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению



Генерация синтетических данных

Чтобы сгладить классовый дисбаланс, одна команда использовала синтетические данные.

Обычно синтетические данные отличаются от реальных данных.

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

Однако синтетика хорошо подходит для предварительной подготовки моделей.



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

Также стоит отметить, что эти данные были сгенерированы не отдельной сетью (например, генеративной), а вручную.

То есть сама задача генерации такой синтетики требует опыта не только в ML, но и в разработке.



Склейка нескольких персонажей

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



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

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



Улучшите качество изображения

Одной из основных проблем при решении является качество изображений.

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

Команда утверждает, что это повысило качество их модели примерно на 1%.

Сама задача в классической постановке называется «проблемой сверхразрешения».



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению



Остался за кадром

Многие шаги, необходимые для решения проблемы ОД, кажутся самоочевидными.

Мы не акцентировали на них внимание в статье, но отметим, что участники их выполнили.

Это перебор( поиск по сетке ) по модельным архитектурам, различным оптимизаторам, скорости обучения, планировщикам ( планировщик ), пороговые значения и другие параметры обучения.

За кадром остался и ансамбль сеток, которым также пользовались участники.

В целом видеокарты работали, вентиляторы крутились, параметры перепутались.



Как нам решить эту проблему?

У нас было гораздо больше времени на эксперименты с разными архитектурами, чем у ребят. Мы опробовали модели классификации (без многоголовочной классификации) с обнаружением полос движения и без него.

Кроме того, мы экспериментировали с моделями оптического распознавания символов (OCR).

Мы сделали свой выбор, основываясь на соотношении качество/скорость вывода — и в итоге остановились на модели OCR. Идея Стрелки полос движения можно считать символами.

Затем мы используем специальный Модель оптического распознавания символов , задача которого — распознавать символы.

В конечном итоге мы используем архитектуру, показанную на диаграмме ниже.



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

Архитектура сети OCR, источник: https://towardsdatascience.com/intuitively-understanding-connectionist-temporal-classification-3797e43a86c плюсы

  • Устойчивость к новым комбинациям полос движения.

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

    Это значит, например, что комбинация «Прямо, Направо» должна распознаваться так же, как и комбинация «Прямо, Направо», даже если второй не было в тренировочных данных.

  • Средняя скорость вывода.

    Этот подход быстрее, чем обнаружение плюс классификация, но медленнее, чем только классификация.

  • Качество.

    В наших экспериментах эта модель дала наилучшее качество.

Минусы
  • Неустойчивость к новым комбинациям стрелок на полосах движения.

    Модельный алфавит состоит из стрелок и их комбинаций.

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

    Эту проблему можно решить синтетикой и добавлением недостающих данных из боя.



Финал конкурса и статьи

Поздравляем команду FTL из Минска, которая выиграла AI Journey! Ребята использовали в своем решении модель классификации нескольких головок и все описанные выше трюки с данными (кроме улучшения качества изображения).



23 решения одной проблемы: как мы проводили конкурс по компьютерному зрению

Спасибо всем, кто принял участие в конкурсе.

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

Ребята показали очень высокий уровень подготовки.

Менее чем за неделю они не только создали качественные ML-решения, но и создали для них сервис с публичным API, подготовили и презентовали свое продуктовое решение.

Я и моя команда не ожидали такого от детей, которые еще даже не закончили школу! Это очень круто.

Желаю им продолжать развиваться и развивать сферу машинного обучения.

Ребята, если вы читаете Хабр, передаем привет! Теги: #Машинное обучение #искусственный интеллект #конкурсы #машинное обучение #Обработка изображений #искусственный интеллект #путешествие ИИ #путешествие ИИ #компьютерное зрение #2ГИС #нейронные сети

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.