Feature Pyramid Network (FPN)
Пирамида признаков (FPN) объединяет глубокие семантические признаки с детализированными признаками высокого разрешения, чтобы детекторы находили и крупные, и мелкие объекты.
Сеть пирамидальных признаков (FPN) — это архитектура шеи, которая преобразует многоразрешающие карты признаков базовой сети в пирамиду, где каждый уровень несёт сильную семантическую информацию и соответствует определённому диапазону размеров объектов. Эта архитектура была представлена Facebook AI Research в работе Feature Pyramid Networks for Object Detection (CVPR 2017). Она добавляет стандартной свёрточной нейронной сети (CNN) путь сверху вниз и боковые связи, благодаря чему небольшие объекты можно обнаруживать на уровнях с высоким разрешением, которые при этом сохраняют знания глубоких слоёв о том, как выглядят объекты. FPN и её производные располагаются между базовой сетью и головой обнаружения в большинстве современных архитектур обнаружения объектов и моделей сегментации экземпляров.
Зачем детекторам признаки разных масштабов#
Базовая CNN уменьшает разрешение по мере углубления, поэтому её последняя карта признаков содержит сильную семантическую информацию, но имеет низкое разрешение: при шаге 32 объект размером 20 пикселей занимает меньше одной ячейки сетки. Ранние карты признаков сохраняют мелкие пространственные детали и реагируют в основном на границы и текстуры. До появления FPN у детекторов было три варианта, каждый со своими издержками. Обработка изображения в пирамиде нескольких масштабов даёт точность, но работает в несколько раз медленнее. Предсказание только по последней карте, как в оригинальной модели Faster R-CNN, выполняется быстро, но плохо справляется с небольшими объектами. Предсказание по нескольким этапам базовой сети, как в SSD, начинается на высоком уровне сети, чтобы избежать слабых низкоуровневых признаков, и поэтому не использует карты высокого разрешения, необходимые для обнаружения небольших объектов. FPN обеспечивает охват разных масштабов, как у пирамиды изображений, за один прямой проход. Faster R-CNN с FPN установила новый рекорд качества для одной модели при обнаружении объектов на COCO, работая со скоростью 5 кадров в секунду на GPU.
Как работает FPN#
FPN строит пирамиду в три этапа:
- Путь снизу вверх: Обычный прямой проход базовой сети. FPN берёт последнюю карту признаков каждого этапа, обозначенную от C2 до C5 при шагах 4, 8, 16 и 32 в ResNet.
- Путь сверху вниз: Начиная с самого грубого уровня, каждая карта увеличивается в 2 раза интерполяцией методом ближайшего соседа, передавая семантику высокого уровня на более детальные уровни.
- Боковые связи: Свёртка 1×1 приводит каждую карту базовой сети к общей ширине в 256 каналов. Результат складывается поэлементно с увеличенной картой уровня выше, а свёртка 3×3 сглаживает сумму, уменьшая артефакты масштабирования. Все выходы, от P2 до P5, имеют по 256 каналов, поэтому одна голова предсказания с общими весами работает на каждом уровне.
В Torchvision есть готовый модуль FeaturePyramidNetwork, который принимает карты базовой сети в виде упорядоченного словаря.
from collections import OrderedDict
import torch
from torchvision.ops import FeaturePyramidNetwork
# Выходы базовой сети для изображения 640x640 при шагах 8, 16 и 32 (число каналов ResNet-50)
features = OrderedDict(
c3=torch.randn(1, 512, 80, 80),
c4=torch.randn(1, 1024, 40, 40),
c5=torch.randn(1, 2048, 20, 20),
)
# Боковые свёртки 1x1 и путь сверху вниз обеспечивают одинаковое число каналов 256 на каждом уровне
fpn = FeaturePyramidNetwork(in_channels_list=[512, 1024, 2048], out_channels=256)
pyramid = fpn(features)
for name, level in pyramid.items():
print(name, tuple(level.shape))Выводятся c3 (1, 256, 80, 80), c4 (1, 256, 40, 40) и c5 (1, 256, 20, 20): каждый уровень сохраняет свой пространственный размер, и теперь у всех трёх одинаковая ширина каналов, благодаря чему одна голова работает на всех масштабах.
Применение#
- Аэрофотосъёмка и спутниковые изображения: Транспортные средства, люди и здания на спутниковых изображениях и записях с дронов часто занимают всего несколько пикселей, поэтому детекторы используют уровни пирамиды с шагами 4 и 8.
- Сегментация экземпляров: Mask R-CNN, доступная в Detectron2, назначает каждую область уровню пирамиды в соответствии с её размером, а затем предсказывает ограничивающую рамку и маску.
- Паноптическая сегментация: Panoptic FPN добавляет к той же пирамиде ветвь семантической сегментации, которая размечает такие области, как дорога и небо, наряду с подсчитываемыми объектами.
- Автономные транспортные средства: В одном кадре камеры могут одновременно оказаться близкие грузовики, занимающие половину изображения, и далёкие пешеходы и светофоры высотой всего в несколько пикселей.
FPN, PANet, BiFPN и другие архитектуры шеи#
Путь FPN сверху вниз стал отправной точкой для семейства архитектур шеи, меняющих способ передачи информации между уровнями:
- PANet: Добавляет путь снизу вверх после пути FPN сверху вниз, сокращая маршрут от детальных, точно локализованных признаков к верхним уровням. PANet заняла первое место в соревновании по сегментации экземпляров COCO 2017.
- BiFPN: Архитектура шеи модели EfficientDet несколько раз повторяет объединение сверху вниз и снизу вверх, удаляет узлы только с одним входом и обучает вес для каждого объединяемого входа.
- NAS-FPN: Структура пирамиды, найденная с помощью поиска нейронной архитектуры и повторённая несколько раз.
- U-Net: Также объединяет грубые и детальные признаки с помощью пропускающих связей, а затем выполняет предсказание на полном разрешении. Это лучше подходит для попиксельной сегментации, чем для обнаружения объектов разных масштабов.
YOLO26 использует архитектуру шеи FPN-plus-PAN, которая объединяет уровни конкатенацией: два этапа увеличения разрешения передают контекст с шага 32 на уровень с шагом 8, две свёртки с шагом передают детали обратно наверх, а голова делает предсказания по P3, P4 и P5 при шагах 8, 16 и 32. Вариант yolo26-p2.yaml расширяет пирамиду уровнем P2 с шагом 4 для очень маленьких объектов, увеличивая вычисления YOLO26n без объединения слоёв с 6.1 до 9.5 GFLOPs.










