Zacznij od generowania obrazów za pomocą sztucznej inteligencji

Platforma Microsoft Foundry w systemie Windows obsługuje funkcje generowania obrazów z wykorzystaniem sztucznej inteligencji dzięki zestawowi interfejsów API opartych na modelu Stable Diffusion (modelu sztucznej inteligencji typu open source używanego do przetwarzania obrazów), dostępnych w systemowym zestawie SDK aplikacji Windows. Za pomocą tych interfejsów API w aplikacjach systemu Windows można tworzyć, przekształcać i ulepszać obrazy i zdjęcia przy użyciu monitów języka naturalnego i modeli generowania na urządzeniach.

Generowanie obrazów za pomocą sztucznej inteligencji jest zoptymalizowane pod kątem efektywności i wydajności na komputerach PC z systemem Windows Copilot+.

Aby uzyskać szczegółowe informacje o interfejsie API, zobacz dokumentację interfejsu API dotyczącą funkcji przetwarzania obrazów AI.

Ważne

Wymagania manifestu pakietu: aby korzystać z interfejsów API tworzenia obrazów sztucznej inteligencji systemu Windows, aplikacja musi być spakowana jako pakiet MSIX z funkcją systemAIModels zadeklarowaną w pliku Package.appxmanifest. Ponadto upewnij się, że atrybut manifestu MaxVersionTested jest ustawiony na najnowszą wersję systemu Windows (np 10.0.26226.0 . lub nowszą), aby prawidłowo obsługiwać funkcje sztucznej inteligencji systemu Windows. Użycie starszych wartości może spowodować błędy "Nie zadeklarowane przez aplikację" podczas ładowania modelu.

<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>

Wymagania wstępne

  • Wersja systemu Windows: Windows 11, wersja 24H2 (kompilacja 26100) lub nowsza
  • Zestaw SDK do aplikacji systemu Windows version:Version 2.0 Experimental
  • Sprzęt: Komputer Copilot+ z jednostką NPU (wymagane)

Obsługiwany sprzęt

Generowanie obrazów sztucznej inteligencji działa na następującym sprzęcie:

Sprzęt Status Details
NPU (Copilot+ PC) ✅ Dostępny Jedyna obsługiwana ścieżka sprzętowa. Zobacz przewodnik dla deweloperów Copilot+ PCs.
procesor GPU ❌ Nieobsługiwane Niedostępne na procesorze GPU.
CPU ❌ Nieobsługiwane Niedostępne na CPU.

Dostępność i pobieranie modelu

Model generowania obrazów AI jest opcjonalny na komputerze Copilot+ PC — nie jest preinstalowany domyślnie, ponieważ rozmiar instalacji wynosi kilka gigabajtów. Przy pierwszym wywołaniu aplikacji EnsureReadyAsync model jest pobierany w tle za pośrednictwem Windows Update. Użytkownicy końcowi mogą również później usunąć model, aby odzyskać miejsce na dysku.

To zachowanie jest zgodne z cyklem życia modelu używanym przez inne duże opcjonalne modele sztucznej inteligencji Windows — aplikacja musi jawnie obsługiwać przypadek "nie zainstalowano jeszcze", a nie zakładać, że model jest obecny.

Ponieważ model AI do generowania obrazów jest duży i nie jest domyślnie dostępny, przed wywołaniem EnsureReadyAsyncpokaż okno dialogowe z potwierdzeniem, aby użytkownik mógł wyrazić zgodę zarówno na zajęcie miejsca na dysku, jak i na pobieranie w tle. Typowy wzorzec:

  1. Wywołaj metodę GetReadyState i wykonaj rozgałęzienie na podstawie zwróconej wartości AIFeatureReadyState:

    • Ready — model jest zainstalowany; kontynuuj.
    • NotReady lub EnsureNeeded — pokaż okno dialogowe zgody (patrz poniżej), a następnie zadzwoń EnsureReadyAsync tylko wtedy, gdy użytkownik zgadza się.
    • NotSupportedOnCurrentSystem — urządzenie nie jest Copilot+ PC lub w inny sposób nie spełnia wymagań Obsługiwanego sprzętu. Zapewnij środowisko rezerwowe i, w razie potrzeby, przedstawić wymagania sprzętowe, aby użytkownik mógł podjąć świadomą decyzję o uaktualnieniu.
  2. W oknie dialogowym wyrażania zgody wyjaśnij:

    • Opcjonalny model do generowania obrazów zostanie pobrany (kilka GB miejsca na dysku).
    • Pobieranie odbywa się w tle za pośrednictwem Windows Update.
    • Użytkownik może monitorować postęp pobierania pod adresem Settings>Windows Update.
    • Użytkownik może później usunąć model w Ustawieniach>System>Komponenty AI, jeśli nie będzie już go chciał.

    Wskazówka

    W tekstach widocznych dla użytkownika (tekst okna dialogowego, komunikaty o stanie) należy odnosić się do modelu jako do "modelu generowania obrazów" lub "opcjonalnego modelu sztucznej inteligencji", a nie "SDXL" lub "Stable Diffusion". Większość użytkowników końcowych nie zna nazw modeli bazowych, a ogólne określenia jaśniej komunikują ich przeznaczenie.

  3. Gdy EnsureReadyAsync postęp jest w toku, pokaż wskaźnik postępu w aplikacji. Zobacz Rozpocznij pracę z interfejsami API SI systemu Windows, aby zapoznać się ze wzorcem interfejsu ładowania.

Po zainstalowaniu modelu

Model pozostaje na urządzeniu, dopóki użytkownik go nie usunie. Użytkownicy zarządzają zainstalowanymi modelami — w tym modelem generowaniaobrazów sztucznej inteligencji — w >>inteligencji systemu. Jeśli użytkownik później usunie model, kolejne wywołanie przez aplikację do GetReadyState zwróci NotReady lub EnsureNeeded, dlatego należy powtórzyć proces uzyskania zgody i pobierania.

Co mogę zrobić za pomocą generowania obrazów sztucznej inteligencji?

Generowanie obrazów sztucznej inteligencji umożliwia przekształcenie monitów w artefakty wizualne. Obsługiwane funkcje obejmują:

  • Tekst do obrazu

    Generowanie obrazów na podstawie opisowych monitów tekstowych. Przydatne do ilustracji, projektowania, dostosowanych tł i wizualizacji koncepcyjnych.

  • Obraz do obrazu

    Przekształcanie istniejącego obrazu na podstawie wskazówek tekstowych przy zachowaniu struktury. Przydatne do stylizacji, motywów i innych wariacji.

  • Wypełnienie magiczne

    Wypełnij zamaskowane regiony obrazu zawartością wygenerowaną przez sztuczną inteligencję. Przydatne do usuwania obiektów, naprawiania regionów i intuicyjnego edytowania (złożone poprawki za pośrednictwem monitów tekstowych zamiast narzędzi ręcznych).

  • Styl kolorowanki

    Konwertowanie obrazów na uproszczone kontury, których można użyć do kolorowanek lub podobnych celów edukacyjnych.

  • Zmiana stylu

    Stosowanie stylów artystycznych lub wizualnych do istniejących obrazów przy zachowaniu struktury. Przydatne w przypadku kreatywnych filtrów, trybów artystycznych lub tematycznych transformacji.

Przykłady

Wykonaj następujące podstawowe kroki podczas korzystania z interfejsów API generowania obrazów sztucznej inteligencji.

  1. Upewnij się, że model jest gotowy przy użyciu EnsureReadyAsync.
  2. Utwórz wystąpienie ImageGenerator .
  3. Wybierz odpowiedni proces generowania (monit tekstowy, dane wejściowe obrazu lub maska).
  4. Wywołaj odpowiednią metodę generowania.
  5. Odbierz dane wyjściowe jako ImageBuffer do wyświetlania, edytowania lub zapisywania.

Generowanie obrazu na podstawie monitu tekstowego (tekst do obrazu)

W tym przykładzie pokazano, jak wygenerować obraz na podstawie monitu tekstowego. W szczególności "Piękny zachód słońca nad jeziorem górskim".

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}");
    }
}

Przekształcanie stylu obrazu (obraz-obraz)

W tym przykładzie pokazano, jak przekształcić fotografię w obraz olejny na podstawie monitu tekstowego. W szczególności"styl malarstwa olejnego, grube pociągnięcia pędzla, artystyczne".

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");
    }
}

Przekształcanie stylu obrazu (złożony obraz-obraz)

W tym przykładzie pokazano, jak przekształcić fotografię w obraz olejny na podstawie monitu tekstowego. W szczególności: Obraz olejny, grube pociągnięcia pędzla, bogata paleta kolorów, tradycyjna tekstura płótna, realistyczne oświetlenie, klasyczny styl sztuk pięknych, warstwowa farba, wysoki poziom szczegółowości, dramatyczny kontrast, impasto, teksturowane płótno.

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}");
    }
}

Magiczne wypełnianie przy użyciu maski

W tym przykładzie pokazano, jak za pomocą maski wypełnić region obrazu. W szczególności "czerwony samochód sportowy".

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");
    }
}

Tworzenie obrazu w stylu malowanki

W tym przykładzie pokazano, jak wygenerować obraz w stylu książki kolorowej. W szczególności "Kot w statku kosmicznym".

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}");
    }
}

Generowanie obrazu przy użyciu niestandardowych parametrów ImageGenerationOptions

W tym przykładzie pokazano, jak wygenerować obraz na podstawie zestawu filtrów i ograniczeń zawartości. W szczególności "Kot w statku kosmicznym" przy użyciu właściwości TextContentFilterSeverity o wartości niskiej i ImageContentFilterSeverity o wartości minimalnej.

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 = new TextContentFilterSeverity { Hate = SeverityLevel.Low, Sexual = SeverityLevel.Low, Violent = SeverityLevel.Low, SelfHarm = SeverityLevel.Low };
    contentFilterOptions.ImageMaxAllowedSeverityLevel = new ImageContentFilterSeverity { AdultContentLevel = SeverityLevel.Minimum, GoryContentLevel = SeverityLevel.Minimum, RacyContentLevel = SeverityLevel.Minimum, ViolentContentLevel = SeverityLevel.Minimum };
    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}");
    }
}

Odpowiedzialne używanie sztucznej inteligencji

Postępuj zgodnie z zaleceniami dotyczącymi odpowiedzialnej sztucznej inteligencji, w tym przejrzystością i zaufaniem użytkowników, podczas używania tych interfejsów API do modyfikowania lub generowania obrazów w aplikacjach systemu Windows. Aby ułatwić użytkownikom zrozumienie źródła i historii wygenerowanych lub zmodyfikowanych obrazów, podaj poświadczenia treści określone przez standardy Koalicji na Rzecz Pochodzenia i Autentyczności Treści (C2PA).

Zobacz Odpowiedzialne opracowywanie sztucznej inteligencji w systemie Windows , aby uzyskać najlepsze rozwiązania dotyczące implementowania funkcji sztucznej inteligencji w aplikacjach systemu Windows.

Zobacz także