Янник Кильчер, известный ИИ-исследователь и автор популярного YouTube-канала, представил подробный видеоурок по работе с алгоритмом детектирования объектов DETR (Detection Transformer). Это решение, разработанное подразделением Facebook AI Research (FAIR), представляет собой радикально новый подход к компьютерному зрению, отказывающийся от традиционных сложных архитектур в пользу элегантности трансформеров.
🚀 Быстрый старт: от PyTorch Hub до первых результатов 0:01
Главная ценность DETR, по мнению Янника, заключается в невероятной простоте его интеграции. В отличие от многих других алгоритмов, требующих сложной настройки окружения, DETR можно запустить буквально несколькими строками кода через Torch Hub . Ведущий демонстрирует это в Google Colab, импортируя библиотеку torch и вызывая функцию torch.hub.load.
Процесс начала работы выглядит следующим образом:
- Загрузка предобученной модели (магистральное решение Facebook).
- Автоматическое скачивание весов.
- Перевод модели в режим оценки (
eval) для корректной работы слоев пакетной нормализации .
Янник подчеркивает, что модель включает в себя как классическую архитектуру ResNet в качестве «бэкбона» (для извлечения признаков), так и блок трансформера для предсказания объектов .
🛠️ Подготовка данных и «сураджинг» кода 2:03
Для тестирования алгоритма автор использует изображения из интернета, загружая их с помощью библиотеки requests. В процессе написания скрипта Янник в шутку вводит термин «сураджинг» (Surajing), ссылаясь на известного блогера Сираджа Равала, — так он называет быстрое копирование кусков кода из готовых примеров в свой проект .
Критически важным этапом является предобработка изображения:
- Формат: Изображения часто приходят в формате RGBA, что вызывает ошибки в тензорах. Янник принудительно конвертирует их в RGB .
- Трансформации: Используется библиотека
torchvisionдля изменения размера. Хотя датасет COCO обычно использует 640x480, архитектура DETR адаптирована под изменение размера до 800 пикселей по одной из сторон . - Нормализация: Применяются стандартные коэффициенты ImageNet (среднее значение и стандартное отклонение), чтобы входные данные соответствовали тем, на которых обучалась нейросеть .
🧠 Анатомия предсказаний DETR 8:16
После того как тензор изображения прогоняется через модель (автор рекомендует использовать GPU через .cuda() для ускорения ), на выходе получается словарь с двумя ключевыми компонентами:
- pred_logits: Логиты классов. В оригинальной версии модель выдает 100 предсказаний, каждое из которых соотносится с 92 классами (91 класс из COCO + 1 специальный класс «ничего») .
- pred_boxes: Координаты ограничивающих рамок (bounding boxes).
Важное техническое наблюдение от Янника: координаты рамок в DETR предсказываются не в виде угловых точек (X0, Y0, X1, Y1), а в формате (центр_X, центр_Y, ширина, высота) . Кроме того, эти значения нормализованы от 0 до 1, поэтому для отрисовки на реальном фото их необходимо масштабировать обратно до размеров исходного изображения .
🐕 Детектирование собак и визуализация 11:06
Применив функцию argmax к логитам, Янник фильтрует результаты. По умолчанию большинство из 100 предсказаний модели указывают на класс №91 — отсутствие объекта. Тестовое изображение с собаками прошло проверку успешно: алгоритм четко выделил два объекта .
Для визуализации автор использует библиотеку PIL (Pillow):
- Рисование прямоугольников через
ImageDraw.rectangle. - Добавление текстовых меток с помощью
ImageDraw.text. Янник признается, что «больше всего времени было потрачено на отрисовку рамок, а не на запуск самого ИИ», что лишний раз доказывает доступность современных моделей .
🎨 Адверсариальные тесты и «взлом» логики модели 22:17
Самая экспериментальная часть видео — попытка заставить модель «увидеть» то, чего нет. Янник использует абстрактные пятна Роршаха и картины Джексона Поллока в качестве «состязательных примеров» (adversarial examples) .
Чтобы модель не выдавала пустые результаты, автор применяет «хак»:
- Он принудительно отсекает последний класс («ничего») из логитов .
- Затем выбирает 5 или 15 лучших предсказаний (
Top K), заставляя нейросеть назвать наиболее вероятные объекты даже в хаосе красок .
Результаты получились любопытными:
- В картинах Поллока DETR настойчиво видит «птиц» .
- В других абстракциях модель находит «лошадей», «часы» и внезапно — «торт» (cake) .
Янник делает вывод, что хотя модель ограничена 90 классами датасета COCO, она демонстрирует поразительную устойчивость и простоту в обращении. В финале видео он подтверждает высокую эффективность DETR на классических задачах, загрузив фото слонов в национальном парке Крюгера, где алгоритм безошибочно выделил всех животных .