Feature Pyramid Network (FPN)
Özellik Piramidi Ağı (FPN), algılayıcıların hem büyük hem de küçük nesneleri bulabilmesi için derin, anlamsal özellikleri ince ve yüksek çözünürlüklü özelliklerle birleştirir.
Özellik Piramidi Ağı (FPN), bir omurganın çok çözünürlüklü özellik haritalarını, her düzeyin güçlü anlamsal bilgi taşıdığı ve farklı nesne boyutlarına karşılık geldiği bir piramide dönüştüren bir boyun mimarisidir. Facebook AI Research tarafından Nesne Tespiti için Özellik Piramidi Ağları (CVPR 2017) makalesinde tanıtılan bu yapı, standart bir evrişimli sinir ağına (CNN) yukarıdan aşağıya bir yol ve yanal bağlantılar ekler; böylece küçük nesneler, nesnelerin nasıl göründüğüne dair derin katmanların bilgisini hâlâ taşıyan yüksek çözünürlüklü düzeylerde tespit edilebilir. FPN'ler ve bunların türevleri, çoğu modern nesne tespiti mimarisinde ve örnek segmentasyonu modelinde omurga ile tespit başlığı arasında yer alır.
Dedektörler Neden Çok Ölçekli Özelliklere İhtiyaç Duyar#
Bir CNN omurgası derinleştikçe örnekleme oranını düşürür; bu nedenle son özellik haritası güçlü anlamsal bilgiye ve kaba çözünürlüğe sahiptir: 32 adımda 20 piksellik bir nesne, ızgaranın bir hücresinden daha azını kaplar. İlk özellik haritaları ince uzamsal ayrıntıları korur ve çoğunlukla kenarlara ve dokulara tepki verir. FPN'den önce dedektörlerin her birinin bir bedeli olan üç seçeneği vardı. Ağı bir görüntü piramidinin farklı ölçeklerinde çalıştırmak doğrudur, ancak birkaç kat daha yavaştır. Özgün Faster R-CNN gibi yalnızca son haritadan tahmin yapmak hızlıdır, ancak küçük nesnelerde zayıf kalır. SSD gibi omurganın birkaç aşamasından tahmin yapmak, düşük düzeyli zayıf özelliklerden kaçınmak için ağın üst katmanlarından başlar ve bu nedenle küçük nesnelerin ihtiyaç duyduğu yüksek çözünürlüklü haritaları kaçırır. FPN, tek bir ileri geçişle görüntü piramidinin çok ölçekli kapsama alanını sağlar. FPN'li Faster R-CNN, COCO tespitinde tek model için yeni bir en iyi sonucu elde ederken GPU üzerinde saniyede 5 kare hızında çalıştı.
FPN Nasıl Çalışır#
FPN, piramidini üç adımda oluşturur:
- Aşağıdan yukarıya yol: Omurganın normal ileri geçişidir. FPN, ResNet içinde 4, 8, 16 ve 32 adım değerlerine sahip C2–C5 olarak etiketlenen her aşamanın son özellik haritasını alır.
- Yukarıdan aşağıya yol: En kaba düzeyden başlayarak her harita, üst düzey anlamsal bilgiyi daha ince düzeylere taşımak üzere en yakın komşu enterpolasyonuyla 2 kat büyütülür.
- Yanal bağlantılar: 1×1 evrişim, her omurga haritasını 256 kanallı ortak bir genişliğe dönüştürür; sonuç, üst düzeyden büyütülmüş haritaya eleman bazında eklenir ve 3×3 evrişim, büyütme kusurlarını azaltmak için toplamı yumuşatır. P2–P5 çıkışlarının tümü 256 kanallıdır; böylece paylaşılan ağırlıklara sahip tek bir tahmin başlığı her düzeyde çalışır.
Torchvision, omurga haritalarını sıralı bir sözlük olarak alan kullanıma hazır bir FeaturePyramidNetwork modülü içerir.
from collections import OrderedDict
import torch
from torchvision.ops import FeaturePyramidNetwork
# 640x640 boyutundaki görüntü için 8, 16 ve 32 adımlarındaki omurga çıkışları (ResNet-50 kanal sayıları)
features = OrderedDict(
c3=torch.randn(1, 512, 80, 80),
c4=torch.randn(1, 1024, 40, 40),
c5=torch.randn(1, 2048, 20, 20),
)
# Yanal 1x1 evrişimler ve yukarıdan aşağıya yol, her düzeye aynı 256 kanalı kazandırır
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))Şu değerleri yazdırır: c3 (1, 256, 80, 80), c4 (1, 256, 40, 40) ve c5 (1, 256, 20, 20): Her düzey uzamsal boyutunu korur ve artık üçü de aynı kanal genişliğini paylaşır; böylece tek bir başlık her ölçekte kullanılabilir.
Uygulamalar#
- Hava ve uydu görüntüleri: Uydu görüntüsü analizinde ve drone görüntülerinde araçlar, insanlar ve binalar çoğu zaman yalnızca birkaç pikseli kaplar; bu nedenle dedektörler piramidin 4 ve 8 adımlı düzeylerine dayanır.
- Örnek segmentasyonu: Detectron2 içinde bulunan Mask R-CNN, kutusunu ve maskesini tahmin etmeden önce her bölgeyi boyutuna göre bir piramit düzeyine atar.
- Panoptik segmentasyon: Panoptik FPN, aynı piramide anlamsal bir segmentasyon dalı ekler ve sayılabilir nesnelerin yanı sıra yol ve gökyüzü gibi ögeleri de etiketler.
- Otonom araçlar: Tek bir kamera karesinde görüntünün yarısını kaplayan yakındaki kamyonların yanı sıra birkaç piksel yüksekliğindeki uzaktaki yayalar ve trafik ışıkları da bulunur.
FPN ile PANet, BiFPN ve Diğer Boyun Mimarilerinin Karşılaştırması#
FPN'in yukarıdan aşağıya yolu, düzeyler arasındaki bilgi akışını değiştiren bir boyun mimarileri ailesinin başlangıç noktası oldu:
- PANet: FPN'in yukarıdan aşağıya yolundan sonra aşağıdan yukarıya bir yol ekleyerek iyi konumlandırılmış ince özelliklerden üst düzeylere giden yolu kısaltır. PANet, COCO 2017 örnek segmentasyonu yarışmasında birinci oldu.
- BiFPN: EfficientDet boyun mimarisi, yukarıdan aşağıya ve aşağıdan yukarıya birleştirmeyi birkaç kez yineler, yalnızca tek girişi olan düğümleri kaldırır ve birleştirdiği her girdi için bir ağırlık öğrenir.
- NAS-FPN: Sinir mimarisi araması ile bulunan ve birkaç kez üst üste yığılan bir piramit düzeni.
- U-Net: Atlamalı bağlantılarla kaba ve ince özellikleri de birleştirir, ardından tam çözünürlükte bir kez tahmin yapar; bu yapı çok ölçekli tespitten ziyade piksel başına segmentasyona uygundur.
YOLO26, düzeyleri birleştirme yoluyla kaynaştıran bir FPN artı PAN boyun mimarisi kullanır: iki büyütme adımı, 32 adımlı bağlamı 8 adımlı düzeye taşır; iki adımlı evrişim ayrıntıları yukarı taşır ve başlık P3, P4 ve P5'ten sırasıyla 8, 16 ve 32 adımlarda tahmin yapar. yolo26-p2.yaml varyantı, çok küçük nesneler için piramide 4 adımlı bir P2 düzeyi ekler; bu da YOLO26n'nin kaynaştırılmamış hesaplama yükünü 6.1'den 9.5 GFLOPs değerine çıkarır.










