- Notifications
You must be signed in to change notification settings - Fork16
C# Wrapper for StableDiffusion.cpp
License
DarthAffe/StableDiffusion.NET
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Based onhttps://github.com/leejet/stable-diffusion.cpp
Install theStableDiffusion.NET-Nuget and at least one of theBackend-Packages.
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 you want to add your own native-libraries or need more control over which backend to load, check the staticBackends class.
stable diffusion:
// Enable the Log- and Progress-eventsStableDiffusionCpp.InitializeEvents();// Register the Log and Progress-events to capture stable-diffusion.cpp outputStableDiffusionCpp.Log+=(_,args)=>Console.WriteLine($"LOG [{args.Level}]:{args.Text}");StableDiffusionCpp.Progress+=(_,args)=>Console.WriteLine($"PROGRESS{args.Step} /{args.Steps} ({(args.Progress*100):N2} %){args.IterationsPerSecond:N2} it/s ({args.Time})");Image<ColorRGB>?treeWithTiger;// Load a StableDiffusion model in a using block to unload it again after the two images are createdusing(DiffusionModelsd=new(DiffusionModelParameter.Create().WithModelPath(@"<path to model>")// .WithVae(@"<optional path to vae>").WithMultithreading().WithFlashAttention())){// Create a image from a promptImage<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());// Use the previously created image for an image-to-image creationtreeWithTiger=sd.GenerateImage(ImageGenerationParameter.ImageToImage("A cute tiger in front of a tree on a small hill",tree).WithSDXLDefaults());File.WriteAllBytes("image2.png",treeWithTiger.ToPng());}// Load the qwen image edit modelusingDiffusionModelqwenContext=new(DiffusionModelParameter.Create().WithDiffusionModelPath(@"<Qwen-Image-Edit-2509-path>").WithQwen2VLPath(@"<Qwen2.5-VL-7B-Instruct-path>").WithQwen2VLVisionPath(@"<Qwen2.5-VL-7B-Instruct.mmproj-path>").WithVae(@"<qwen_image_vae-path>").WithMultithreading().WithFlashAttention().WithFlowShift(3).WithOffloadedParamsToCPU().WithImmediatelyFreedParams());// Perform an edit on the previously created imageImage<ColorRGB>?tigerOnMoon=qwenContext.GenerateImage(ImageGenerationParameter.TextToImage("Remove the background and place the tree and the tiger on the moon.").WithSize(1024,1024).WithCfg(2.5f).WithSampler(Sampler.Euler).WithRefImages(treeWithTiger));File.WriteAllBytes("image3.png",tigerOnMoon.ToPng());
To process the resulting image further you can write your own extensions or install one of theHPPH-extension sets:
HPPH.System.Drawing
HPPH.SkiaSharp
About
C# Wrapper for StableDiffusion.cpp
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.