Feature Pyramid Network (FPN)
Esplora come le reti piramidali delle feature (FPN) migliorano il rilevamento degli oggetti a più scale. Scopri come Ultralytics YOLO26 usa FPN avanzate per rilevare oggetti piccoli e grandi.
Una Rete piramidale delle caratteristiche (FPN) è un componente architetturale specializzato utilizzato nei moderni sistemi di visione artificiale (CV) per migliorare il rilevamento di oggetti a diverse scale. Risolve efficacemente una sfida di lunga data nell'analisi delle immagini: riconoscere sia strutture grandi e in evidenza sia dettagli piccoli e distanti all'interno della stessa immagine. Generando una rappresentazione multiscala dell'input, concettualmente simile a una piramide, le FPN consentono alle reti neurali di estrarre informazioni semantiche ricche a ogni livello di risoluzione. Questa architettura si trova generalmente tra il backbone, che estrae le caratteristiche grezze, e la testa di rilevamento, che prevede le classi degli oggetti e i riquadri di delimitazione.
Come funzionano le reti piramidali delle caratteristiche#
L'innovazione principale della FPN risiede nel modo in cui elabora le informazioni. Le tradizionali reti neurali convoluzionali (CNN) creano naturalmente una gerarchia di caratteristiche in cui l'immagine di input viene sottoposta progressivamente a downsampling. Sebbene ciò approfondisca la comprensione semantica (sapere cosa è presente nell'immagine), spesso degrada la risoluzione spaziale (sapere esattamente dove si trova), facendo scomparire gli oggetti piccoli.
Le FPN affrontano questo problema attraverso un processo in tre fasi:
-
Percorso bottom-up: questo è il normale passaggio feed-forward della rete, ad esempio una rete residua (ResNet). Mentre la rete elabora l'immagine, crea mappe delle caratteristiche che diminuiscono in dimensione ma aumentano il loro valore semantico.
-
Percorso top-down: la rete costruisce una piramide a risoluzione più elevata eseguendo l'upsampling delle caratteristiche semanticamente ricche provenienti dai livelli più profondi. Questo passaggio "reimmagina" un contesto forte nelle mappe spaziali più grandi.
-
Connessioni laterali: per recuperare i dettagli nitidi persi durante il downsampling, le FPN fondono le caratteristiche sottoposte a upsampling con le mappe originali ad alta risoluzione del percorso bottom-up tramite connessioni laterali.
Questa combinazione produce una piramide in cui ogni livello presenta una semantica forte e una buona localizzazione, aumentando significativamente precisione e recall per oggetti di tutte le dimensioni.
Importanza nelle architetture di rilevamento degli oggetti#
Le FPN sono un elemento fondamentale delle moderne architetture di rilevamento degli oggetti. Prima della loro introduzione, i modelli dovevano scegliere tra velocità (utilizzando solo il livello finale) e accuratezza (elaborando una piramide di immagini, un'operazione molto lenta). Le FPN offrono una soluzione che combina i vantaggi di entrambe le opzioni, consentendo l'inferenza in tempo reale senza sacrificare le capacità di rilevamento degli oggetti piccoli.
Questa efficienza è fondamentale per modelli avanzati come YOLO26, che utilizza sofisticate reti di aggregazione ispirate ai principi delle FPN (come PANet) per raggiungere prestazioni all'avanguardia. L'architettura garantisce che, sia quando il modello viene distribuito su dispositivi edge sia su server potenti tramite la piattaforma Ultralytics, mantenga un'elevata accuratezza su dataset diversi.
Applicazioni nel mondo reale#
La capacità multiscala delle FPN le rende indispensabili nei settori in cui sicurezza e precisione sono fondamentali.
- AI nel settore automobilistico: i veicoli autonomi devono tenere traccia contemporaneamente di grandi camion nelle vicinanze e di piccoli semafori o pedoni in lontananza. Le FPN consentono allo stack di percezione di elaborare queste scale differenti in un unico passaggio, garantendo decisioni tempestive. Dataset come nuScenes vengono spesso utilizzati per valutare queste capacità.
- Analisi delle immagini mediche: nella diagnostica per immagini, rilevare le patologie richiede l'individuazione di anomalie che possono variare enormemente in dimensioni. Un modello dotato di FPN può identificare sia grandi strutture degli organi sia piccoli tumori in fase iniziale nelle scansioni MRI, aiutando i radiologi a formulare diagnosi accurate.
- AI in agricoltura: l'agricoltura di precisione si basa sul rilevamento di colture e parassiti nelle immagini acquisite dai droni. Poiché l'altitudine del drone può variare, cambia anche la dimensione delle piante nell'immagine. Le FPN aiutano i modelli a generalizzare bene, eseguendo accuratamente il conteggio degli oggetti indipendentemente dall'altezza della fotocamera.
FPN e altri aggregatori di caratteristiche#
È utile distinguere la FPN standard dalle sue varianti evolute presenti nelle architetture più recenti.
- FPN vs. PANet: mentre la FPN aggiunge un percorso top-down per arricchire le caratteristiche, rete di aggregazione dei percorsi (PANet) aggiunge un ulteriore percorso bottom-up sopra la FPN. Questo accorcia il percorso delle informazioni per le caratteristiche di basso livello, migliorando ulteriormente la localizzazione, una tecnica spesso adottata nei modelli YOLO.
- FPN vs. BiFPN: presente in EfficientDet, la rete piramidale bidirezionale delle caratteristiche (BiFPN) introduce pesi apprendibili per caratteristiche diverse e rimuove i nodi con un solo input, ottimizzando la rete per l'efficienza.
Esempio pratico#
Librerie avanzate come ultralytics gestiscono internamente la complessità della costruzione delle FPN. Quando carichi un modello come YOLO26, l'architettura include automaticamente questi livelli di aggregazione delle caratteristiche per massimizzare le prestazioni.
from ultralytics import YOLO
# Load the YOLO26 model, which uses advanced feature pyramid principles internally
# The 'n' suffix indicates the nano version, optimized for speed
model = YOLO("yolo26n.pt")
# Perform inference on an image containing objects of various sizes
# The model's neck (FPN-based) aggregates features to detect small and large items
results = model("https://ultralytics.com/images/bus.jpg")
# Display results to see bounding boxes around buses (large) and people (small)
results[0].show()








