Udostępnij przez


Zacznij od generowania obrazów za pomocą sztucznej inteligencji

Funkcje generowania obrazów w oparciu o sztuczną inteligencję są obsługiwane przez Microsoft Foundry w systemie Windows za pomocą zestawu interfejsów API wspieranych przez technologię Stable Diffusion (otwarty model AI używany do przetwarzania obrazów), dostarczonych w zestawie SDK aplikacji dla systemu Windows. Te interfejsy API mogą być używane w aplikacjach systemu Windows do tworzenia, przekształcania i ulepszania obrazów i zdjęć 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.

Wymagania wstępne

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

    Przekonwertuj obrazy na uproszczone kontury, których można użyć w książce do kolorowania lub podobnym celu edukacyjnym.

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

Odpowiedzialne używanie sztucznej inteligencji

Użyliśmy kombinacji poniższych kroków, aby upewnić się, że te interfejsy API obrazowania są wiarygodne, bezpieczne i tworzone odpowiedzialnie. Zalecamy zapoznanie się z najlepszymi rozwiązaniami opisanymi w temacie Odpowiedzialne tworzenie sztucznej inteligencji w systemie Windows podczas implementowania funkcji sztucznej inteligencji w aplikacji.

Zobacz także