ViG GNN: La Visione a Grafo che Rivela i Segreti Nascosti nei Compositi Metallici!
Ciao a tutti! Oggi voglio parlarvi di un’avventura affascinante nel mondo della scienza dei materiali e dell’intelligenza artificiale. Immaginate di avere un materiale super complesso, come un composito metallico Al-Si rinforzato, e di voler capire esattamente com’è fatto dentro, voxel per voxel (un voxel è come un pixel, ma in 3D!). Tradizionalmente, si usa la Tomografia Computerizzata a Raggi X (XCT), che ci dà delle immagini 3D incredibili. Ma poi arriva il difficile: distinguere le varie “fasi” del materiale, cioè i diversi componenti. Spesso, materiali diversi hanno una risposta simile ai raggi X, apparendo con livelli di grigio quasi identici nelle immagini. Separarli manualmente? Un lavoro certosino, lungo e faticoso!
Ecco dove entriamo in gioco noi, con un’idea un po’ diversa: usare le Reti Neurali a Grafo per la Visione (Vision Graph Neural Networks – ViG). Invece di vedere l’immagine 3D come una griglia di pixel o una sequenza di patch, noi la trattiamo come un grafo: ogni voxel è un nodo, connesso ai suoi vicini. Perché? Perché pensiamo che la struttura stessa delle connessioni tra voxel possa aiutarci a capire meglio la forma, anche quando i colori (livelli di grigio) non bastano.
La Sfida della Segmentazione nei Compositi Complessi
Il materiale su cui abbiamo lavorato è un osso duro: un composito a matrice metallica AlSi12CuMgNi, rinforzato con fibre corte di Al₂O₃ (allumina) e particelle di SiC (carburo di silicio). Non solo, ci sono anche inclusioni intermetalliche e una rete di silicio eutettico. Insomma, un bel mix! Il problema, come accennato, è che alcune di queste fasi hanno coefficienti di attenuazione dei raggi X molto simili. Questo significa che nelle ricostruzioni XCT, i loro livelli di grigio possono essere quasi indistinguibili.
Guardare solo una fetta 2D non basta. La forma tridimensionale delle fasi diventa cruciale per distinguerle. Per questo, segmentare l’intero volume 3D è l’approccio più efficace. Le reti neurali convoluzionali (CNN), sia 2D che 3D, sono state lo standard finora, prese in prestito dall’imaging medico. Ma noi abbiamo pensato: e se sfruttassimo la flessibilità dei grafi?
Perché le GNN? E Cos’è Questa Architettura ViG?
Le Reti Neurali a Grafo (GNN) sono fantastiche perché processano dati strutturati come grafi. Nel nostro caso, il volume XCT diventa un grafo dove i voxel sono nodi e le connessioni rappresentano la vicinanza spaziale. Un vantaggio chiave è che le convoluzioni sui grafi sono “equivarianti” non solo rispetto alla traslazione (come le CNN), ma anche alla rotazione del grafo e alla permutazione dei nodi. Questo è perfetto per il nostro compito, perché la classificazione di un voxel non dovrebbe dipendere dal suo orientamento spaziale! E, ciliegina sulla torta, questa invarianza intrinseca ci permette di ridurre il numero di parametri da addestrare rispetto alle CNN tradizionali.
Però, c’è un tranello comune nelle GNN profonde: l’over-smoothing. In pratica, man mano che l’informazione si propaga attraverso molti strati, le caratteristiche dei nodi tendono a diventare troppo simili, perdendo dettagli utili. Per evitare questo, ci siamo ispirati a un’architettura chiamata Vision GNN (ViG). Un blocco ViG combina strati convoluzionali a grafo (nel nostro caso, GIN e GraphSage) con moduli Feed-Forward Network (FFN). Questi FFN interrompono il flusso di “messaggi” tra nodi vicini, proiettando le caratteristiche in uno spazio più ampio e aiutando a preservare le differenze. La nostra architettura ViG usa due di questi blocchi, con l’aggiunta di uno strato CNN 3D all’inizio per estrarre feature più ricche dai livelli di grigio iniziali.
Un altro aspetto tecnico interessante: abbiamo implementato le convoluzioni GNN (GIN e GraphSage) usando la moltiplicazione di matrici sparse. Questo rende l’aggregazione dei messaggi molto più efficiente in termini di memoria e velocità rispetto alla nostra precedente GNN più semplice.
Addestramento: Dati Sintetici e il Tocco Magico del Fine-Tuning
Addestrare modelli di deep learning supervisionati richiede tantissimi dati etichettati (cioè, dove sappiamo già a quale fase appartiene ogni voxel). Ottenerli manualmente per volumi 3D è improponibile. La soluzione? Dati sintetici! Abbiamo usato una libreria sviluppata internamente (BAM SynthMAT) per generare volumi 3D artificiali che imitassero il più possibile il nostro composito reale, sia nella struttura che nei livelli di grigio. Abbiamo creato 8 di questi volumi (512times 512times 512), usandone 7 per l’addestramento e la validazione, e uno per il test.
Ma i dati sintetici non sono mai perfetti. Per rendere il nostro modello ViG più robusto e capace di generalizzare ai dati sperimentali reali, abbiamo applicato delle augmentation ai dati sintetici durante l’addestramento: variazioni casuali di contrasto e luminosità, aggiunta di rumore gaussiano e sfocatura spaziale 3D. Questo “rende la vita difficile” al modello durante l’allenamento, costringendolo a imparare caratteristiche più fondamentali.
Dopo aver addestrato il modello ViG sui dati sintetici aumentati, abbiamo fatto un passo cruciale: il fine-tuning su dati sperimentali. Le GNN sono note per la loro abilità nell’apprendimento semi-supervisionato: possono sfruttare la struttura del grafo per classificare nodi non etichettati basandosi su pochi nodi etichettati. Abbiamo preso un piccolo sotto-volume sperimentale ((128times 128times 128)), l’abbiamo segmentato con il modello pre-addestrato, abbiamo corretto manualmente gli errori più evidenti e poi abbiamo ri-addestrato (fine-tuned) il modello su questo piccolo set di dati reali “corretti”. Questo aiuta a colmare il divario tra il mondo sintetico e quello reale. Per massimizzare le performance, abbiamo usato dati sperimentali “condizionati” con un metodo chiamato BAM SynthCOND, che li rende più simili ai dati sintetici su cui il modello è stato originariamente addestrato.
Risultati: Cosa Abbiamo Scoperto? ViG vs U-Net
Come abbiamo valutato le prestazioni? Usando il Dice score (o F1 score), una metrica comune per la segmentazione che misura la sovrapposizione tra la nostra segmentazione e la verità (le etichette manuali).
Ecco i punti salienti:
- Performance su dati sintetici vs reali: Come previsto, il modello performa meglio sui dati sintetici di test rispetto a quelli sperimentali reali. Questo è normale, perché i dati sintetici, per quanto buoni, non catturano tutta la complessità del mondo reale.
- ViG vs GNN Semplice: La nostra nuova architettura ViG, addestrata sui dati aumentati, ha migliorato significativamente la segmentazione rispetto al nostro precedente modello GNN più semplice. In particolare, è diventata molto più brava a distinguere tra Silicio eutettico e particelle di SiC, un compito notoriamente difficile.
- ViG vs U-Net (lo standard CNN): Qui le cose si fanno interessanti. Prima del fine-tuning, la U-Net sviluppata in lavori precedenti era leggermente migliore, specialmente nel segmentare le fibre (forse la nostra connessione a soli 6 vicini nel grafo non è ottimale per strutture allungate?). MA, dopo il fine-tuning sul piccolo set di dati sperimentali, la nostra ViG ha mostrato miglioramenti notevoli (specialmente su fibre e intermetallici), mentre la performance della U-Net è rimasta uguale o addirittura peggiorata! Questo suggerisce che le GNN potrebbero essere più adattabili e capaci di generalizzare meglio da piccole quantità di dati reali.
- Efficienza: Il vantaggio più grande della nostra ViG? Il numero di parametri addestrabili! La nostra ViG ha quasi la metà dei parametri della U-Net confrontata. Anche se attualmente i tempi di addestramento sono ancora un po’ più lunghi per la ViG (le librerie GNN sono meno ottimizzate di quelle CNN), il minor numero di parametri promette grandi vantaggi computazionali in futuro. Inoltre, grazie all’implementazione con matrici sparse, la ViG è molto più efficiente in termini di memoria e tempo rispetto alla nostra GNN precedente.
Nonostante una precisione (misurata dal Dice score) a volte inferiore alla U-Net su alcuni aspetti prima del fine-tuning, i modelli GNN, e in particolare la nostra ViG, dimostrano una corretta comprensione “semantica” delle microstrutture, catturando bene la geometria degli oggetti.
Prossimi Passi e Conclusioni
Questo lavoro dimostra che le architetture Vision GNN sono uno strumento promettente per la segmentazione di microstrutture complesse in dati XCT 3D. La capacità di apprendere dalla struttura del grafo, unita a un numero ridotto di parametri e a una sorprendente adattabilità durante il fine-tuning su dati reali, le rende molto interessanti.
Certo, c’è ancora lavoro da fare. Vogliamo migliorare ulteriormente la segmentazione sui dati sperimentali, magari generando dati sintetici ancora più realistici (forse con GAN o modelli diffusivi?). Stiamo anche pensando di implementare architetture ibride o più complesse come le Graph U-Net per confrontare più direttamente il potenziale dei grafi rispetto alle convoluzioni standard su questo tipo di task.
Insomma, esplorare l’interno dei materiali con l’aiuto delle GNN è un viaggio appena iniziato, ma i primi risultati sono davvero incoraggianti! È affascinante vedere come queste tecniche di intelligenza artificiale possano “vedere” e interpretare strutture così complesse in modi nuovi ed efficienti.
Fonte: Springer