Sobes.tech
Back to questions
Middle — Senior
10

Что такое RPN в Faster R-CNN?

Companies where asked
OZONOZON
АТОМ

Answer from AI

sobes.tech AI

Что хотят услышать интервьюеры:

RPN (Region Proposal Network) — это небольшая нейросеть внутри Faster R-CNN, которая генерирует кандидаты областей, где может находиться объект. Она заменяет медленные внешние методы предложения регионов и делает детекцию значительно быстрее. RPN предсказывает не классы объектов, а только вероятность наличия объекта и корректировки координат якорей.

Определение:

RPN — это полностью сверточный модуль для генерации region proposals, то есть прямоугольников-кандидатов, которые потенциально содержат объекты. Он скользит по feature map и для каждого пространственного положения оценивает набор anchor boxes разных размеров и пропорций. Для каждого anchor он предсказывает два значения: objectness score и смещения для уточнения рамки.

Пример использования:

В детекторе для дорожных знаков RPN получает feature map с изображения и быстро выделяет области, где с высокой вероятностью есть знак. Затем эти proposals передаются в следующий этап Faster R-CNN, который уже классифицирует объект и уточняет bounding box.

# Упрощённая логика работы RPN
feature_map = backbone(image)

# Для каждой точки feature map создаются anchors
anchors = generate_anchors(feature_map)

# RPN для каждого anchor предсказывает:
# 1) objectness score
# 2) bbox offsets
objectness, bbox_deltas = rpn_head(feature_map)

# Преобразуем anchors в proposals
proposals = apply_deltas(anchors, bbox_deltas)

# Оставляем лучшие предложения после NMS
final_proposals = nms(proposals, objectness)

Пояснение кода:

В этом примере код не обязателен, но логика такая:

  1. Backbone извлекает признаки из изображения.
  2. На feature map размещаются anchors — заранее заданные рамки разных масштабов и форм.
  3. RPN для каждого anchor предсказывает, есть ли внутри объект, и как сдвинуть/масштабировать рамку.
  4. Полученные предложения фильтруются по score и через NMS, чтобы убрать дубли.
  5. Лучшие proposals передаются в ROI head для финальной классификации и регрессии координат.

Ключевые моменты:

  • RPN отвечает только за генерацию candidate regions, а не за финальную классификацию объектов.
  • Использует anchors, objectness score и bbox regression.
  • Работает полностью сверточно и шарит вычисления с backbone.
  • Именно RPN делает Faster R-CNN быстрее по сравнению с двухэтапными методами, где proposals генерируются внешним алгоритмом.
  • После RPN обычно применяют NMS и top-k отбор proposals.
  • Качество RPN сильно влияет на итоговую точность детектора: если хорошие регионы не предложены, второй этап их уже не спасёт.