Introduzione alla generazione di immagini di intelligenza artificiale

Microsoft Foundry su Windows supporta le funzionalità di generazione di immagini tramite intelligenza artificiale, tramite un set di API alimentate da Stable Diffusion (modello di intelligenza artificiale open source usato per l'elaborazione di immagini) incluse in SDK per app di Windows. Puoi usare queste API nelle tue app di Windows per creare, trasformare e migliorare immagini e foto usando prompt del linguaggio naturale e modelli generativi sul dispositivo.

La generazione di immagini di intelligenza artificiale è ottimizzata per l'efficienza e le prestazioni nei PC Windows Copilot+.

Per informazioni dettagliate sull'API, vedere Riferimento API per le funzionalità di creazione dell'immagine di intelligenza artificiale.

Importante

Requisiti del manifesto del pacchetto: per usare le API di creazione dell'immagine di Intelligenza artificiale di Windows, l'app deve essere inserita in un pacchetto MSIX con la systemAIModels funzionalità dichiarata in Package.appxmanifest. Assicurarsi inoltre che l'attributo del MaxVersionTested manifesto sia impostato su una versione di Windows recente (ad esempio, 10.0.26226.0 o versioni successive) per supportare correttamente le funzionalità di Intelligenza artificiale Windows. L'uso di valori meno recenti può causare errori "Non dichiarati dall'app" durante il caricamento del modello.

<Dependencies>
  <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
  <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
</Dependencies>

Prerequisiti

Hardware supportato

La generazione di immagini di intelligenza artificiale viene eseguita nell'hardware seguente:

Hardware Condizione dettagli
NPU (Copilot+ PC) ✅ Disponibile L'unico percorso hardware supportato. Vedere Copilot+ PCs developer guide.
GPU (Unità di Elaborazione Grafica) ❌ Non supportato Non disponibile nella GPU.
CPU (unità centrale di elaborazione) ❌ Non supportato Non disponibile nella CPU.

Disponibilità e download del modello

Il modello di generazione di immagini basato sull'intelligenza artificiale è facoltativo su un Copilot+ PC — non è preinstallato per impostazione predefinita, perché le dimensioni dell'installazione sono di diversi gigabyte. La prima volta che l'app chiama EnsureReadyAsync, il modello viene scaricato in background tramite Windows Update. Gli utenti finali possono anche rimuovere il modello in un secondo momento per recuperare spazio su disco.

Questo comportamento corrisponde al ciclo di vita del modello adottato da altri modelli di IA opzionali di Windows di grandi dimensioni: l'app deve gestire esplicitamente il caso del modello "non ancora installato", anziché dare per scontato che il modello sia presente.

Poiché il modello di generazione di immagini di intelligenza artificiale è di grandi dimensioni e non è presente per impostazione predefinita, visualizzare una finestra di dialogo di conferma prima di chiamare EnsureReadyAsync in modo che l'utente possa fornire il consenso sia al costo di archiviazione che al download in background. Modello tipico:

  1. Chiama GetReadyState e dirama il flusso in base al valore restituito di AIFeatureReadyState:

    • Ready — il modello è installato; Procedere.
    • NotReady oppure EnsureNeeded : mostra la finestra di dialogo di consenso (vedere di seguito), quindi chiama EnsureReadyAsync solo se l'utente accetta.
    • NotSupportedOnCurrentSystem: il dispositivo non è un Copilot+ PC o non soddisfa i requisiti in Hardware supportato. Offrire un'esperienza di fallback e, se appropriato, presentare i requisiti hardware in modo che l'utente possa prendere una decisione di aggiornamento informata.
  2. Nella finestra di dialogo di consenso spiegare:

    • Verrà scaricato un modello di generazione di immagini facoltativo (diversi GB di spazio di archiviazione).
    • Il download avviene in background tramite Windows Update.
    • L'utente può monitorare lo stato di avanzamento del download in Settings>Windows Update.
    • L'utente può successivamente rimuovere il modello in Impostazioni Componenti>di intelligenza artificiale di> se non lo vuole più.

    Suggerimento

    Nelle stringhe rivolte all'utente (testo della finestra di dialogo, messaggi di stato), fare riferimento al modello come "modello di generazione di immagini" o "modello di intelligenza artificiale facoltativo" anziché "SDXL" o "Diffusione stabile". La maggior parte degli utenti finali non ha familiarità con i nomi dei modelli sottostanti e i termini generici comunicano più chiaramente lo scopo.

  3. Mentre EnsureReadyAsync è in corso, mostra un indicatore di stato nella tua app. Vedere Introduzione alle API di intelligenza artificiale Windows per il modello di caricamento dell'interfaccia utente.

Dopo l'installazione del modello

Il modello rimane sul dispositivo fino a quando l'utente non lo rimuove. Gli utenti gestiscono i modelli installati, incluso il modello di generazione di immagini di intelligenza artificiale, in Impostazioni>Componenti di intelligenza artificiale del>. Se in un secondo momento l'utente rimuove il modello, la chiamata successiva dell'app a GetReadyState restituisce NotReady o EnsureNeeded e il flusso di consenso e download deve essere ripetuto.

Cosa posso fare con la generazione di immagini di intelligenza artificiale?

Usare generazione di immagini di intelligenza artificiale per trasformare i prompt in artefatti visivi. Le funzionalità supportate includono:

  • Da testo a immagine

    Genera immagini da prompt di testo descrittivi. Utile per illustrazioni, progettazione, sfondi personalizzati e visualizzazione concettuale.

  • Da immagine a immagine

    Trasformare un'immagine esistente in base alle linee guida testuali mantenendo al tempo stesso la struttura. Utile per applicare stili, tema e altre varianti.

  • Riempimento magico

    Riempire le aree mascherate di un'immagine con contenuto generato dall'intelligenza artificiale. Utile per la rimozione di oggetti, il ripristino delle aree e la modifica intuitiva (revisioni complesse tramite prompt di testo anziché strumenti manuali).

  • Stile libro da colorare

    Convertire le immagini in contorni semplificati che è possibile usare per un libro a colori o un'esperienza educativa simile.

  • Restyling

    Applicare stili artistici o visivi alle immagini esistenti mantenendo al tempo stesso la struttura. Utile per filtri creativi, modalità artistiche o trasformazioni a tema.

Esempi

Seguire questi passaggi di base quando si usano le API di generazione di immagini di intelligenza artificiale.

  1. Assicurarsi che il modello sia pronto usando EnsureReadyAsync.
  2. Creare un'istanza di ImageGenerator.
  3. Selezionare il flusso di lavoro di generazione appropriato (richiesta di testo, input immagine o maschera).
  4. Richiamare il metodo di generazione corrispondente.
  5. Ricevere l'output come ImageBuffer per visualizzare, modificare o salvare.

Generare un'immagine da un prompt di testo (da testo a immagine)

In questo esempio viene illustrato come generare un'immagine da una richiesta di testo. In particolare, "Un bellissimo tramonto su un lago di montagna".

using Microsoft.Windows.AI.Imaging;
using Microsoft.Graphics.Imaging;

public async Task GenerateImageFromText()
{
    // Check if models are ready
    var readyState = ImageGenerator.GetReadyState();
    if (readyState != AIFeatureReadyState.Ready)
    {
        // Download models if needed
        var result = await ImageGenerator.EnsureReadyAsync();
        if (result.Status != AIFeatureReadyResultState.Success)
        {
            Console.WriteLine("Failed to prepare models");
            return;
        }
    }

    // Create ImageGenerator instance
    using var generator = await ImageGenerator.CreateAsync();
    
    // Configure generation options
    var options = new ImageGenerationOptions
    {
        MaxInferenceSteps = 6,
        Creativity = 0.8,
        Seed = 42
    };

    // Generate image
    var result = generator.GenerateImageFromTextPrompt("A beautiful sunset over a mountain lake", options);
    
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        var imageBuffer = result.Image;
        // Use the generated image (save to file, display, etc.)
        await SaveImageBufferAsync(imageBuffer, "generated_image.png");
    }
    else
    {
        Console.WriteLine($"Image generation failed: {result.Status}");
    }
}

Trasformare uno stile di immagine (da immagine a immagine)

In questo esempio viene illustrato come trasformare una fotografia in un dipinto a olio in base a una richiesta di testo. In particolare, "stile di pittura a olio, tratti di pennello spessi, artistico".

public async Task RestyleImage()
{
    using var generator = await ImageGenerator.CreateAsync();
    
    // Load input image
    var inputImage = await LoadImageBufferAsync("photo.jpg");
    
    var options = new ImageGenerationOptions();
    var styleOptions = new ImageFromImageGenerationOptions
    {
        Style = ImageFromImageGenerationStyle.Restyle,
        ColorPreservation = 0.7f
    };

    var result = generator.GenerateImageFromImageBuffer(
        inputImage, 
        "oil painting style, thick brush strokes, artistic", 
        options, 
        styleOptions);
    
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        await SaveImageBufferAsync(result.Image, "restyled_image.png");
    }
}

Trasformare uno stile di immagine (complesso da immagine a immagine)

In questo esempio viene illustrato come trasformare una fotografia in un dipinto a olio in base a una richiesta di testo. In particolare, "Un dipinto a olio, tratti spessi pennelli, tavolozza ricca di colori, trama di tela tradizionale, illuminazione realistica, stile classico arte fine, vernice a strati, dettaglio elevato, contrasto drammatico, impasto, tela con trama".

using Microsoft.Windows.AI.Imaging;

public async Task CreateImageFromPrompt()
{
    using ImageGenerator model = await ImageGenerator.CreateAsync();

    // Using default values
    var options = new ImageGenerationOptions();

    // Set ImageFromImageGenerationOptions fields
    var imageFromImageOptions = new ImageFromImageGenerationOptions();
    imageFromImageOptions.Style = ImageFromImageGenerationStyle.Restyle;
    imageFromImageOptions.ColorPreservation = 0.5f; // range [0.0f, 1.0f]

    // Load an input image buffer
    using var inputImage = await Utils.LoadSampleImageBufferAsync("sdxl_input_horse.png");

    var textPrompt = "An oil painting, thick brush strokes, rich color palette, traditional canvas texture, realistic lighting, classical fine art style, layered paint, high detail, dramatic contrast, impasto, textured canvas";

    var result = model.GenerateImageFromImageBuffer(inputImage, textPrompt, options, imageFromImageOptions);
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        // Image generated successfully
        var imageBuffer = result.Image;
        // Process the imageBuffer as needed, e.g., save to file or display
    }
    else
    {
        // Handle error cases based on result.Status
        Console.WriteLine($"Image generation failed with status: {result.Status}");
    }
}

Riempimento magico con maschera

Questo esempio mostra come usare una maschera per riempire un'area di un'immagine. In particolare, "un'auto sportiva rossa".

public async Task FillMaskedRegion()
{
    using var generator = await ImageGenerator.CreateAsync();
    
    var inputImage = await LoadImageBufferAsync("scene.jpg");
    var maskImage = await LoadImageBufferAsync("mask.png"); // GRAY8 format
    
    var options = new ImageGenerationOptions();
    
    var result = generator.GenerateImageFromImageBufferAndMask(
        inputImage, 
        maskImage, 
        "a red sports car", 
        options);
    
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        await SaveImageBufferAsync(result.Image, "filled_image.png");
    }
}

Generare un'immagine in stile da libro da colorare

In questo esempio viene illustrato come generare un'immagine in uno stile di un libro a colori. In particolare, un "Gatto in astronave".

using Microsoft.Windows.AI.Imaging;

public async Task CreateImageFromPrompt()
{
    using ImageGenerator model = await ImageGenerator.CreateAsync();

    // Using default values
    var options = new ImageGenerationOptions();

    // Set ImageFromTextGenerationOptions fields
    var imageFromTextOptions = new ImageFromTextGenerationOptions();
    imageFromTextOptions.Style = ImageFromTextGenerationStyle.ColoringBook;

    var result = model.GenerateImageFromTextPrompt("Cat in spaceship", options, imageFromTextOptions);
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        // Image generated successfully
        var imageBuffer = result.Image;
        // Process the imageBuffer as needed, e.g., save to file or display
    }
    else
    {
        // Handle error cases based on result.Status
        Console.WriteLine($"Image generation failed with status: {result.Status}");
    }
}

Generare un'immagine usando parametri ImageGenerationOptions personalizzati

Questo esempio illustra come generare un'immagine in base a un set di filtri e restrizioni del contenuto. In particolare, un "Gatto in astronave" usando textContentFilterSeverity di Basso e imageContentFilterSeverity di Minimo.

using Microsoft.Windows.AI.Imaging;
using Microsoft.Windows.AI.ContentSafety;

public async Task CreateImageFromPromptAndCustomOptions()
{
    using ImageGenerator model = await ImageGenerator.CreateAsync();

    // Using default values
    var options = new ImageGenerationOptions();

    // Set custom ImageGenerationOptions fields
    options.MaxInferenceSteps = 6;
    options.Creativity = 0.8;
    options.Seed = 1234;
    ContentFilterOptions contentFilterOptions = new ContentFilterOptions();
    contentFilterOptions.PromptMaxAllowedSeverityLevel = TextContentFilterSeverity(SeverityLevel.Low);
    contentFilterOptions.ImageMaxAllowedSeverityLevel = ImageContentFilterSeverity(SeverityLevel.Minimium);
    options.ContentFilterOptions = contentFilterOptions;

    var result = model.GenerateImageFromTextPrompt("Cat in spaceship", options);
    if (result.Status == ImageGeneratorResultStatus.Success)
    {
        // Image generated successfully
        var imageBuffer = result.Image;
        // Process the imageBuffer as needed, e.g., save to file or display
    }
    else
    {
        // Handle error cases based on result.Status
        Console.WriteLine($"Image generation failed with status: {result.Status}");
    }
}

Intelligenza artificiale responsabile

Seguire le raccomandazioni di intelligenza artificiale responsabili, inclusa la trasparenza e l'attendibilità degli utenti, quando si usano queste API per modificare o generare immagini nelle app di Windows. Per aiutare gli utenti a comprendere l'origine e la cronologia delle immagini generate o modificate, fornire le credenziali del contenuto come specificato dagli standard Coalition for Content Provenance e Authenticity (C2PA).

Per le procedure consigliate per l'implementazione delle funzionalità di intelligenza artificiale nelle app di Windows, vedere Sviluppo di intelligenza artificiale responsabile in Windows .

Vedere anche