Two-Stage Object Detectors
I rilevatori di oggetti a due stadi propongono regioni candidate, quindi classificano e perfezionano ciascuna di esse. Scopri come funziona Faster R-CNN, la famiglia R-CNN e i compromessi.
I rilevatori di oggetti a due stadi sono modelli di rilevamento di oggetti che suddividono il compito in due passaggi: il primo propone regioni dell'immagine che potrebbero contenere un oggetto, mentre il secondo classifica ogni regione e perfeziona il relativo riquadro di delimitazione. La famiglia R-CNN ha definito questa architettura tra il 2014 e il 2018 e per anni ha guidato i benchmark di rilevamento e segmentazione delle istanze. I rilevatori di oggetti a uno stadio saltano il passaggio delle proposte e predicono ogni riquadro da una griglia densa in un solo passaggio, motivo per cui la maggior parte dei sistemi in tempo reale li utilizza.
Come funzionano i rilevatori a due stadi#
Una rete di base, ossia una rete neurale convoluzionale, calcola una sola volta le mappe di caratteristiche per l'intera immagine, di solito con una rete piramidale di caratteristiche (FPN) posta sopra la rete di base. Il primo stadio, una rete di proposte di regioni (RPN), assegna a un insieme di riquadri di ancoraggio in ogni posizione della mappa delle caratteristiche punteggi di confidenza relativi alla presenza di oggetti e stima per regressione gli offset che adattano i riquadri di ancoraggio; Faster R-CNN usa nove ancore per posizione, tre dimensioni per tre rapporti d'aspetto. La soppressione dei non massimi (NMS) elimina le proposte sovrapposte; le regioni con i punteggi più alti — 300 per immagine in fase di test, secondo l'articolo originale — passano al secondo stadio. Qui, RoI pooling o il suo successore più preciso, RoIAlign, ritaglia per ogni proposta una griglia di caratteristiche di dimensioni fisse; una piccola testa predice per ogni ritaglio una classe, inclusa la classe di sfondo, e gli offset dei riquadri specifici per classe.
Un forward hook sulla RPN di Faster R-CNN di torchvision mostra quanto lavoro riceve il secondo stadio:
import urllib.request
from PIL import Image
from torchvision.models.detection import FasterRCNN_ResNet50_FPN_V2_Weights, fasterrcnn_resnet50_fpn_v2
# Load Faster R-CNN with a ResNet-50 FPN backbone, pretrained on COCO
weights = FasterRCNN_ResNet50_FPN_V2_Weights.DEFAULT
model = fasterrcnn_resnet50_fpn_v2(weights=weights).eval()
image = Image.open(urllib.request.urlopen("https://ultralytics.com/images/bus.jpg"))
# Report how many regions the first stage, the region proposal network, passes on
model.rpn.register_forward_hook(lambda module, inputs, output: print(f"Stage 1: {len(output[0][0])} proposals"))
# The second stage classifies and refines every proposal
detections = model([weights.transforms()(image)])[0]
labels = detections["labels"][detections["scores"] > 0.5]
print(f"Stage 2: {len(labels)} objects {[weights.meta['categories'][i] for i in labels]}")Stampa Stage 1: 1000 proposals e Stage 2: 6 objects ['person', 'bus', 'person', 'person', 'person', 'tie']: durante l'inferenza torchvision mantiene 1.000 proposte per immagine e il secondo stadio le trasforma in sei rilevamenti affidabili.
La famiglia R-CNN#
- R-CNN (2014): La ricerca selettiva proponeva circa 2.000 regioni; ciascuna veniva ridimensionata a una dimensione fissa e passata separatamente alla CNN, mentre le macchine a vettori di supporto classificavano le caratteristiche. Di conseguenza, il rilevamento con backbone VGG-16 richiedeva 47 secondi per immagine su una GPU.
- Fast R-CNN (2015): Calcolare una sola volta la mappa delle caratteristiche e ricavarne le caratteristiche di ogni proposta con RoI pooling consentiva di addestrare VGG-16 9 volte più velocemente rispetto a R-CNN e di eseguire i test 213 volte più velocemente.
- Faster R-CNN (2015): La RPN ha sostituito la ricerca selettiva e condivide le caratteristiche del backbone, rendendo quasi nullo il costo delle proposte e consentendo al rilevatore completo di funzionare a 5 frame al secondo.
- Mask R-CNN (2017): Un terzo ramo predice una maschera di pixel per ogni regione, trasformando il rilevatore in un modello di segmentazione delle istanze; RoIAlign campiona le caratteristiche in posizioni frazionarie esatte, che RoI pooling arrotondava.
- Cascade R-CNN (2018): Tre teste del secondo stadio, addestrate con soglie IoU crescenti di 0.5, 0.6 e 0.7, perfezionano ciascuna i riquadri prodotti dalla testa precedente, migliorando la precisione della localizzazione.
Rilevatori a due stadi e a uno stadio a confronto#
La RPN elimina gran parte dello sfondo prima che lo veda il classificatore, quindi il secondo stadio si addestra su regioni campionate in cui gli oggetti costituiscono una quota fissa, pari al 25% in Fast R-CNN, e classifica ciascuna regione usando caratteristiche aggregate nella sua posizione esatta. I rilevatori a uno stadio assegnano un punteggio a ogni posizione di una griglia densa, circa 100.000 candidati per immagine in RetinaNet, e sono rimasti indietro in accuratezza rispetto a quelli a due stadi fino a quando la focal loss ha ridotto il peso dei candidati di sfondo più facili nel 2017. I modelli a uno stadio attuali eguagliano o superano l'accuratezza dei modelli a due stadi con una latenza molto inferiore; inoltre, una singola rete è più semplice da esportare su hardware edge, perciò oggi i modelli a due stadi si trovano soprattutto come baseline di ricerca e in librerie come Detectron2. auto_annotate di Ultralytics applica la stessa suddivisione proponi-poi-perfeziona con due modelli per l'annotazione dei dati: un rilevatore YOLO26 propone i riquadri e il Segment Anything Model (SAM) di Meta, guidato da ciascun riquadro, segmenta l'oggetto al suo interno per generare le etichette di segmentazione.
Applicazioni nel mondo reale#
- Diagnostica per immagini: Le varianti di Mask R-CNN rilevano e contornano singole cellule, nuclei e lesioni in immagini microscopiche e scansioni TC, dove ogni istanza richiede una propria maschera per il conteggio e la misurazione.
- Analisi del layout dei documenti: Il benchmark PubLayNet, composto da oltre 360.000 immagini di pagine, è stato usato per addestrare modelli Faster R-CNN e Mask R-CNN a individuare blocchi di testo, titoli, elenchi, tabelle e figure prima del riconoscimento del testo.
- Immagini aeree: Oriented R-CNN estende l'RPN per proporre regioni ruotate, così il secondo stadio restituisce riquadri di delimitazione orientati per navi, aerei e veicoli nel dataset DOTA.










