Scene Graph
Un grafo della scena è una rappresentazione visiva di oggetti, attributi e relazioni che supporta il ragionamento, la ricerca di immagini e la robotica.
Un grafo della scena è una rappresentazione strutturata di una scena visiva in cui i nodi rappresentano gli oggetti, gli attributi ne descrivono le proprietà e gli archi etichettati descrivono le relazioni tra gli oggetti. Trasforma un'immagine in fatti collegati: quali oggetti compaiono, che caratteristiche hanno e come interagiscono. Nella visione artificiale, questa struttura supporta il ragionamento su una scena, andando oltre il riconoscimento dei singoli oggetti.
Justin Johnson, Ranjay Krishna e i loro colleghi hanno introdotto la moderna formulazione basata sulle immagini nel loro lavoro del 2015 sulla ricerca di immagini tramite grafi della scena. La loro rappresentazione includeva oggetti come un uomo e una barca, il colore bianco della barca e la relazione «uomo in piedi sulla barca», consentendo ricerche che specificano tanto le relazioni quanto le categorie degli oggetti.
Oggetti, attributi e relazioni#
Ogni nodo identifica un'istanza di oggetto. Due cavalli nella stessa immagine ricevono identità separate anche se le etichette delle loro categorie coincidono. Un riquadro di delimitazione individua ogni istanza, fornendo un ancoraggio: un collegamento tra un oggetto simbolico e la regione corrispondente nell'immagine. Gli attributi associano proprietà come il colore o il materiale a quell'istanza. Le relazioni collegano due istanze tramite un predicato, l'etichetta che descrive il loro legame. La tripla soggetto–predicato–oggetto risultante esprime un fatto relazionale.
Il dataset Visual Genome, sviluppato da Ranjay Krishna e dai suoi collaboratori, contiene 108.077 immagini con annotazioni visive strutturate. I grafi della scena sono forme specifiche per le immagini di un grafo della conoscenza. Le loro relazioni semantiche consentono più collegamenti tra gli oggetti e componenti non connessi, quindi un grafo della scena relativo a un'immagine non richiede un nodo radice.
L'esempio di grafo della scena del driver Python di Visual Genome include «il cavallo indossa una briglia» e «la finestra è accanto alla porta». Queste annotazioni possono essere rappresentate con un grafo orientato usando NetworkX, installato con pip install networkx:
import networkx as nx
graph = nx.MultiDiGraph()
graph.add_node("horse", label="horse")
graph.add_node("bridle", label="bridle")
graph.add_node("window", label="window")
graph.add_node("door", label="door")
graph.add_edge("horse", "bridle", predicate="is wearing")
graph.add_edge("window", "door", predicate="is next to")
for subject, obj, relation in graph.edges(data=True):
print(f"{subject} -> {relation['predicate']} -> {obj}")L'output espone due fatti relazionali interrogabili, ciascuno con il proprio predicato associato a un arco orientato.
Come funziona la generazione di grafi della scena#
La generazione di grafi della scena, abbreviata SGG, predice questa rappresentazione a partire da un input visivo. Una pipeline tipica combina rilevamento di oggetti, estrazione di caratteristiche e classificazione delle relazioni. Le caratteristiche degli oggetti descrivono le singole regioni; le caratteristiche a coppie descrivono le interazioni candidate. Modelli di contesto come MotifNet sfruttano gli oggetti circostanti per contribuire a predire le relazioni. Anche le reti neurali a grafo possono scambiare informazioni tra oggetti connessi, producendo embedding che codificano il contesto relazionale.
Ultralytics YOLO YOLO26 fornisce le istanze degli oggetti per questa pipeline tramite i suoi risultati di rilevamento: riquadri, etichette delle classi e punteggi di confidenza. Un modello di relazioni a valle usa queste istanze per predire archi come «indossa» o «è in piedi su».
Applicazioni nel ragionamento visivo e nella robotica#
Le relazioni esplicite supportano le attività che richiedono di capire come si combinano gli oggetti:
- Risposta a domande visive: GQA usa grafi della scena derivati da Visual Genome per generare domande e programmi di ragionamento funzionali. Esplorare le relazioni tra gli oggetti supporta il ragionamento visivo, anche per identificare gli oggetti tramite i loro attributi e collegamenti.
- Robotica: Kimera crea grafi dinamici 3D della scena a partire da input visuo-inerziali. La sua rappresentazione a livelli collega oggetti, persone, stanze ed edifici, supportando la mappatura semantica e la pianificazione gerarchica dei percorsi. Le coordinate spaziali e il tempo estendono la rappresentazione oltre una singola immagine.
- Generazione di immagini: Il sistema di Justin Johnson, Agrim Gupta e Li Fei-Fei per la generazione di immagini a partire da grafi della scena converte i grafi in disposizioni degli oggetti, predice riquadri e maschere di segmentazione e genera un'immagine a partire da tale disposizione. Il grafo specifica sia i contenuti della scena sia le relazioni.
Valutazione ed errori nelle relazioni#
La valutazione dei grafi della scena distingue comunemente tre attività. La classificazione dei predicati fornisce i riquadri e le etichette degli oggetti e valuta le relazioni predette. La classificazione dei grafi della scena fornisce i riquadri e richiede le etichette degli oggetti e delle relazioni. Il rilevamento dei grafi della scena richiede il grafo completo a partire dall'immagine. Questa distinzione permette di individuare se gli errori derivano dalla localizzazione, dal riconoscimento degli oggetti o dalla predizione delle relazioni.
La frequenza delle relazioni crea una distorsione del dataset: i predicati frequenti dominano le predizioni, mentre le relazioni rare e informative vengono ignorate. Recall@K misura la frazione di relazioni annotate recuperate tra le K predizioni con il punteggio più alto. Recall medio@K calcola il richiamo separatamente per ogni categoria di predicato e fa la media di questi valori, attribuendo ai predicati rari lo stesso peso a livello di categoria dei predicati frequenti.










