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 состоит из нескольких этапов:
- Проецирование RoI на карту признаков. Координаты региона интереса, заданные в исходном изображении, масштабируются на карту признаков (feature map) с учётом коэффициента субдискретизации (stride) свёрточной сети. Например, если stride равен 16, то координаты делятся на 16. Важно, что на этом этапе не происходит округления — координаты остаются дробными.
- Деление области на ячейки (bins). RoI делится на сетку фиксированного размера (например, 7×7 или 14×14). Каждая ячейка имеет дробные границы. В отличие от RoIPool, здесь не выполняется округление до целых пикселей.
- Билинейная интерполяция. Для каждой ячейки выбирается несколько точек (обычно 4 — по углам ячейки). Значение признака в каждой такой точке вычисляется как взвешенная сумма значений четырёх ближайших пикселей карты признаков (по билинейной интерполяции). Веса определяются расстоянием до соседних пикселей.
- Агрегация. Полученные значения для каждой ячейки усредняются (average pooling) или, реже, применяется максимальный пулинг. Результатом является карта признаков фиксированного размера, соответствующая данному RoI.
Этот подход позволяет сохранить субпиксельную точность и избежать ошибок, связанных с дискретизацией, что особенно важно для задач, где требуется точное выделение контуров объектов.
Отличия от RoIPool и Precise RoIPool
| Характеристика | RoIPool | RoIAlign | Precise 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).
Источники
- He, K., Gkioxari, G., Dollár, P., & Girshick, R. (2017). Mask R-CNN. Proceedings of the IEEE International Conference on Computer Vision (ICCV).
- 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).
- 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).
- Wu, Y., Kirillov, A., Massa, F., Lo, W.-Y., & Girshick, R. (2019). Detectron2. GitHub repository.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →