mirror of
https://github.com/DarthAffe/StableDiffusion.NET.git
synced 2025-12-13 05:48:40 +00:00
Updated to support SDXL and clip scip (commit 78ad76f)
This commit is contained in:
parent
76be341505
commit
289abe4d20
@ -6,12 +6,15 @@ public class ModelParameter
|
|||||||
|
|
||||||
public int ThreadCount { get; set; } = 8;
|
public int ThreadCount { get; set; } = 8;
|
||||||
public bool VaeDecodeOnly { get; set; } = false;
|
public bool VaeDecodeOnly { get; set; } = false;
|
||||||
|
public bool VaeTiling { get; set; } = false;
|
||||||
public string TaesdPath { get; set; } = string.Empty;
|
public string TaesdPath { get; set; } = string.Empty;
|
||||||
|
public string ESRGANPath { get; set; } = string.Empty;
|
||||||
public string LoraModelDir { get; set; } = string.Empty;
|
public string LoraModelDir { get; set; } = string.Empty;
|
||||||
public RngType RngType { get; set; } = RngType.Standard;
|
public RngType RngType { get; set; } = RngType.Standard;
|
||||||
public string VaePath { get; set; } = string.Empty;
|
public string VaePath { get; set; } = string.Empty;
|
||||||
public Quantization Quantization { get; set; } = Quantization.Default;
|
public Quantization Quantization { get; set; } = Quantization.Default;
|
||||||
public Schedule Schedule { get; set; } = Schedule.Default;
|
public Schedule Schedule { get; set; } = Schedule.Default;
|
||||||
|
public int ClipSkip { get; set; } = -1;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,11 +66,11 @@ internal unsafe partial class Native
|
|||||||
internal static partial void stable_diffusion_full_params_set_strength(stable_diffusion_full_params* @params, float strength);
|
internal static partial void stable_diffusion_full_params_set_strength(stable_diffusion_full_params* @params, float strength);
|
||||||
|
|
||||||
[LibraryImport(LIB_NAME, EntryPoint = "stable_diffusion_init")]
|
[LibraryImport(LIB_NAME, EntryPoint = "stable_diffusion_init")]
|
||||||
internal static partial stable_diffusion_ctx* stable_diffusion_init(int n_threads, [MarshalAs(UnmanagedType.I1)] bool vae_decode_only, [MarshalAs(UnmanagedType.LPStr)] string taesd_path, [MarshalAs(UnmanagedType.I1)] bool free_params_immediately, [MarshalAs(UnmanagedType.LPStr)] string lora_model_dir, [MarshalAs(UnmanagedType.LPStr)] string rng_type);
|
internal static partial stable_diffusion_ctx* stable_diffusion_init(int n_threads, [MarshalAs(UnmanagedType.I1)] bool vae_decode_only, [MarshalAs(UnmanagedType.LPStr)] string taesd_path, [MarshalAs(UnmanagedType.LPStr)] string esrgan_path, [MarshalAs(UnmanagedType.I1)] bool free_params_immediately, [MarshalAs(UnmanagedType.I1)] bool vae_tiling, [MarshalAs(UnmanagedType.LPStr)] string lora_model_dir, [MarshalAs(UnmanagedType.LPStr)] string rng_type);
|
||||||
|
|
||||||
[LibraryImport(LIB_NAME, EntryPoint = "stable_diffusion_load_from_file")]
|
[LibraryImport(LIB_NAME, EntryPoint = "stable_diffusion_load_from_file")]
|
||||||
[return: MarshalAs(UnmanagedType.I1)]
|
[return: MarshalAs(UnmanagedType.I1)]
|
||||||
internal static partial bool stable_diffusion_load_from_file(stable_diffusion_ctx* ctx, [MarshalAs(UnmanagedType.LPStr)] string file_path, [MarshalAs(UnmanagedType.LPStr)] string vae_path, [MarshalAs(UnmanagedType.LPStr)] string wtype, [MarshalAs(UnmanagedType.LPStr)] string schedule);
|
internal static partial bool stable_diffusion_load_from_file(stable_diffusion_ctx* ctx, [MarshalAs(UnmanagedType.LPStr)] string file_path, [MarshalAs(UnmanagedType.LPStr)] string vae_path, [MarshalAs(UnmanagedType.LPStr)] string wtype, [MarshalAs(UnmanagedType.LPStr)] string schedule, int clip_skip);
|
||||||
|
|
||||||
[LibraryImport(LIB_NAME, EntryPoint = "stable_diffusion_predict_image")]
|
[LibraryImport(LIB_NAME, EntryPoint = "stable_diffusion_predict_image")]
|
||||||
internal static partial byte* stable_diffusion_predict_image(stable_diffusion_ctx* ctx, stable_diffusion_full_params* @params, [MarshalAs(UnmanagedType.LPStr)] string prompt);
|
internal static partial byte* stable_diffusion_predict_image(stable_diffusion_ctx* ctx, stable_diffusion_full_params* @params, [MarshalAs(UnmanagedType.LPStr)] string prompt);
|
||||||
|
|||||||
@ -34,10 +34,10 @@ public sealed unsafe class StableDiffusionModel : IDisposable
|
|||||||
|
|
||||||
private void Initialize()
|
private void Initialize()
|
||||||
{
|
{
|
||||||
_ctx = Native.stable_diffusion_init(_parameter.ThreadCount, _parameter.VaeDecodeOnly, _parameter.TaesdPath, false, _parameter.LoraModelDir, _parameter.RngType.GetNativeName() ?? "STD_DEFAULT_RNG");
|
_ctx = Native.stable_diffusion_init(_parameter.ThreadCount, _parameter.VaeDecodeOnly, _parameter.TaesdPath, _parameter.ESRGANPath, false, _parameter.VaeTiling, _parameter.LoraModelDir, _parameter.RngType.GetNativeName() ?? "STD_DEFAULT_RNG");
|
||||||
if (_ctx == null) throw new NullReferenceException("Failed to initialize Stable Diffusion");
|
if (_ctx == null) throw new NullReferenceException("Failed to initialize Stable Diffusion");
|
||||||
|
|
||||||
bool success = Native.stable_diffusion_load_from_file(_ctx, _modelPath, _parameter.VaePath, _parameter.Quantization.GetNativeName() ?? "DEFAULT", _parameter.Schedule.GetNativeName() ?? "DEFAULT");
|
bool success = Native.stable_diffusion_load_from_file(_ctx, _modelPath, _parameter.VaePath, _parameter.Quantization.GetNativeName() ?? "DEFAULT", _parameter.Schedule.GetNativeName() ?? "DEFAULT", _parameter.ClipSkip);
|
||||||
if (!success) throw new IOException("Failed to load model");
|
if (!success) throw new IOException("Failed to load model");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
if not exist stable-diffusion.cpp-build (
|
if not exist stable-diffusion.cpp-build (
|
||||||
git clone https://github.com/seasonjs/stable-diffusion.cpp-build
|
git clone https://github.com/DarthAffe/stable-diffusion.cpp-build
|
||||||
)
|
)
|
||||||
|
|
||||||
cd stable-diffusion.cpp-build
|
cd stable-diffusion.cpp-build
|
||||||
git fetch
|
git fetch
|
||||||
git checkout 4b95d98404bbfe91698fd41b0f514656e358163a
|
git checkout b518ce72f1ba448f164e58961b1513ccacc95006
|
||||||
|
|
||||||
if not exist build (
|
if not exist build (
|
||||||
mkdir build
|
mkdir build
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user