Sdílet prostřednictvím


Začínáme s generováním obrazů pomocí AI

Funkce generování obrázků AI podporuje Microsoft Foundry ve Windows prostřednictvím sad rozhraní API založených na modelu stabilního Diffusion poháněném umělou inteligencí (opensourcový model AI používaný ke zpracování obrázků), které jsou dodávány v sadě Windows App SDK. Tato rozhraní API můžete ve svých aplikacích pro Windows použít k vytváření, transformaci a vylepšování obrázků a fotek pomocí výzev přirozeného jazyka a generování modelů na zařízeních.

Generování imagí AI je optimalizované pro efektivitu a výkon na počítačích s Windows Copilot+ .

Podrobnosti o rozhraní API najdete v tématu Referenční informace k rozhraní API pro funkce vytváření obrázků AI.

Požadavky

Co můžu dělat s generováním imagí AI?

Generování obrazů pomocí AI umožňuje převést výzvy na vizuální artefakty. Mezi podporované funkce patří:

  • Text na obrázek

    Vygenerujte obrázky z popisných textových výzev. Užitečné pro ilustrace, návrh, přizpůsobené pozadí a koncepční vizualizaci.

  • Obrázek k obrázku

    Transformujte existující obrázek na základě textových pokynů při zachování struktury. Užitečné pro styly, motivy a další varianty.

  • Magic Fill

    Vyplňte maskované oblasti obrázku obsahem vygenerovaným umělou inteligencí. Užitečné pro odebrání objektů, oprav oblastí a intuitivní úpravy (složité revize prostřednictvím textových výzev místo ručních nástrojů).

  • Styl omalovánek

    Převeďte obrázky na zjednodušené obrysy, které lze použít pro obarvení knihy nebo podobné vzdělávací prostředí.

  • Přeformátovat

    Použití grafických nebo vizuálních stylů u existujících obrázků při zachování struktury Užitečné pro kreativní filtry, grafické režimy nebo motivované transformace.

Examples

Při použití rozhraní API pro generování imagí AI postupujte podle těchto základních kroků.

  1. Ujistěte se, že je model připravený pomocí funkce EnsureReadyAsync.
  2. Vytvořte instanci ImageGeneratoru .
  3. Vyberte příslušný pracovní postup generování (výzva k zadání textu, vstup obrázku nebo maska).
  4. Spusťte příslušnou metodu generování.
  5. Výstup obdržíte jako ImageBuffer pro zobrazení, úpravy nebo uložení.

Vygenerování obrázku z textové výzvy (Text na obrázek)

Tento příklad ukazuje, jak vygenerovat obrázek z textové výzvy. Konkrétně "Krásný západ slunce nad horským jezerem".

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

Transformace stylu obrázku (obrázek na obrázek)

Tento příklad ukazuje, jak transformovat fotografii na olejový obraz na základě textové výzvy. Konkrétně "styl olejové malby, silné tahy štětců, umělecké".

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

Transformace stylu obrázku (komplexní transformace obrázku na obrázek)

Tento příklad ukazuje, jak transformovat fotografii na olejový obraz na základě textové výzvy. Konkrétně: "Olejomalba, silné tahy štětce, bohatá barevná paleta, tradiční textura plátna, realistické osvětlení, styl klasického výtvarného umění, vrstvená malba, vysoká míra detailu, dramatický kontrast, impasto, texturované plá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}");
    }
}

Magické vyplnění s maskou

Tento příklad ukazuje, jak pomocí masky vyplnit oblast obrázku. Konkrétně "červené sportovní auto".

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

Vygenerujte obrázek ve stylu omalovánky

Tento příklad ukazuje, jak vygenerovat obrázek ve stylu obarvení knihy. Konkrétně "Kočka ve vesmíru".

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

Generování obrazu pomocí vlastních parametrů ImageGenerationOptions

Tento příklad ukazuje, jak vygenerovat obrázek na základě sady filtrů a omezení obsahu. Konkrétně "Kočka ve vesmírné lodi" používající TextContentFilterSeverity na úrovni Low a ImageContentFilterSeverity na úrovni Minimum.

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

Zodpovědná AI

Pomocí kombinace následujících kroků jsme zajistili, že tato rozhraní API pro vytváření imisí jsou důvěryhodná, zabezpečená a zodpovědně sestavená. Při implementaci funkcí AI ve vaší aplikaci doporučujeme projít si osvědčené postupy popsané v tématu Zodpovědný vývoj umělé inteligence ve Windows .

Viz také