@@ -107,7 +107,7 @@ struct SDParams {
107107 std::string input_id_images_path;
108108
109109 std::vector<int > skip_layers = {7 , 8 , 9 };
110- float slg_scale = 2.5 ;
110+ float slg_scale = 0 . ;
111111 float skip_layer_start = 0.01 ;
112112 float skip_layer_end = 0.2 ;
113113
@@ -138,6 +138,7 @@ void print_params(SDParams params) {
138138 printf (" negative_prompt: %s\n " , params.negative_prompt .c_str ());
139139 printf (" min_cfg: %.2f\n " , params.min_cfg );
140140 printf (" cfg_scale: %.2f\n " , params.cfg_scale );
141+ printf (" slg_scale: %.2f\n " , params.slg_scale );
141142 printf (" guidance: %.2f\n " , params.guidance );
142143 printf (" clip_skip: %d\n " , params.clip_skip );
143144 printf (" width: %d\n " , params.width );
@@ -174,11 +175,12 @@ void print_usage(int argc, const char* argv[]) {
174175 printf (" -p, --prompt [PROMPT] the prompt to render\n " );
175176 printf (" -n, --negative-prompt PROMPT the negative prompt (default: \"\" )\n " );
176177 printf (" --cfg-scale SCALE unconditional guidance scale: (default: 7.0)\n " );
177- printf (" --slg enable skip layer guidance (CFG variant)\n " );
178- printf (" --skip_layers LAYERS Layers to skip for skip layer CFG (requires --slg): (default: [7,8,9])\n " );
179- printf (" --slg-scale SCALE skip layer guidance scale (requires --slg): (default: 2.5)\n " );
180- printf (" --skip_layer_start START skip layer enabling point (* steps) (requires --slg): (default: 0.01)\n " );
181- printf (" --skip_layer_end END skip layer enabling point (* steps) (requires --slg): (default: 0.2)\n " );
178+ printf (" --slg-scale SCALE skip layer guidance (SLG) scale, only for DiT models: (default: 0)\n " );
179+ printf (" 0 means disabled, a value of 2.5 is nice for sd3.5 medium\n " );
180+ printf (" --skip_layers LAYERS Layers to skip for SLG steps: (default: [7,8,9])\n " );
181+ printf (" --skip_layer_start START SLG enabling point: (default: 0.01)\n " );
182+ printf (" --skip_layer_end END SLG disabling point: (default: 0.2)\n " );
183+ printf (" SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])\n " );
182184 printf (" --strength STRENGTH strength for noising/unnoising (default: 0.75)\n " );
183185 printf (" --style-ratio STYLE-RATIO strength for keeping input identity (default: 20%%)\n " );
184186 printf (" --control-strength STRENGTH strength to apply Control Net (default: 0.9)\n " );
@@ -205,7 +207,6 @@ void print_usage(int argc, const char* argv[]) {
205207
206208void parse_args (int argc, const char ** argv, SDParams& params) {
207209 bool invalid_arg = false ;
208- bool cfg_skip = false ;
209210 std::string arg;
210211 for (int i = 1 ; i < argc; i++) {
211212 arg = argv[i];
@@ -431,8 +432,12 @@ void parse_args(int argc, const char** argv, SDParams& params) {
431432 params.verbose = true ;
432433 } else if (arg == " --color" ) {
433434 params.color = true ;
434- } else if (arg == " --slg" ) {
435- cfg_skip = true ;
435+ } else if (arg == " --slg-scale" ) {
436+ if (++i >= argc) {
437+ invalid_arg = true ;
438+ break ;
439+ }
440+ params.slg_scale = std::stof (argv[i]);
436441 } else if (arg == " --skip-layers" ) {
437442 if (++i >= argc) {
438443 invalid_arg = true ;
@@ -470,12 +475,6 @@ void parse_args(int argc, const char** argv, SDParams& params) {
470475 if (invalid_arg) {
471476 break ;
472477 }
473- } else if (arg == " --slg-scale" ) {
474- if (++i >= argc) {
475- invalid_arg = true ;
476- break ;
477- }
478- params.slg_scale = std::stof (argv[i]);
479478 } else if (arg == " --skip-layer-start" ) {
480479 if (++i >= argc) {
481480 invalid_arg = true ;
@@ -515,11 +514,6 @@ void parse_args(int argc, const char** argv, SDParams& params) {
515514 params.n_threads = get_num_physical_cores ();
516515 }
517516
518- if (!cfg_skip) {
519- // set skip_layers to empty
520- params.skip_layers .clear ();
521- }
522-
523517 if (params.mode != CONVERT && params.mode != IMG2VID && params.prompt .length () == 0 ) {
524518 fprintf (stderr, " error: the following arguments are required: prompt\n " );
525519 print_usage (argc, argv);
@@ -595,6 +589,16 @@ std::string get_image_params(SDParams params, int64_t seed) {
595589 }
596590 parameter_string += " Steps: " + std::to_string (params.sample_steps ) + " , " ;
597591 parameter_string += " CFG scale: " + std::to_string (params.cfg_scale ) + " , " ;
592+ if (params.slg_scale != 0 && params.skip_layers .size () != 0 ) {
593+ parameter_string += " SLG scale: " + std::to_string (params.cfg_scale ) + " , " ;
594+ parameter_string += " Skip layers: [" ;
595+ for (const auto & layer : params.skip_layers ) {
596+ parameter_string += std::to_string (layer) + " , " ;
597+ }
598+ parameter_string += " ], " ;
599+ parameter_string += " Skip layer start: " + std::to_string (params.skip_layer_start ) + " , " ;
600+ parameter_string += " Skip layer end: " + std::to_string (params.skip_layer_end ) + " , " ;
601+ }
598602 parameter_string += " Guidance: " + std::to_string (params.guidance ) + " , " ;
599603 parameter_string += " Seed: " + std::to_string (seed) + " , " ;
600604 parameter_string += " Size: " + std::to_string (params.width ) + " x" + std::to_string (params.height ) + " , " ;
0 commit comments