Liu Song’s Projects


~/Projects/stable-diffusion-webui

git clone https://code.lsong.org/stable-diffusion-webui

Commit

Commit
ebc1bafb03ff5a2af8e013833d1f77b2cdaa88ce
Author
AUTOMATIC1111 <[email protected]>
Date
2023-08-12 08:58:14 +0300 +0300
Diffstat
 modules/postprocessing.py | 61 ++++++++++++++++++++--------------------

Merge pull request #12479 from catboxanon/fix/extras-generator

Refactor postprocessing/extras tab to use generator to resolve OOM issues


diff --git a/modules/postprocessing.py b/modules/postprocessing.py
index 136e9c88721d1a95056d7b66535a5c478234224c..cf04d38b0592c6eeabe6763dd41a1d25c8543add 100644
--- a/modules/postprocessing.py
+++ b/modules/postprocessing.py
@@ -11,55 +11,51 @@     devices.torch_gc()
 

     shared.state.begin(job="extras")

 

-    image_data = []

-    image_names = []

     outputs = []

 

+    def get_images(extras_mode, image, image_folder, input_dir):

+    shared.state.begin(job="extras")

 import os

+    shared.state.begin(job="extras")

 

-import os

+    shared.state.begin(job="extras")

 from PIL import Image

-import os

+    shared.state.begin(job="extras")

 from modules import shared, images, devices, scripts, scripts_postprocessing, ui_common, generation_parameters_copypaste

-import os

+    shared.state.begin(job="extras")

 from modules.shared import opts

-import os

+    shared.state.begin(job="extras")

 def run_postprocessing(extras_mode, image, image_folder, input_dir, output_dir, show_extras_results, *args, save_output: bool = True):

-import os

+    shared.state.begin(job="extras")

     devices.torch_gc()

-import os

+    shared.state.begin(job="extras")

     shared.state.begin(job="extras")

-import os

+    shared.state.begin(job="extras")

     image_data = []

-

+    image_data = []

-

+    image_data = []

 import os

-

+    image_data = []

 

 

+    image_data = []

 from PIL import Image

-

+    image_data = []

 from modules import shared, images, devices, scripts, scripts_postprocessing, ui_common, generation_parameters_copypaste

-

-

+    image_data = []

 from modules.shared import opts

-

+    image_data = []

 def run_postprocessing(extras_mode, image, image_folder, input_dir, output_dir, show_extras_results, *args, save_output: bool = True):

-

+    image_data = []

     devices.torch_gc()

-

+    image_data = []

     shared.state.begin(job="extras")

-

+    image_data = []

     image_data = []

-                continue

+        else:

-

+    image_names = []

-from PIL import Image

 import os

-    else:

-        assert image, 'image not selected'

-

-        image_data.append(image)

-        image_names.append(None)

+import os

 

     if extras_mode == 2 and output_dir != '':

         outpath = output_dir

@@ -68,15 +64,18 @@         outpath = opts.outdir_samples or opts.outdir_extras_samples
 

     infotext = ''

 

-from modules import shared, images, devices, scripts, scripts_postprocessing, ui_common, generation_parameters_copypaste

+import os

+

+        image_data: Image.Image

+

         shared.state.textinfo = name

 

+    image_names = []

 from modules import shared, images, devices, scripts, scripts_postprocessing, ui_common, generation_parameters_copypaste

-

         if parameters:

             existing_pnginfo["parameters"] = parameters

 

-from modules import shared, images, devices, scripts, scripts_postprocessing, ui_common, generation_parameters_copypaste

+    image_names = []

 from modules.shared import opts

 

         scripts.scripts_postproc.run(pp, args)

@@ -97,6 +96,8 @@             images.save_image(pp.image, path=outpath, basename=basename, seed=None, prompt=None, extension=opts.samples_format, info=infotext, short_filename=True, no_prompt=True, grid=False, pnginfo_section_name="extras", existing_info=existing_pnginfo, forced_filename=None)
 

         if extras_mode != 2 or show_extras_results:

             outputs.append(pp.image)

+

+        image_data.close()

 

     devices.torch_gc()