
R-CNN Family: эволюция детекции объектов
Полный разбор семейства R-CNN: от оригинальной архитектуры 2014 года до Mask R-CNN. Как работают регионные предложения, RPN и RoI Pooling.
Введение: зачем нужна целая «семья» детекторов?
Представьте, что вам нужно не просто сказать «на фото — кошка», а ещё и обвести её прямоугольником, отделить от собаки на заднем плане и точно определить пиксели, принадлежащие каждому объекту. Это и есть задача детекции и сегментации объектов — одна из самых требовательных в компьютерном зрении.
В серии «Object Detection for Dummies» Lilian Weng начала с базовых концепций — HOG и градиентных векторов, затем перешла к классическим архитектурам CNN и пионерским моделям вроде Overfeat и DPM. Третья часть серии посвящена семейству R-CNN («Region-based CNN»).
Семейство R-CNN (Region-based Convolutional Neural Network) обеспечило качественный скачок в детекции объектов: оно ввело идею использования CNN для классификации регионов, что кардинально повысило точность по сравнению с традиционными методами. Однако ранние версии R-CNN страдали от проблем со скоростью и вычислительной эффективностью. С течением времени появились Fast R-CNN и Faster R-CNN, устранившие эти недостатки.
R-CNN (2014): с чего всё началось
Оригинальный R-CNN был представлен Россом Гиршиком в 2014 году. Это была пионерская модель, применившая глубокое обучение для детекции объектов через региональные предложения. R-CNN совмещает алгоритм Selective Search для генерации предложений регионов с CNN, которая классифицирует каждый предложенный регион.
Как работает оригинальный R-CNN
R-CNN стал первым алгоритмом, успешно применившим глубокое обучение для детекции объектов. Работа делится на три главных шага: (1) извлечение и обрезка региональных предложений из изображения, (2) вычисление CNN-признаков для каждого обрезанного патча, (3) классификация каждого региона и удаление избыточных предсказаний.
Fast R-CNN (2015): общие признаки вместо повторных вычислений
В 2015 году Гиршик представил Fast R-CNN — усовершенствованный вариант R-CNN, устраняющий ограничения предшественника.
Ключевое нововведение: единая карта признаков
В отличие от R-CNN, Fast R-CNN снижает вычислительные затраты, выполняя свёрточную операцию один раз для всего изображения, а не для каждого регионального предложения по отдельности. Полученная карта признаков используется совместно для всех предложений регионов, что существенно повышает эффективность.
Значимым достижением стало введение слоя RoI Pooling (Region of Interest Pooling), который позволяет извлекать карты признаков фиксированного размера из регионов произвольного размера.
Объединив общее извлечение признаков, softmax-классификатор и регрессию ограничивающих рамок в единую унифицированную структуру, Fast R-CNN обеспечивает отличный баланс между скоростью и точностью.
Оставшееся узкое место
Хотя Fast R-CNN решил многие проблемы R-CNN, региональные предложения по-прежнему вычислялись алгоритмом Selective Search, что оставляло время инференса достаточно медленным.
Faster R-CNN (2015): нейросеть предлагает регионы сама
Faster R-CNN — это ключевая двухэтапная модель детекции объектов, которая ввела встроенную Regional Proposal Network (RPN) для генерации кандидатов на объектные регионы, обеспечив значительно более быструю и точную детекцию по сравнению с предшественниками, полагавшимися на внешние методы предложения регионов.
Через месяц после публикации статьи о Fast R-CNN Гиршик в соавторстве с Ренем, Хе и Сунем опубликовал статью «Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks».
Архитектура: два модуля в одном
Faster R-CNN состоит из двух основных модулей: первый отвечает за локализацию объектов (модуль регионных предложений — RPN), второй — за присвоение классовых меток найденным объектам (модуль детектора).
RPN — это полностью свёрточная сеть, применяемая непосредственно к карте признаков входного изображения. Для каждой пространственной позиции на карте признаков она генерирует набор региональных предложений — так называемых якорей (anchors) — с различными масштабами и соотношениями сторон. Для каждого якоря сеть предсказывает как вероятность наличия объекта, так и точные координаты ограничивающей рамки.
Ключевая особенность Faster R-CNN — полное разделение вычислений между RPN и финальным детектором: карта признаков вычисляется всего один раз и используется на обоих этапах модели.
graph TD
A[Входное изображение] --> B[Backbone CNN\nVGG / ResNet]
B --> C[Карта признаков]
C --> D[Region Proposal Network\nRPN]
C --> E[RoI Pooling]
D -- Якоря + регионы --> E
E --> F[Полносвязные слои]
F --> G[Классификатор\nSoftmax]
F --> H[Регрессор\nBounding Box]
Mask R-CNN (2017): от рамок — к пикселям
В 2017 году был представлен Mask R-CNN, расширяющий успех Faster R-CNN до задачи инстанс-сегментации. Mask R-CNN встраивает дополнительную «маскирующую голову» (Mask Head) в архитектуру Faster R-CNN для генерации пиксельных масок сегментации для каждого обнаруженного объекта. Этот подход позволяет выполнять одновременно детекцию объектов и инстанс-сегментацию в единой сети.
Три параллельных выхода
Mask R-CNN расширяет Faster R-CNN, добавляя ветвь для предсказания масок сегментации для каждого RoI параллельно с существующими ветвями классификации и регрессии ограничивающих рамок. Ветвь масок — это небольшая FCN (fully convolutional network), применяемая к каждому RoI и предсказывающая маску сегментации в режиме пиксель-в-пиксель.
RoIAlign вместо RoI Pooling
Ключевым элементом Mask R-CNN является выравнивание пиксель-в-пиксель (pixel-to-pixel alignment) — главный недостающий элемент Fast/Faster R-CNN. Операция RoI Pooling вносила пространственные погрешности из-за квантизации координат. RoIAlign устраняет это с помощью билинейной интерполяции, что критично для точной попиксельной сегментации.
Mask R-CNN расширяет Faster R-CNN, добавляя ветвь предсказания маски объекта параллельно с существующей ветвью распознавания ограничивающих рамок. Модель проста в обучении и добавляет лишь небольшую накладную нагрузку к Faster R-CNN, работая со скоростью 5 FPS. Кроме того, Mask R-CNN легко обобщается на другие задачи — например, оценку позы человека.
Модель показала лучшие результаты по всем трём трекам соревнования COCO, включая инстанс-сегментацию, детекцию объектов и обнаружение ключевых точек человека. Без каких-либо дополнительных трюков Mask R-CNN превзошёл все существующие одномодельные решения в каждой задаче.
Сравнение архитектур семейства R-CNN
| Модель | Год | Региональные предложения | Скорость | Задача |
|---|---|---|---|---|
| R-CNN | 2014 | Selective Search (внешний) | ~47 сек/изобр. | Детекция |
| Fast R-CNN | 2015 | Selective Search (внешний) | ~2 сек/изобр. | Детекция |
| Faster R-CNN | 2015 | RPN (встроенный, обучаемый) | ~0.2 сек/изобр. | Детекция |
| Mask R-CNN | 2017 | RPN (встроенный) + RoIAlign | ~0.2 сек/изобр. | Детекция + сегментация |
Эволюционный путь: от идеи к архитектуре
timeline
title Эволюция семейства R-CNN
2014 : R-CNN
: Selective Search + CNN для каждого региона
: Прорыв в точности, катастрофически медленный
2015 : Fast R-CNN
: Единая карта признаков + RoI Pooling
: В 25x быстрее R-CNN
2015 : Faster R-CNN
: Region Proposal Network встроен в сеть
: Первый по-настоящему end-to-end детектор
2017 : Mask R-CNN
: + ветвь маски + RoIAlign
: Детекция и сегментация одновременно
Все модели в семействе R-CNN являются регионно-ориентированными: детекция происходит в два этапа. Сначала модель предлагает набор регионов интереса с помощью Selective Search или RPN. Предложенные регионы разрежены — кандидатов на ограничивающие рамки может быть бесконечно много. Затем классификатор обрабатывает только регионы-кандидаты.
Каждое поколение R-CNN устраняло одно критическое узкое место предшественника: R-CNN — точность распознавания, Fast R-CNN — дублирование вычислений, Faster R-CNN — медленные внешние предложения, Mask R-CNN — ограниченность рамками.
Где применяется семейство R-CNN сегодня?
Усовершенствования, внесённые семейством R-CNN, делают эти архитектуры высоко применимыми в реальных приложениях: автономных транспортных средствах, системах видеонаблюдения, медицинской визуализации и ретейл-аналитике.
Вместе с тем следует отметить, что все они являются регионно-ориентированными алгоритмами детекции, которые могут достигать высокой точности, но оказываются слишком медленными для некоторых применений — например, автономного вождения в реальном времени.
Для сценариев, требующих максимальной скорости, существуют однопроходные модели детекции — SSD, RetinaNet и архитектуры семейства YOLO, которые отказываются от этапа региональных предложений в пользу прямой плотной детекции.
# Пример инференса с Faster R-CNN через torchvision
import torchvision
import torch
from PIL import Image
from torchvision import transforms
# Загрузка предобученной модели
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
model.eval()
# Подготовка изображения
image = Image.open("photo.jpg").convert("RGB")
transform = transforms.ToTensor()
tensor = transform(image).unsqueeze(0) # [1, C, H, W]
# Инференс
with torch.no_grad():
predictions = model(tensor)
# Результат: boxes, labels, scores
print(predictions[0]['boxes']) # координаты рамок
print(predictions[0]['labels']) # классы объектов
print(predictions[0]['scores']) # уверенность модели
Заключение
Семейство R-CNN — это учебник по итеративной инженерии в машинном обучении. Каждая модель не начинала с нуля: она точечно устраняла главный недостаток предшественника.
- R-CNN доказал, что CNN работает для детекции, но был неприемлемо медленным.
- Fast R-CNN устранил дублирование вычислений признаков, введя общую карту признаков и RoI Pooling.
- Faster R-CNN закрыл последнее внешнее узкое место — Selective Search — встроенной обучаемой RPN.
- Mask R-CNN вышел за рамки рамок и добавил попиксельную сегментацию с минимальными накладными расходами.
Благодаря своей универсальности и гибкости Mask R-CNN был использован тремя командами-победительницами соревнования по инстанс-сегментации COCO 2017, которые значительно превзошли предыдущий уровень техники.
Если вы строите систему компьютерного зрения с акцентом на точность, а не на реальное время — семейство R-CNN остаётся золотым стандартом. Если же приоритет — скорость, следующая остановка: YOLO, SSD и RetinaNet.