3D Object Detection
Il rilevamento di oggetti 3D colloca un riquadro 3D attorno a ciascun oggetto, indicandone posizione, dimensioni e orientamento in metri. Sensori, metodi, benchmark e un esempio di riquadro.
Il rilevamento 3D degli oggetti individua gli oggetti in una scena e colloca attorno a ciascuno un riquadro di delimitazione 3D, o cuboide, indicandone posizione, dimensioni e orientamento in unità reali. Il rilevamento degli oggetti 2D standard restituisce un riquadro di delimitazione nelle coordinate dei pixel dell'immagine. Un rilevatore 3D indica a quanti metri si trova un'auto, quanto è lunga e larga e in che direzione è rivolta: informazioni necessarie alle auto a guida autonoma, ai robot di consegna e ai bracci robotici da magazzino per pianificare i movimenti ed evitare collisioni.
Come si descrive un riquadro 3D#
La maggior parte dei rilevatori 3D restituisce sette numeri per oggetto, oltre a una classe e a un punteggio di confidenza: il centro del riquadro (x, y, z), lunghezza, larghezza e altezza, e l'angolo di orientamento, o angolo di imbardata, attorno all'asse verticale. Si assume che rollio e beccheggio siano zero, perché auto, persone e la maggior parte degli oggetti da interni sono in posizione eretta; i benchmark di guida come nuScenes richiedono anche la velocità di ogni oggetto. Convertire i sette numeri negli otto vertici è il primo passaggio per disegnare un riquadro su un'immagine o calcolarne la sovrapposizione con un altro.
import numpy as np
# Un riquadro 3D: centro (m), dimensioni (m) e orientamento attorno all'asse z verticale (rad)
center = np.array([12.0, -3.0, 0.9])
length, width, height = 4.5, 1.9, 1.6
yaw = np.pi / 6
# Gli otto vertici del riquadro prima della rotazione, relativi al centro
signs = np.array([[sx, sy, sz] for sx in (1, -1) for sy in (1, -1) for sz in (1, -1)])
corners = signs * [length / 2, width / 2, height / 2]
# Ruota in base all'angolo di orientamento, poi trasla il riquadro al centro
c, s = np.cos(yaw), np.sin(yaw)
rotation = np.array([[c, -s, 0], [s, c, 0], [0, 0, 1]])
corners = corners @ rotation.T + center
print(corners.round(2))Le otto righe stampate sono i vertici di un riquadro delle dimensioni di un'auto, centrato a 12 metri lungo l'asse x e ruotato di 30 gradi: quattro a z = 1,7 m per il tetto e quattro a z = 0,1 m per il pavimento.
Sensori e metodi#
Il rilevamento 3D richiede informazioni sulla profondità, ottenute dai sistemi tramite tre tipi di input. Gli scanner lidar misurano direttamente la distanza con impulsi laser e restituiscono una nuvola di punti della scena. I rilevatori lidar dividono lo spazio in voxel 3D, raggruppano i punti in colonne verticali come fa PointPillars e li elaborano come un'immagine dall'alto con rapide convoluzioni 2D, oppure operano direttamente sui punti grezzi.
I metodi basati su telecamera deducono la profondità dalle immagini. Con una sola telecamera la profondità è ambigua, perché un oggetto piccolo e vicino può apparire come uno grande e lontano; perciò i rilevatori monoculari apprendono la profondità dalle dimensioni degli oggetti e dal contesto della scena. I sistemi con più telecamere come BEVFormer proiettano le caratteristiche di diverse viste circostanti in un'unica griglia condivisa dall'alto. Le pipeline basate su telecamera possono anche abbinare i riquadri 2D di YOLO26 a un modello di profondità YOLO26, che prevede una mappa di profondità in metri per ogni pixel a partire da una singola immagine RGB, per stimare la distanza di ciascun oggetto rilevato.
La fusione dei sensori combina la geometria precisa del lidar con il colore e la trama delle immagini delle telecamere. BEVFusion unisce le caratteristiche di entrambi i sensori in uno spazio condiviso visto dall'alto.
Rilevamento 3D e compiti correlati#
- Stima della profondità: prevede una distanza per ogni pixel, senza suddividere la scena in oggetti o classi.
- Riquadri di delimitazione orientati: riquadri 2D ruotati sul piano dell'immagine, spesso usati nelle immagini aeree, dove ricordano l'impronta dall'alto di un riquadro 3D.
- Ricostruzione 3D: ricostruisce la geometria completa di una scena, per esempio sotto forma di mesh o nuvola di punti, senza etichettare i singoli oggetti.
Applicazioni e sfide#
I veicoli autonomi usano il rilevamento 3D per localizzare le auto, i pedoni e i ciclisti circostanti e prevederne i percorsi; i robot per magazzini e logistica lo usano per determinare la posizione e l'orientamento dei pacchi prima di afferrarli. I casi difficili includono gli oggetti piccoli e distanti, che ricevono pochi punti lidar; gli oggetti parzialmente occlusi; gli errori di profondità monoculare, che aumentano con la distanza; e il costo dell'annotazione, perché un annotatore deve adattare in 3D ogni cuboide di addestramento.
Valutazione dei rilevatori 3D#
La valutazione estende alla terza dimensione l'intersezione sull'unione (IoU) e la precisione media (mAP). Il benchmark 3D di KITTI richiede un IoU 3D di 0,7 per le auto e 0,5 per pedoni e ciclisti; dal 2019 calcola la media della precisione in 40 punti di richiamo anziché 11. Il benchmark nuScenes abbina le previsioni alle etichette in base alla distanza tra i rispettivi centri sul piano del terreno e calcola la media dell'AP sulle soglie di 0,5, 1, 2 e 4 metri. Il punteggio di rilevamento nuScenes (NDS) combina questa mAP, con peso 5, con cinque punteggi derivati dagli errori di traslazione, scala, orientamento, velocità e attributi, ciascuno con peso 1.










