mirror of
https://github.com/DarthAffe/StableDiffusion.NET.git
synced 2025-12-12 21:38:45 +00:00
Updated readme
This commit is contained in:
parent
76dc851139
commit
1ec8d67357
59
README.md
59
README.md
@ -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:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user