Что такое RPN в Faster R-CNN?
Ответ от нейросети
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)
Пояснение кода:
В этом примере код не обязателен, но логика такая:
- Backbone извлекает признаки из изображения.
- На feature map размещаются anchors — заранее заданные рамки разных масштабов и форм.
- RPN для каждого anchor предсказывает, есть ли внутри объект, и как сдвинуть/масштабировать рамку.
- Полученные предложения фильтруются по score и через NMS, чтобы убрать дубли.
- Лучшие proposals передаются в ROI head для финальной классификации и регрессии координат.
Ключевые моменты:
- RPN отвечает только за генерацию candidate regions, а не за финальную классификацию объектов.
- Использует anchors, objectness score и bbox regression.
- Работает полностью сверточно и шарит вычисления с backbone.
- Именно RPN делает Faster R-CNN быстрее по сравнению с двухэтапными методами, где proposals генерируются внешним алгоритмом.
- После RPN обычно применяют NMS и top-k отбор proposals.
- Качество RPN сильно влияет на итоговую точность детектора: если хорошие регионы не предложены, второй этап их уже не спасёт.