(p: StableDiffusionProcessing)
| 136 | |
| 137 | |
| 138 | def process_images(p: StableDiffusionProcessing) -> Processed | None: |
| 139 | timer.process.reset() |
| 140 | debug(f'Process images: class={p.__class__.__name__} {vars(p)}') |
| 141 | if shared.sd_model is None: |
| 142 | log.warning('Aborted: op=process model not loaded') |
| 143 | return None |
| 144 | if not hasattr(shared.sd_model, 'sd_checkpoint_info'): |
| 145 | log.error('Aborted: op=process incomplete model') |
| 146 | return None |
| 147 | if p.abort: |
| 148 | log.debug('Processing: aborted') |
| 149 | return None |
| 150 | if p.scripts is not None and isinstance(p.scripts, scripts_manager.ScriptRunner): |
| 151 | p.scripts.before_process(p) |
| 152 | stored_opts = {} |
| 153 | for k, v in p.override_settings.copy().items(): |
| 154 | if shared.opts.data.get(k, None) is None and shared.opts.data_labels.get(k, None) is None: |
| 155 | continue |
| 156 | orig = shared.opts.data.get(k, None) or shared.opts.data_labels[k].default |
| 157 | if orig == v or (type(orig) == str and os.path.splitext(orig)[0] == v): |
| 158 | p.override_settings.pop(k, None) |
| 159 | for k in p.override_settings.keys(): |
| 160 | stored_opts[k] = shared.opts.data.get(k, None) or shared.opts.data_labels[k].default |
| 161 | results = None |
| 162 | try: |
| 163 | # if no checkpoint override or the override checkpoint can't be found, remove override entry and load opts checkpoint |
| 164 | if p.override_settings.get('sd_model_checkpoint', None) is not None and sd_checkpoint.checkpoint_aliases.get(p.override_settings.get('sd_model_checkpoint')) is None: |
| 165 | log.warning(f"Override not found: checkpoint={p.override_settings.get('sd_model_checkpoint', None)}") |
| 166 | p.override_settings.pop('sd_model_checkpoint', None) |
| 167 | sd_models.reload_model_weights() |
| 168 | if p.override_settings.get('sd_model_refiner', None) is not None and sd_checkpoint.checkpoint_aliases.get(p.override_settings.get('sd_model_refiner')) is None: |
| 169 | log.warning(f"Override not found: refiner={p.override_settings.get('sd_model_refiner', None)}") |
| 170 | p.override_settings.pop('sd_model_refiner', None) |
| 171 | sd_models.reload_model_weights() |
| 172 | if p.override_settings.get('sd_vae', None) is not None: |
| 173 | if p.override_settings.get('sd_vae', None) == 'TAESD': |
| 174 | p.vae_type = 'Tiny' |
| 175 | p.override_settings.pop('sd_vae', None) |
| 176 | if p.override_settings.get('sd_vae', None) == 'REPA-E': |
| 177 | p.vae_type = 'Repa' |
| 178 | p.override_settings.pop('sd_vae', None) |
| 179 | if p.override_settings.get('Hires upscaler', None) is not None: |
| 180 | p.enable_hr = True |
| 181 | if len(p.override_settings.keys()) > 0: |
| 182 | log.debug(f'Override: {p.override_settings}') |
| 183 | for k, v in p.override_settings.items(): |
| 184 | setattr(shared.opts, k, v) |
| 185 | if k == 'sd_model_checkpoint': |
| 186 | sd_models.reload_model_weights() |
| 187 | if k == 'sd_vae': |
| 188 | sd_vae.reload_vae_weights() |
| 189 | |
| 190 | shared.prompt_styles.apply_styles_to_extra(p) |
| 191 | shared.prompt_styles.extract_comments(p) |
| 192 | vae_scale_factor = sd_vae.get_vae_scale_factor() |
| 193 | |
| 194 | if p.width is not None: |
| 195 | p.width = vae_scale_factor * int(p.width / vae_scale_factor) |
no test coverage detected