В области компьютерного зрения классическая задача детектирования объектов обычно решается в рамках одного кадра: нейросеть смотрит на картинку и пытается понять, что на ней изображено «здесь и сейчас». Однако для статичных камер, таких как фотоловушки для диких животных или дорожные камеры наблюдения, такой подход игнорирует колоссальный пласт данных — контекст прошлого. В новом видео Янник Кильхер (Yannic Kilcher) подробно разбирает архитектуру Context R-CNN, которая позволяет модели «вспоминать» события месячной давности, чтобы безошибочно распознать едва заметный хвост в кустах сегодня.
📸 Проблема «одинокого кадра» в статичных камерах 0:00
Большинство современных детекторов объектов оптимизированы для работы с независимыми изображениями, но реальные условия эксплуатации камер часто далеки от идеальных. Янник Кильхер поясняет, что в таких сценариях, как фотоловушки в дикой природе, камеры могут стоять неподвижно месяцами. При этом данные поступают крайне неравномерно: камера может молчать неделю, а затем сделать серию из десяти снимков за десять секунд, когда мимо пробегает животное.
Такая специфика делает стандартные инструменты работы с видео, вроде рекуррентных сетей (LSTM) или временных сверток, малоэффективными. Проблема в том, что:
- Частота дискретизации нестабильна: временные интервалы между кадрами варьируются от секунд до суток.
- Огромный временной горизонт: полезная информация (например, как выглядит это конкретное дерево без жирафа за ним) может находиться в кадре, снятом месяц назад.
- Сложные условия: животные часто перекрыты листвой, находятся в тени или движутся на границе кадра.
По мнению ведущего, идея использовать данные из прошлого (и иногда будущего) того же устройства является логичным развитием технологии для камер с фиксированным ракурсом.
🛠️ Архитектура: как «прокачать» классический Faster R-CNN 6:50
Вместо того чтобы изобретать велосипед, авторы Context R-CNN решили «взломать» и дополнить уже существующую и проверенную архитектуру — Faster R-CNN. Янник Кильхер описывает этот процесс как «вклинивание» между двумя стадиями классического детектора:
- Стадия 1 (Region Proposal Network): Модель сканирует кадр и предлагает «регионы интереса» (RoI) — области, где с высокой вероятностью есть объект. Для каждой области извлекается вектор признаков (features).
- Модуль контекста (Новинка): Именно сюда встраивается Context R-CNN. Он берет признаки из текущего кадра и дополняет их информацией из памяти.
- Стадия 2 (Classification): Обновленные, «обогащенные» признаки передаются классификатору, который выносит финальный вердикт: «олень», «автобус» или «пусто».
Такой подход позволяет модели не просто смотреть на пиксели в текущем квадрате, но и учитывать накопленный опыт этой конкретной точки наблюдения.
🧠 Краткосрочная и долгосрочная память: механизм внимания 9:55
Ключевая инновация заключается в разделении памяти на два типа, которые обрабатываются по-разному.
Краткосрочная память (Short-term)
Она охватывает несколько соседних кадров вокруг ключевого изображения. Поскольку объем данных здесь невелик, вся цепочка остается дифференцируемой. Это означает, что нейросеть можно обучать «сквозным» методом (end-to-end), оптимизируя извлечение признаков специально для этой задачи. Это критически важно, если, например, на одном кадре морда оленя видна четко, а на другом — только ухо.
Долгосрочная память (Long-term)
Здесь хранятся данные за недели или месяцы. Прогнать такой объем через градиентный спуск невозможно — памяти видеокарты просто не хватит. Поэтому авторы используют хитрость: они берут предобученный детектор (например, на датасете COCO) и замораживают его. Он извлекает признаки из всех прошлых кадров и складывает их в «банк памяти».
Связующим звеном выступает механизм внимания (Attention):
- Query (Запрос): Текущий объект, который мы пытаемся распознать.
- Key (Ключ): Описание объектов в памяти.
- Value (Значение): Полезная информация, которую мы забираем из памяти, если ключ совпал с запросом.
📈 Результаты и «феномен жирафового дерева» 20:00
Эксперименты на наборах данных дикой природы (Snapshot Serengeti) и городских камер (CityCam) показали, что производительность модели растет пропорционально «глубине памяти». Увеличение горизонта планирования с одной минуты до одного месяца стабильно повышало точность детектирования без добавления новых параметров в саму модель.
Визуализация весов внимания подтвердила догадки: модель действительно находит то же самое животное в кадрах, сделанных в разное время месяца. Более того, сеть научилась учитывать периодичность — она чаще обращается к кадрам, снятым в то же время суток, что и текущий.
Интересный факт о точности: При анализе 100 самых уверенных ошибок модели выяснилось, что в 97 случаях нейросеть была права, а человеческая разметка — нет. Модель находила животных, которых люди-аннотаторы просто не заметили на сложных снимках.
Однако у системы есть и слабое место — «разлитие ошибки». Если модель один раз с очень высокой уверенностью примет дерево странной формы за жирафа, эта информация попадет в долгосрочную память. В последующем, при анализе новых кадров с этим же деревом, механизм внимания будет подтягивать «уверенность в жирафе» из прошлого, заставляя систему ошибаться снова и снова.