Updated readme

This commit is contained in:
DarthAffe 2025-08-17 00:06:05 +02:00
parent 76dc851139
commit 1ec8d67357

View File

@ -9,6 +9,7 @@ Based on https://github.com/leejet/stable-diffusion.cpp
## Usage ## Usage
### Setup ### Setup
Install the [StableDiffusion.NET](https://www.nuget.org/packages/StableDiffusion.NET)-Nuget and at least one of the [Backend-Packages](https://www.nuget.org/packages?q=StableDiffusion.NET.Backend). Install the [StableDiffusion.NET](https://www.nuget.org/packages/StableDiffusion.NET)-Nuget and at least one of the [Backend-Packages](https://www.nuget.org/packages?q=StableDiffusion.NET.Backend).
StableDiffusion.NET is using semantic versioning. Backend-packages are compatible as long as the version does only differ in the last digit.
If GPU-support is available it will prefer this over CPU. If GPU-support is available it will prefer this over CPU.
If you want to add your own native-libraries or need more control over which backend to load, check the static `Backends` class. If you want to add your own native-libraries or need more control over which backend to load, check the static `Backends` class.
@ -17,37 +18,43 @@ If you want to add your own native-libraries or need more control over which bac
stable diffusion: stable diffusion:
```csharp ```csharp
using DiffusionModel model = ModelBuilder.StableDiffusion(@"<path to model") // Enable the Log- and Progress-events
.WithVae(@"<optional path to vae>") StableDiffusionCpp.InitializeEvents();
.WithMultithreading()
.Build();
```
flux: // Register the Log and Progress-events to capture stable-diffusion.cpp output
```csharp StableDiffusionCpp.Log += (_, args) => Console.WriteLine($"LOG [{args.Level}]: {args.Text}");
using DiffusionModel model = ModelBuilder.Flux(@"<path to flux-model.gguf>", StableDiffusionCpp.Progress += (_, args) => Console.WriteLine($"PROGRESS {args.Step} / {args.Steps} ({(args.Progress * 100):N2} %) {args.IterationsPerSecond:N2} it/s ({args.Time})");
@"<path to clip_l.safetensors>",
@"<path to t5xxl_fp16.safetensors>",
@"<path to ae.safetensors>")
.WithMultithreading()
.Build();
```
#### 2. create image Image<ColorRGB>? treeWithTiger;
// Load a StableDiffusion model in a using block to unload it again after the two images are created
using (DiffusionModel sd = ModelBuilder.StableDiffusion(@"<path to model")
// .WithVae(@"<optional path to vae>")
.WithMultithreading()
.WithFlashAttention()
.Build())
{
// Create a image from a prompt
Image<ColorRGB>? tree = sd.GenerateImage(ImageGenerationParameter.TextToImage("A beautiful tree standing on a small hill").WithSDXLDefaults());
// (optional) Save the image (requires the HPPH System.Dawing or SkiaSharp extension)
File.WriteAllBytes("image1.png", tree.ToPng());
with default parameters: // Use the previously created image for an image-to-image creation
```csharp treeWithTiger = sd.GenerateImage(ImageGenerationParameter.ImageToImage("A cute tiger in front of a tree on a small hill", tree).WithSDXLDefaults());
IImage<ColorRGB> image = model.TextToImage("<prompt>"); File.WriteAllBytes("image2.png", treeWithTiger.ToPng());
``` }
with custom parameters: // Load a flux kontext model
```csharp using DiffusionModel flux = ModelBuilder.Flux(@"<path to flux-model.gguf>",
IImage<ColorRGB> image = model.TextToImage("<prompt>", model.GetDefaultParameter().WithSeed(1234).WithSize(1344, 768)); @"<path to clip_l.safetensors>",
``` @"<path to t5xxl_fp16.safetensors>",
@"<path to ae.safetensors>")
.WithMultithreading()
.WithFlashAttention()
.Build();
#### 3. (optional) save the image (requires System.Dawing or SkiaSharp extension) // Perform an edit on the previosly created image
```csharp Image<ColorRGB>? tigerOnMoon = flux.GenerateImage(ImageGenerationParameter.TextToImage("Remove the hill with the grass and place the tree with the tiger on the moon").WithFluxDefaults().WithRefImages(treeWithTiger));
File.WriteAllBytes("output.png", image.ToPng()); File.WriteAllBytes("image3.png", tigerOnMoon.ToPng());
``` ```
To process the resulting image further you can write your own extensions or install one of the [HPPH](https://github.com/DarthAffe/HPPH)-extension sets: To process the resulting image further you can write your own extensions or install one of the [HPPH](https://github.com/DarthAffe/HPPH)-extension sets: