@@ -158,6 +158,7 @@ void print_params(SDParams params) {
158
158
printf (" negative_prompt: %s\n " , params.negative_prompt .c_str ());
159
159
printf (" min_cfg: %.2f\n " , params.min_cfg );
160
160
printf (" cfg_scale: %.2f\n " , params.cfg_scale );
161
+ printf (" slg_scale: %.2f\n " , params.slg_scale );
161
162
printf (" guidance: %.2f\n " , params.guidance );
162
163
printf (" clip_skip: %d\n " , params.clip_skip );
163
164
printf (" width: %d\n " , params.width );
@@ -206,11 +207,12 @@ void print_usage(int argc, const char* argv[]) {
206
207
printf (" -p, --prompt [PROMPT] the prompt to render\n " );
207
208
printf (" -n, --negative-prompt PROMPT the negative prompt (default: \"\" )\n " );
208
209
printf (" --cfg-scale SCALE unconditional guidance scale: (default: 7.0)\n " );
209
- printf (" --slg enable skip layer guidance (CFG variant)\n " );
210
- printf (" --skip_layers LAYERS Layers to skip for skip layer CFG (requires --slg): (default: [7,8,9])\n " );
211
- printf (" --slg-scale SCALE skip layer guidance scale (requires --slg): (default: 2.5)\n " );
212
- printf (" --skip_layer_start START skip layer enabling point (* steps) (requires --slg): (default: 0.01)\n " );
213
- printf (" --skip_layer_end END skip layer enabling point (* steps) (requires --slg): (default: 0.2)\n " );
210
+ printf (" --slg-scale SCALE skip layer guidance (SLG) scale, only for DiT models: (default: 0)\n " );
211
+ printf (" 0 means disabled, a value of 2.5 is nice for sd3.5 medium\n " );
212
+ printf (" --skip_layers LAYERS Layers to skip for SLG steps: (default: [7,8,9])\n " );
213
+ printf (" --skip_layer_start START SLG enabling point: (default: 0.01)\n " );
214
+ printf (" --skip_layer_end END SLG disabling point: (default: 0.2)\n " );
215
+ printf (" SLG will be enabled at step int([STEPS]*[START]) and disabled at int([STEPS]*[END])\n " );
214
216
printf (" --strength STRENGTH strength for noising/unnoising (default: 0.75)\n " );
215
217
printf (" --style-ratio STYLE-RATIO strength for keeping input identity (default: 20%%)\n " );
216
218
printf (" --control-strength STRENGTH strength to apply Control Net (default: 0.9)\n " );
@@ -237,7 +239,6 @@ void print_usage(int argc, const char* argv[]) {
237
239
238
240
void parse_args (int argc, const char ** argv, SDParams& params) {
239
241
bool invalid_arg = false ;
240
- bool cfg_skip = false ;
241
242
std::string arg;
242
243
for (int i = 1 ; i < argc; i++) {
243
244
arg = argv[i];
@@ -574,8 +575,12 @@ void parse_args(int argc, const char** argv, SDParams& params) {
574
575
params.verbose = true ;
575
576
} else if (arg == " --color" ) {
576
577
params.color = true ;
577
- } else if (arg == " --slg" ) {
578
- cfg_skip = true ;
578
+ } else if (arg == " --slg-scale" ) {
579
+ if (++i >= argc) {
580
+ invalid_arg = true ;
581
+ break ;
582
+ }
583
+ params.slg_scale = std::stof (argv[i]);
579
584
} else if (arg == " --skip-layers" ) {
580
585
if (++i >= argc) {
581
586
invalid_arg = true ;
@@ -613,12 +618,6 @@ void parse_args(int argc, const char** argv, SDParams& params) {
613
618
if (invalid_arg) {
614
619
break ;
615
620
}
616
- } else if (arg == " --slg-scale" ) {
617
- if (++i >= argc) {
618
- invalid_arg = true ;
619
- break ;
620
- }
621
- params.slg_scale = std::stof (argv[i]);
622
621
} else if (arg == " --skip-layer-start" ) {
623
622
if (++i >= argc) {
624
623
invalid_arg = true ;
@@ -646,11 +645,6 @@ void parse_args(int argc, const char** argv, SDParams& params) {
646
645
params.n_threads = get_num_physical_cores ();
647
646
}
648
647
649
- if (!cfg_skip) {
650
- // set skip_layers to empty
651
- params.skip_layers .clear ();
652
- }
653
-
654
648
if (params.mode != CONVERT && params.mode != IMG2VID && params.prompt .length () == 0 ) {
655
649
fprintf (stderr, " error: the following arguments are required: prompt\n " );
656
650
print_usage (argc, argv);
@@ -726,6 +720,16 @@ std::string get_image_params(SDParams params, int64_t seed) {
726
720
}
727
721
parameter_string += " Steps: " + std::to_string (params.sample_steps ) + " , " ;
728
722
parameter_string += " CFG scale: " + std::to_string (params.cfg_scale ) + " , " ;
723
+ if (params.slg_scale != 0 && params.skip_layers .size () != 0 ) {
724
+ parameter_string += " SLG scale: " + std::to_string (params.cfg_scale ) + " , " ;
725
+ parameter_string += " Skip layers: [" ;
726
+ for (const auto & layer : params.skip_layers ) {
727
+ parameter_string += std::to_string (layer) + " , " ;
728
+ }
729
+ parameter_string += " ], " ;
730
+ parameter_string += " Skip layer start: " + std::to_string (params.skip_layer_start ) + " , " ;
731
+ parameter_string += " Skip layer end: " + std::to_string (params.skip_layer_end ) + " , " ;
732
+ }
729
733
parameter_string += " Guidance: " + std::to_string (params.guidance ) + " , " ;
730
734
parameter_string += " Seed: " + std::to_string (seed) + " , " ;
731
735
parameter_string += " Size: " + std::to_string (params.width ) + " x" + std::to_string (params.height ) + " , " ;
0 commit comments