Scene Flow
Scopri come lo scene flow stima il movimento 3D tra i fotogrammi, differisce dall'optical flow e dalla stima della profondità, e supporta la guida autonoma, la robotica e i flussi di lavoro di visione di YOLO26.
Il flusso di scena è il campo di moto tridimensionale di una scena dinamica nel tempo. Descrive come i punti visibili si muovono nello spazio 3D del mondo reale tra i fotogrammi, inclusi i movimenti laterali, verticali e di avvicinamento o allontanamento rispetto alla telecamera. Nella visione artificiale, il flusso di scena aiuta i sistemi a comprendere non solo ciò che sembra muoversi in un'immagine, ma anche come cambia effettivamente la geometria circostante.
Come il flusso di scena rappresenta il movimento 3D#
Una stima del flusso di scena assegna un vettore di spostamento o velocità 3D a ciascun punto osservato della scena. Ad esempio, se un pedone cammina lungo una strada avvicinandosi a una telecamera, i vettori corrispondenti descrivono sia il movimento laterale sia la distanza decrescente rispetto alla telecamera.
Questo differisce dal flusso ottico, che rappresenta il movimento apparente dei pixel attraverso il piano bidimensionale dell'immagine. Come spiega il progetto Carnegie Mellon Scene Flow, il flusso ottico può essere inteso come la proiezione del flusso di scena 3D sull'immagine di una telecamera. Di conseguenza, due punti possono avere un movimento nell'immagine simile pur muovendosi in modo diverso in profondità.
Il flusso di scena denso stima il movimento per la maggior parte dei punti visibili, mentre il flusso di scena rado copre caratteristiche selezionate, punti tracciati o restituzioni LiDAR. L'output denso fornisce dettagli geometrici più ricchi ma richiede maggiore calcolo e una corrispondenza affidabile tra i fotogrammi.
Flusso di scena e concetti di visione correlati#
Il flusso di scena combina la struttura spaziale con il movimento temporale, posizionandosi tra diverse attività correlate:
- Stima del flusso ottico con OpenCV: Stima lo spostamento dei pixel in orizzontale e verticale. Non è in grado di determinare autonomamente se un oggetto si è mosso lungo la profondità o se è stata la telecamera a causare il movimento apparente.
- Stima della profondità: Determina la distanza delle superfici dalla telecamera, solitamente per un singolo fotogramma. Il flusso di scena descrive inoltre come tali posizioni 3D cambiano nel tempo.
- Visione stereo: Utilizza pixel corrispondenti da telecamere sincronizzate per recuperare la profondità. Il flusso di lavoro per la profondità stereo OpenCV spiega come la disparità tra le viste supporti la ricostruzione 3D.
- Tracciamento degli oggetti: Mantiene le identità degli oggetti tra i fotogrammi, comunemente utilizzando riquadri di delimitazione o maschere. Il flusso di scena stima invece il movimento a livello di punto o di pixel e può rappresentare diversi movimenti all'interno di un unico oggetto deformabile.
- Movimento di nuvole di punti: I sistemi LiDAR e RGB-D possono stimare il flusso di scena direttamente tra insiemi di punti 3D. La guida Open3D per le nuvole di punti introduce la rappresentazione geometrica utilizzata da molti di questi flussi di lavoro.
Il flusso di scena dipende anche dalla geometria della telecamera. Una calibrazione accurata della telecamera OpenCV aiuta a separare il movimento effettivo della scena dai cambiamenti causati dalla rotazione, dalla traslazione o dalla distorsione della lente della telecamera.
Applicazioni nel mondo reale#
-
Guida autonoma: Un sistema di percezione può stimare se un veicolo vicino sta cambiando corsia, si sta avvicinando rapidamente o si sta muovendo insieme al traffico. A differenza del solo movimento 2D, il flusso di scena supporta il ragionamento sul tempo di collisione poiché include il movimento lungo l'asse della profondità. Può integrare i componenti di rilevamento, tracciamento e profondità nelle soluzioni di visione artificiale per il settore automobilistico. Il benchmark KITTI per il flusso di scena illustra la valutazione su scene stradali contenenti il movimento della telecamera e oggetti che si muovono indipendentemente, mentre la guida sulla sicurezza dei veicoli automatizzati della NHTSA fornisce un contesto più ampio per i sistemi di percezione incentrati sulla sicurezza.
-
Robotica: Un robot mobile può utilizzare il flusso di scena per distinguere uno scaffale fisso da un operatore in movimento, stimare la traiettoria 3D di un ostacolo e aggiornare il proprio percorso prima che si verifichi una collisione. Nelle soluzioni di visione per la robotica, queste informazioni possono essere combinate con telecamere, sensori di profondità e LiDAR. La documentazione sui messaggi dei sensori ROS definisce interfacce comuni per lo scambio di immagini, informazioni sulla telecamera e nuvole di punti tra componenti robotici.
Sfide di stima e dati#
Il flusso di scena può essere derivato da video stereo, telecamere RGB-D, sequenze LiDAR o video monoculari con indizi appresi di profondità e movimento. I sensori stereo e a profondità attiva forniscono misurazioni geometriche più solide, mentre i sistemi monoculari devono inferire la scala e risolvere le ambiguità dal contesto visivo.
I casi di errore comuni includono occlusione, sfocatura da movimento, superfici riflettenti, regioni prive di texture, strutture sottili, illuminazione mutevole e movimento rapido tra i fotogrammi. Il movimento della telecamera crea un'ulteriore sfida poiché il sistema deve separare l'egomovimento dagli oggetti che si muovono indipendentemente. Gli errori possono produrre traiettorie 3D errate, portando i sistemi di navigazione o previsione delle collisioni a valle a valutare erroneamente velocità e distanza.
I dati di training possono includere fotogrammi RGB, profondità o disparità, flusso ottico, segmentazione e parametri della telecamera. I dataset Freiburg Scene Flow dimostrano come queste etichette complementari possano descrivere insieme geometria e movimento.
Flusso di lavoro pratico#
Ultralytics YOLO26 può fornire il componente di profondità di un flusso di lavoro di flusso di scena tramite la sua documentata attività di stima della profondità monoculare. Il seguente esempio produce una mappa di profondità densa per un singolo fotogramma:
from ultralytics import YOLO
# Estimate the scene's per-pixel 3D structure.
model = YOLO("yolo26n-depth.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
result.save(filename="depth_result.jpg")
print(result.depth.data.shape)Questo flusso di lavoro YOLO26 non calcola autonomamente il flusso di scena. Fornisce la profondità per pixel, che un flusso di lavoro completo può combinare con fotogrammi consecutivi, corrispondenze temporali e pose della telecamera calibrate per stimare lo spostamento 3D. In pratica, i team dovrebbero convalidare ciascun componente separatamente prima di valutare il campo di moto completo, in particolare attorno alle occlusioni e ai confini di profondità.






