Янник Кильхер о DETR: «Эта архитектура суперпроста по сравнению с предшественниками»

Yannic Kilcher 172 тыс. 40 мин 6 мин 28.05.2020
Главное

В мае 2020 года команда Facebook AI Research представила архитектуру DETR, которая перевернула традиционный подход к компьютерному зрению. Известный ИИ-исследователь Янник Кильхер (Yannic Kilcher) подробно разобрал эту научную работу, показав, как комбинация свёрточных сетей и трансформеров позволяет избавиться от сложных эвристик. Главная идея DETR заключается в сквозном прогнозировании объектов как множества, что делает архитектуру поразительно простой и элегантной.

🛠️ Отказ от костылей: революция DETR в распознавании объектов 0:00

Задача распознавания объектов (object detection) традиционно считалась одной из самых сложных в компьютерном зрении. Нейросети необходимо не просто классифицировать изображение, но и точно определить, сколько объектов на нём находится, где они расположены, а также очертить их границы с помощью рамок (bounding boxes). Трудности возникают на каждом шагу: объекты могут перекрывать друг друга, иметь разные размеры, сливаться с фоном или быть частично скрытыми.

По словам Янника Кильхера, предыдущие популярные решения страдали от избыточного инженерного усложнения. Разработчикам приходилось вручную настраивать пороги, использовать якорные боксы (anchor boxes) и алгоритмы подавления не-максимумов (Non-Maximum Suppression, NMS), чтобы избавиться от дублирующих предсказаний для одного и того же объекта. Архитектура DETR (DEtection TRansformer), предложенная Николасом Карионом (Nicolas Carion), Франсиско Массой (Francisco Massa) и их коллегами, полностью меняет правила игры. Модель предлагает абсолютно сквозной (end-to-end) подход, отбрасывающий все эти промежуточные костыли ради радикального упрощения системы.

🔄 Двудольное сопоставление и венгерский алгоритм: как обучается DETR 5:08

Один из ключевых вопросов сквозного подхода — как эффективно сравнивать предсказания модели с реальной разметкой, сделанной человеком. Модель DETR всегда выдаёт строго фиксированное количество предсказаний, обозначаемое как $N$. Этот порог $N$ можно задать достаточно большим, например, до 50 или 100 объектов на одном кадре, чтобы гарантированно покрыть большинство сценариев. Но что делать, если на реальной фотографии изображены всего две птицы? В этом случае истинная разметка искусственно дополняется специальным классом «ничего» (nothing class) до тех пор, пока её размер также не станет равен $N$.

Для обучения такой системы авторы применили функцию потерь на основе двудольного сопоставления (bipartite matching loss). Алгоритм вычисляет минимальную стоимость сопоставления между $N$ предсказаниями модели и $N$ истинными объектами. Чтобы найти оптимальное взаимно-однозначное соответствие, используется классический венгерский алгоритм.

По мнению Янника Кильхера, это исключительно элегантное решение проблемы дубликатов. Если модель выдаст несколько рамок для одной и той же птицы, только одна из них получит минимальный штраф, сопоставившись с истинным объектом. Остальные дубликаты будут вынужденно сопоставлены с классом «ничего» и получат жёсткое наказание, что стимулирует сеть выдавать разнообразные и уникальные рамки.

Компоненты итоговой функции потерь:

🧠 Архитектура сети: от пикселей к последовательностям 15:54

Конвейер обработки данных устроен линейно и включает три ключевых элемента:

Сначала изображение подаётся на вход обычной CNN, которая сжимает пространственное разрешение, но увеличивает количество каналов признаков. Полученная карта признаков представляет собой высокоуровневое представление изображения, сохраняющее пространственную информацию. Поскольку классический трансформер работает исключительно с последовательностями векторов, карту признаков «разворачивают» (flatten), превращая двумерную матрицу высоты $H$ и ширины $W$ в одномерную последовательность длиной $H \times W$ векторов. К ней добавляются позиционные кодирования (positional encodings), после чего данные поступают в энкодер трансформера.

Преимущество трансформера заключается в механизме глобального внимания (self-attention). В отличие от CNN, которая «видит» только соседние пиксели, трансформер за один шаг связывает любую точку изображения с любой другой. Янник Кильхер приводит интересную аналогию с обработкой текста: когда мы видим местоимение «они», нам нужно сослаться на существительное в начале длинного предложения. Точно так же и в компьютерном зрении: для построения большой рамки пиксели с разных краёв объекта должны мгновенно обмениваться информацией.

Более того, Кильхер выдвигает собственную гипотезу: матрица внимания размером $(H \times W) \times (H \times W)$ сама по себе кодирует связи между парами пикселей. По его мнению, это делает её математически идеальной средой для предсказания рамок, ведь любые две точки на плоскости уже задают прямоугольник. Трансформеры концептуально созданы для подобных задач детекции, хотя авторы статьи, возможно, и не формулировали это именно так.

👥 Загадка «объектных запросов»: сто человек внутри нейросети 20:08

После энкодера данные передаются в декодер трансформера, структура которого напоминает классическую архитектуру. Однако DETR полностью отказывается от авторегрессионного декодирования, когда токены генерируются по очереди. Вместо этого декодер работает в один проход (one-shot), параллельно обрабатывая всю последовательность. На вход декодеру подаются так называемые «объектные запросы» (object queries). На этапе инициализации это просто $N$ случайных векторов, но в процессе обучения они превращаются в фиксированные параметры модели, независимые от конкретной картинки.

Кильхер предлагает метафору: объектные запросы — это $N$ разных «людей», которые одновременно смотрят на изображение и задают ему свои специфические вопросы. Авторы визуализировали поведение этих запросов на тестовом датасете, и результаты оказались поразительными. Выяснилось, что каждый запрос («человек») специализируется на своей области и масштабе. Например, один эксперт всегда спрашивает: «Эй, а что у нас находится в левом нижнем углу? Нет ли там маленьких объектов?». Второй интересуется исключительно крупными объектами строго по центру кадра. Третий ищет прямоугольники в правой части.

Важнейшая фишка трансформера в том, что эти «эксперты» могут общаться между собой через слои самовнимания. В процессе сложного многослойного диалога они координируют свои действия: «Я вижу слона слева и забираю его себе, а ты возьми птицу справа». Это исключает внутреннюю конкуренцию и позволяет за один проход идеально распределить роли на любом изображении.

📈 Результаты, внимание к деталям и паноптическая сегментация 35:36

С точки зрения точности, DETR демонстрирует результаты, полностью сопоставимые со значительно более громоздкими и сложными системами вроде Faster R-CNN. Однако у простоты есть своя вычислительная цена: модель требует колоссальных ресурсов на обучение. Потребовалось около 6 дней непрерывной работы кластера из 8 графических процессоров (GPU), чтобы обучить базовую версию, что Кильхер считает довольно длительным сроком для подобных задач.

Визуализация карт внимания DETR доказывает, что нейросеть великолепно справляется с проблемой частичного перекрытия объектов (окклюзии). На примере со слонами и зебрами видно, как рамка, отвечающая за скрытое на заднем плане животное, безошибочно фокусирует внимание именно на его ноге, проходящей сквозь рамку стоящего впереди объекта. Модель также демонстрирует высокую способность к обобщению: она успешно нашла 24 жирафа на одном снимке, хотя в обучающей выборке подобных плотных скоплений никогда не встречалось.

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

Янник Кильхер подчеркнул, что код DETR невероятно прост — вся базовая логика модели умещается в несколько десятков строк на PyTorch. Модель и готовые веса выложены в открытый доступ на Torch Hub, а для быстрого старта разработчики подготовили интерактивный блокнот в Google Colab.

💬 Цитаты

«По словам Янника Кильхера, предыдущие решения страдали от избыточного инженерного усложнения.»

Янник Кильхер 01:46

«Вся базовая логика модели умещается в несколько десятков строк на PyTorch.»

Янник Кильхер 40:17
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Bounding box
Ограничивающая рамка, используемая в компьютерном зрении для обозначения границ объекта на изображении.
Венгерский алгоритм
Алгоритм оптимизации, решающий задачу о назначениях на двудольных графах за полиномиальное время.
Intersection over Union (IoU)
Метрика, оценивающая отношение площади пересечения двух рамок к площади их объединения.
Паноптическая сегментация
Задача компьютерного зрения, объединяющая классификацию отдельных объектов и сегментацию фоновых текстур пиксель за пикселем.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект DETR Facebook AI Research Янник Кильхер Transformers