hololens's picture
Upload folder using huggingface_hub
e04dce3 verified
raw
history blame
4.37 kB
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")])