Scopri come i modelli di diffusione utilizzano l'IA generativa per creare dati ad alta fedeltà. Impara oggi stesso a migliorare l'addestramento Ultralytics con dati sintetici realistici.
I modelli di diffusione sono una classe di algoritmi di IA generativa che imparano a creare nuovi campioni di dati invertendo un processo graduale di aggiunta di rumore. A differenza dei modelli discriminativi tradizionali utilizzati per attività come il rilevamento o la classificazione di oggetti, che prevedono etichette dai dati, i modelli di diffusione si concentrano sulla generazione di contenuti ad alta fedeltà, in particolare immagini, audio e video, che imitano da vicino le proprietà statistiche dei dati del mondo reale. Sono rapidamente diventati la soluzione all'avanguardia per la sintesi di immagini ad alta risoluzione, superando i precedenti leader come le Generative Adversarial Networks (GAN) grazie alla loro stabilità di addestramento e alla capacità di generare output diversificati.
Il meccanismo centrale di un modello di diffusione si basa sulla termodinamica di non equilibrio. Il processo di addestramento prevede due fasi distinte: il processo diretto (diffusione) e il processo inverso (denoising).
Questo perfezionamento iterativo consente un controllo eccezionale sui dettagli e sulla trama, un vantaggio significativo rispetto ai metodi di generazione in un unico passaggio.
I modelli di diffusione hanno superato il campo della ricerca accademica per diventare strumenti pratici e di livello industriale in vari settori.
È utile distinguere i modelli di diffusione dalle altre architetture generative:
Sebbene l'addestramento di un modello di diffusione da zero richieda una notevole potenza di calcolo, gli ingegneri possono sfruttare modelli pre-addestrati o integrarli nei flussi di lavoro insieme a rilevatori efficienti. Ad esempio, è possibile utilizzare un modello di diffusione per generare variazioni di sfondo per un set di dati e quindi utilizzare Ultralytics per annotare e addestrare un modello di rilevamento su quei dati migliorati.
Di seguito è riportato un esempio concettuale che utilizza torch per simulare un semplice passo di diffusione in avanti (aggiungendo rumore),
che è alla base dell'addestramento di questi sistemi.
import torch
def add_noise(image_tensor, noise_level=0.1):
"""Simulates a single step of the forward diffusion process by adding Gaussian noise."""
# Generate Gaussian noise with the same shape as the input image
noise = torch.randn_like(image_tensor) * noise_level
# Add noise to the original image
noisy_image = image_tensor + noise
# Clamp values to ensure they remain valid image data (e.g., 0.0 to 1.0)
return torch.clamp(noisy_image, 0.0, 1.0)
# Create a dummy image tensor (3 channels, 64x64 pixels)
dummy_image = torch.rand(1, 3, 64, 64)
noisy_result = add_noise(dummy_image)
print(f"Original shape: {dummy_image.shape}, Noisy shape: {noisy_result.shape}")
Il settore sta evolvendo rapidamente verso modelli di diffusione latente (LDM), che operano in uno spazio latente compresso piuttosto che in uno spazio pixel per ridurre i costi computazionali. Questa efficienza rende possibile l'esecuzione di potenti modelli generativi su hardware di consumo. Con il progredire della ricerca, ci aspettiamo una più stretta integrazione tra input generativi e compiti discriminativi , come l'utilizzo di scenari generati dalla diffusione per convalidare la sicurezza dei veicoli autonomi o migliorare l' analisi delle immagini mediche simulando patologie rare .