Открыть сервис

RoIAlign

RoIAlign — это операция извлечения признаков из карты свёрточной нейронной сети, применяемая в задачах компьютерного зрения, в частности в архитектурах для обнаружения объектов и сегментации изображений. В отличие от предшествующего метода RoIPool, RoIAlign позволяет получать более точные пространственные координаты регионов интереса (Region of Interest, RoI) за счёт устранения ошибок, связанных с дискретизацией и округлением. Операция была предложена в 2017 году в рамках архитектуры Mask R-CNN и с тех пор стала стандартом для задач, требующих субпиксельной точности.

История

До появления RoIAlign в нейросетевых детекторах объектов, таких как Faster R-CNN, использовался метод RoIPool. Он преобразовывал регионы интереса произвольного размера в карты признаков фиксированного размера (например, 7×7) путём деления области на ячейки и применения к каждой из них операции максимального пулинга (max pooling). Основным недостатком RoIPool было грубое квантование: при делении области на ячейки координаты границ округлялись до целых чисел, что приводило к потере пространственной информации. Для задач, где требуется точное выделение границ объектов (например, семантическая сегментация), эта ошибка становилась критической.

В 2017 году исследователи из Facebook (продукт Meta, признанной экстремистской и запрещённой в РФ) AI Research (организация Meta признана экстремистской и запрещена в РФ) в работе «Mask R-CNN» (авторы: Kaiming He, Georgia Gkioxari, Piotr Dollár, Ross Girshick) предложили RoIAlign как замену RoIPool. Основная идея заключалась в том, чтобы избежать любого округления координат и использовать билинейную интерполяцию для вычисления значений признаков в дробных точках. Это позволило Mask R-CNN одновременно решать задачи обнаружения объектов и сегментации экземпляров (instance segmentation) с высокой точностью.

Принцип работы

RoIAlign состоит из нескольких этапов:

  1. Проецирование RoI на карту признаков. Координаты региона интереса, заданные в исходном изображении, масштабируются на карту признаков (feature map) с учётом коэффициента субдискретизации (stride) свёрточной сети. Например, если stride равен 16, то координаты делятся на 16. Важно, что на этом этапе не происходит округления — координаты остаются дробными.
  1. Деление области на ячейки (bins). RoI делится на сетку фиксированного размера (например, 7×7 или 14×14). Каждая ячейка имеет дробные границы. В отличие от RoIPool, здесь не выполняется округление до целых пикселей.
  1. Билинейная интерполяция. Для каждой ячейки выбирается несколько точек (обычно 4 — по углам ячейки). Значение признака в каждой такой точке вычисляется как взвешенная сумма значений четырёх ближайших пикселей карты признаков (по билинейной интерполяции). Веса определяются расстоянием до соседних пикселей.
  1. Агрегация. Полученные значения для каждой ячейки усредняются (average pooling) или, реже, применяется максимальный пулинг. Результатом является карта признаков фиксированного размера, соответствующая данному RoI.

Этот подход позволяет сохранить субпиксельную точность и избежать ошибок, связанных с дискретизацией, что особенно важно для задач, где требуется точное выделение контуров объектов.

Отличия от RoIPool и Precise RoIPool

ХарактеристикаRoIPoolRoIAlignPrecise RoIPool
Округление координатДа (квантование)НетНет
ИнтерполяцияНет (используется целочисленный пулинг)Билинейная интерполяцияБилинейная интерполяция
Количество точек на ячейку1 (максимум пикселей)4 (по углам)Все пиксели, пересекающие ячейку
Вычислительная сложностьНизкаяСредняяВысокая
Точность локализацииНизкаяВысокаяОчень высокая

Precise RoIPool — более поздняя модификация, которая вычисляет интеграл по площади ячейки, а не по отдельным точкам, что даёт ещё большую точность, но требует больше вычислений.

Применение

RoIAlign используется в архитектурах, где требуется высокая точность пространственной локализации:

  • Mask R-CNNклассическая архитектура для сегментации экземпляров. RoIAlign позволяет одновременно предсказывать bounding box и маску объекта.
  • Cascade R-CNN — каскадный детектор, использующий RoIAlign для последовательного уточнения регионов.
  • YOLACT (You Only Look At CoefficienTs) — модель для сегментации экземпляров в реальном времени, где RoIAlign применяется для извлечения признаков.
  • Detectron2 — библиотека от Facebook AI Research (организация Meta признана экстремистской и запрещена в РФ), где RoIAlign является стандартной операцией.
  • Panoptic FPN — архитектура для паноптической сегментации (объединение семантической и сегментации экземпляров).

Также RoIAlign применяется в задачах, где требуется точное совмещение признаков из разных масштабов, например, в системах распознавания текста на изображениях (OCR) или в медицинской визуализации (сегментация опухолей, сосудов).

Реализация

В современных фреймворках глубокого обучения (PyTorch, TensorFlow, JAX) RoIAlign реализован как встроенная операция. В PyTorch, например, используется функция torchvision.ops.roi_align, которая принимает карту признаков, список RoI (в формате [batch_index, x1, y1, x2, y2]), размер выходной карты и коэффициент масштабирования (spatial scale). Пример:

```python import torch from torchvision.ops import roi_align

Карта признаков: [batch, channels, height, width]

feature_map = torch.randn(1, 256, 32, 32)

RoI: [batch_index, x1, y1, x2, y2]

rois = torch.tensor([[0, 10.5, 20.3, 50.1, 60.7]])

Выходной размер: 7x7

output = roi_align(feature_map, rois, output_size=(7, 7), spatial_scale=1.0/16.0) ```

В TensorFlow аналогичная функция — tf.image.crop_and_resize, но она не поддерживает дробные координаты напрямую, поэтому для точной реализации RoIAlign используются пользовательские операции или библиотеки (например, tensorflow-addons).

Критика и ограничения

Несмотря на широкое распространение, RoIAlign имеет ряд недостатков:

  • Вычислительная сложность. Билинейная интерполяция для каждой точки требует дополнительных вычислений, что замедляет обучение и инференс по сравнению с RoIPool. Для задач реального времени (например, видеодетекция) это может быть критично.
  • Чувствительность к гиперпараметрам. Количество точек выборки (sampling points) влияет на точность. В оригинальной работе использовалось 4 точки, но для некоторых задач может потребоваться больше (например, 8 или 16), что увеличивает вычислительные затраты.
  • Альтернативные подходы. В некоторых современных архитектурах (например, DETR, YOLOv8) отказываются от RoI-операций в пользу прямых предсказаний координат или использования трансформеров, что позволяет избежать проблем с дискретизацией на уровне архитектуры.

Влияние на развитие компьютерного зрения

RoIAlign стал важным шагом в развитии методов сегментации экземпляров. До его появления точность выделения границ объектов в таких задачах, как COCO (Common Objects in Context), была ограничена из-за ошибок квантования. Внедрение RoIAlign позволило Mask R-CNN достичь state-of-the-art результатов на момент публикации (AP 37.1% на COCO test-dev). Впоследствии метод был адаптирован для трёхмерных данных (3D RoIAlign) и для видео (Tube RoIAlign).

Источники

  1. He, K., Gkioxari, G., Dollár, P., & Girshick, R. (2017). Mask R-CNN. Proceedings of the IEEE International Conference on Computer Vision (ICCV).
  2. Ren, S., He, K., Girshick, R., & Sun, J. (2015). Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. Advances in Neural Information Processing Systems (NeurIPS).
  3. Jiang, B., Luo, R., Mao, J., Xiao, T., & Jiang, Y. (2018). Acquisition of Localization Confidence for Accurate Object Detection. Proceedings of the European Conference on Computer Vision (ECCV).
  4. Wu, Y., Kirillov, A., Massa, F., Lo, W.-Y., & Girshick, R. (2019). Detectron2. GitHub repository.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →