Янник Кильчер: «Запустить DETR от Facebook проще, чем нарисовать рамку в Python»

Yannic Kilcher 49,4 тыс. 33 мин 3 мин 30.05.2020
Главное

Янник Кильчер, известный ИИ-исследователь и автор популярного YouTube-канала, представил подробный видеоурок по работе с алгоритмом детектирования объектов DETR (Detection Transformer). Это решение, разработанное подразделением Facebook AI Research (FAIR), представляет собой радикально новый подход к компьютерному зрению, отказывающийся от традиционных сложных архитектур в пользу элегантности трансформеров.

🚀 Быстрый старт: от PyTorch Hub до первых результатов 0:01

Главная ценность DETR, по мнению Янника, заключается в невероятной простоте его интеграции. В отличие от многих других алгоритмов, требующих сложной настройки окружения, DETR можно запустить буквально несколькими строками кода через Torch Hub . Ведущий демонстрирует это в Google Colab, импортируя библиотеку torch и вызывая функцию torch.hub.load.

Процесс начала работы выглядит следующим образом:

Янник подчеркивает, что модель включает в себя как классическую архитектуру ResNet в качестве «бэкбона» (для извлечения признаков), так и блок трансформера для предсказания объектов .

🛠️ Подготовка данных и «сураджинг» кода 2:03

Для тестирования алгоритма автор использует изображения из интернета, загружая их с помощью библиотеки requests. В процессе написания скрипта Янник в шутку вводит термин «сураджинг» (Surajing), ссылаясь на известного блогера Сираджа Равала, — так он называет быстрое копирование кусков кода из готовых примеров в свой проект .

Критически важным этапом является предобработка изображения:

  1. Формат: Изображения часто приходят в формате RGBA, что вызывает ошибки в тензорах. Янник принудительно конвертирует их в RGB .
  2. Трансформации: Используется библиотека torchvision для изменения размера. Хотя датасет COCO обычно использует 640x480, архитектура DETR адаптирована под изменение размера до 800 пикселей по одной из сторон .
  3. Нормализация: Применяются стандартные коэффициенты ImageNet (среднее значение и стандартное отклонение), чтобы входные данные соответствовали тем, на которых обучалась нейросеть .

🧠 Анатомия предсказаний DETR 8:16

После того как тензор изображения прогоняется через модель (автор рекомендует использовать GPU через .cuda() для ускорения ), на выходе получается словарь с двумя ключевыми компонентами:

Важное техническое наблюдение от Янника: координаты рамок в DETR предсказываются не в виде угловых точек (X0, Y0, X1, Y1), а в формате (центр_X, центр_Y, ширина, высота) . Кроме того, эти значения нормализованы от 0 до 1, поэтому для отрисовки на реальном фото их необходимо масштабировать обратно до размеров исходного изображения .

🐕 Детектирование собак и визуализация 11:06

Применив функцию argmax к логитам, Янник фильтрует результаты. По умолчанию большинство из 100 предсказаний модели указывают на класс №91 — отсутствие объекта. Тестовое изображение с собаками прошло проверку успешно: алгоритм четко выделил два объекта .

Для визуализации автор использует библиотеку PIL (Pillow):

🎨 Адверсариальные тесты и «взлом» логики модели 22:17

Самая экспериментальная часть видео — попытка заставить модель «увидеть» то, чего нет. Янник использует абстрактные пятна Роршаха и картины Джексона Поллока в качестве «состязательных примеров» (adversarial examples) .

Чтобы модель не выдавала пустые результаты, автор применяет «хак»:

  1. Он принудительно отсекает последний класс («ничего») из логитов .
  2. Затем выбирает 5 или 15 лучших предсказаний (Top K), заставляя нейросеть назвать наиболее вероятные объекты даже в хаосе красок .

Результаты получились любопытными:

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

💬 Цитаты

«Мы потратили больше всего времени на работу с ограничивающими рамками, а не на саму модель. Это показывает, насколько легко сейчас пользоваться такими вещами.»

Янник Кильчер 19:45

«В картинах Поллока явно очень много птиц, просто невероятно много птиц.»

Янник Кильчер 30:14
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
DETR
DEtection TRansformer — алгоритм детектирования объектов, который первым успешно применил архитектуру трансформеров для этой задачи.
Logits (Логиты)
Сырые выходные данные нейронной сети перед применением функции активации (например, Softmax), представляющие уверенность модели в классах.
Bounding Box
Ограничивающая рамка — прямоугольник, очерчивающий найденный объект на изображении.
COCO Dataset
Common Objects in Context — популярный набор данных с 91 категорией объектов для обучения систем компьютерного зрения.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект DETR Facebook AI Research PyTorch компьютерное зрение Object Detection