Spaces:
Runtime error
Runtime error
| import traceback | |
| import gradio as gr | |
| from modules import shared | |
| import modules.scripts as scripts | |
| from PIL import Image | |
| from src import backbone | |
| from src import common_ui | |
| from src.core import core_generation_funnel | |
| from src.gradio_args_transport import GradioComponentBundle | |
| from src.misc import * | |
| class Script(scripts.Script): | |
| def title(self): | |
| return SCRIPT_NAME | |
| def show(self, is_img2img): | |
| return True | |
| def ui(self, is_img2img): | |
| gr.HTML() # Work around a Gradio bug | |
| with gr.Column(variant='panel'): | |
| gr.HTML() # Work around a Gradio bug | |
| ret = common_ui.main_ui_panel(False) | |
| ret += ret.enkey_tail() | |
| return ret.enkey_body() | |
| # run from script in txt2img or img2img | |
| def run(self, p, *inputs): | |
| from modules import processing | |
| from modules.processing import create_infotext | |
| inputs = GradioComponentBundle.enkey_to_dict(inputs) | |
| # sd process | |
| processed = processing.process_images(p) | |
| processed.sampler = p.sampler # for create_infotext | |
| processed.tiling = p.tiling # for create_infotext | |
| inputimages = [] | |
| for count in range(0, len(processed.images)): | |
| # skip first grid image | |
| if count == 0 and len(processed.images) > 1 and shared.opts.return_grid: | |
| continue | |
| inputimages.append(processed.images[count]) | |
| gen_obj = core_generation_funnel(p.outpath_samples, inputimages, None, None, inputs, backbone.gather_ops()) | |
| for input_i, type, result in gen_obj: | |
| if not isinstance(result, Image.Image): | |
| continue | |
| # get generation parameters | |
| # TODO: could reuse | |
| if hasattr(processed, 'all_prompts') and shared.opts.enable_pnginfo: | |
| info = create_infotext( | |
| p, processed.all_prompts, processed.all_seeds, processed.all_subseeds, "", 0, input_i) | |
| else: | |
| info = None | |
| processed.images.append(result) | |
| if inputs["save_outputs"]: | |
| try: | |
| suffix = "" if type == "depth" else f"{type}" | |
| backbone.save_image(result, path=p.outpath_samples, basename="", seed=processed.all_seeds[input_i], | |
| prompt=processed.all_prompts[input_i], extension=shared.opts.samples_format, | |
| info=info, | |
| p=processed, | |
| suffix=suffix) | |
| except Exception as e: | |
| if not ('image has wrong mode' in str(e) or 'I;16' in str(e)): | |
| raise e | |
| print('Catched exception: image has wrong mode!') | |
| traceback.print_exc() | |
| return processed | |
| # TODO: some of them may be put into the main ui pane | |
| # TODO: allow in standalone mode | |
| def on_ui_settings(): | |
| section = ('depthmap-script', "Depthmap extension") | |
| def add_option(name, default_value, description, name_prefix='depthmap_script'): | |
| shared.opts.add_option(f"{name_prefix}_{name}", shared.OptionInfo(default_value, description, section=section)) | |
| add_option('keepmodels', False, "Do not unload depth and pix2pix models.") | |
| add_option('boost_rmax', 1600, "Maximum wholesize for boost (Rmax)") | |
| add_option('marigold_ensembles', 5, "How many ensembles to use for Marigold") | |
| add_option('marigold_steps', 10, "How many denoising steps to use for Marigold") | |
| add_option('save_ply', False, "Save additional PLY file with 3D inpainted mesh.") | |
| add_option('show_3d', True, "Enable showing 3D Meshes in output tab. (Experimental)") | |
| add_option('show_3d_inpaint', True, "Also show 3D Inpainted Mesh in 3D Mesh output tab. (Experimental)") | |
| add_option('mesh_maxsize', 2048, "Max size for generating simple mesh.") | |
| add_option('gen_heatmap_from_ui', False, "Show an option to generate HeatMap in the UI") | |
| add_option('extra_stereomodes', False, "Enable more possible outputs for stereoimage generation") | |
| from modules import script_callbacks | |
| script_callbacks.on_ui_settings(on_ui_settings) | |
| script_callbacks.on_ui_tabs(lambda: [(common_ui.on_ui_tabs(), "Depth", "depthmap_interface")]) | |