diff --git a/examples/cli/main.cpp b/examples/cli/main.cpp index 9f25245e3..59b325504 100644 --- a/examples/cli/main.cpp +++ b/examples/cli/main.cpp @@ -926,7 +926,8 @@ int main(int argc, const char* argv[]) { params.style_ratio, params.normalize_input, params.input_id_images_path.c_str(), - params.skip_layers, + params.skip_layers.data(), + params.skip_layers.size(), params.slg_scale, params.skip_layer_start, params.skip_layer_end); @@ -991,7 +992,12 @@ int main(int argc, const char* argv[]) { params.control_strength, params.style_ratio, params.normalize_input, - params.input_id_images_path.c_str()); + params.input_id_images_path.c_str(), + params.skip_layers.data(), + params.skip_layers.size(), + params.slg_scale, + params.skip_layer_start, + params.skip_layer_end); } } diff --git a/stable-diffusion.cpp b/stable-diffusion.cpp index 5024b5f27..a276bff5c 100644 --- a/stable-diffusion.cpp +++ b/stable-diffusion.cpp @@ -780,7 +780,7 @@ class StableDiffusionGGML { int start_merge_step, SDCondition id_cond, std::vector skip_layers = {}, - float slg_scale = 2.5, + float slg_scale = 0, float skip_layer_start = 0.01, float skip_layer_end = 0.2) { size_t steps = sigmas.size() - 1; @@ -1162,7 +1162,7 @@ sd_image_t* generate_image(sd_ctx_t* sd_ctx, bool normalize_input, std::string input_id_images_path, std::vector skip_layers = {}, - float slg_scale = 2.5, + float slg_scale = 0, float skip_layer_start = 0.01, float skip_layer_end = 0.2) { if (seed < 0) { @@ -1453,10 +1453,12 @@ sd_image_t* txt2img(sd_ctx_t* sd_ctx, float style_ratio, bool normalize_input, const char* input_id_images_path_c_str, - std::vector skip_layers, - float slg_scale, - float skip_layer_start, - float skip_layer_end) { + int* skip_layers = NULL, + size_t skip_layers_count = 0, + float slg_scale = 0, + float skip_layer_start = 0.01, + float skip_layer_end = 0.2) { + std::vector skip_layers_vec(skip_layers, skip_layers + skip_layers_count); LOG_DEBUG("txt2img %dx%d", width, height); if (sd_ctx == NULL) { return NULL; @@ -1525,7 +1527,7 @@ sd_image_t* txt2img(sd_ctx_t* sd_ctx, style_ratio, normalize_input, input_id_images_path_c_str, - skip_layers, + skip_layers_vec, slg_scale, skip_layer_start, skip_layer_end); @@ -1556,10 +1558,12 @@ sd_image_t* img2img(sd_ctx_t* sd_ctx, float style_ratio, bool normalize_input, const char* input_id_images_path_c_str, - std::vector skip_layers, - float slg_scale, - float skip_layer_start, - float skip_layer_end) { + int* skip_layers = NULL, + size_t skip_layers_count = 0, + float slg_scale = 0, + float skip_layer_start = 0.01, + float skip_layer_end = 0.2) { + std::vector skip_layers_vec(skip_layers, skip_layers + skip_layers_count); LOG_DEBUG("img2img %dx%d", width, height); if (sd_ctx == NULL) { return NULL; @@ -1634,7 +1638,7 @@ sd_image_t* img2img(sd_ctx_t* sd_ctx, style_ratio, normalize_input, input_id_images_path_c_str, - skip_layers, + skip_layers_vec, slg_scale, skip_layer_start, skip_layer_end); diff --git a/stable-diffusion.h b/stable-diffusion.h index 3604e716b..1fa328570 100644 --- a/stable-diffusion.h +++ b/stable-diffusion.h @@ -166,10 +166,11 @@ SD_API sd_image_t* txt2img(sd_ctx_t* sd_ctx, float style_strength, bool normalize_input, const char* input_id_images_path, - std::vector skip_layers = {}, - float slg_scale = 2.5, - float skip_layer_start = 0.01, - float skip_layer_end = 0.2); + int* skip_layers, + size_t skip_layers_count, + float slg_scale, + float skip_layer_start, + float skip_layer_end); SD_API sd_image_t* img2img(sd_ctx_t* sd_ctx, sd_image_t init_image, @@ -190,10 +191,11 @@ SD_API sd_image_t* img2img(sd_ctx_t* sd_ctx, float style_strength, bool normalize_input, const char* input_id_images_path, - std::vector skip_layers = {}, - float slg_scale = 2.5, - float skip_layer_start = 0.01, - float skip_layer_end = 0.2); + int* skip_layers, + size_t skip_layers_count, + float slg_scale, + float skip_layer_start, + float skip_layer_end); SD_API sd_image_t* img2vid(sd_ctx_t* sd_ctx, sd_image_t init_image,