mirror of https://github.com/vladmandic/automatic
merge: modules/control/processor.py
parent
49e2c6f53a
commit
0e0b607cfa
|
|
@ -15,27 +15,48 @@ debug = os.environ.get('SD_CONTROL_DEBUG', None) is not None
|
||||||
debug_log = log.trace if debug else lambda *args, **kwargs: None
|
debug_log = log.trace if debug else lambda *args, **kwargs: None
|
||||||
processors = [
|
processors = [
|
||||||
'None',
|
'None',
|
||||||
|
# pose
|
||||||
'OpenPose',
|
'OpenPose',
|
||||||
'DWPose',
|
'DWPose',
|
||||||
'MediaPipe Face',
|
'MediaPipe Face',
|
||||||
|
'DWPose (ONNX)',
|
||||||
|
'RTMW',
|
||||||
|
'RTMO',
|
||||||
|
'ViTPose',
|
||||||
|
# edge
|
||||||
'Canny',
|
'Canny',
|
||||||
'Edge',
|
'Edge',
|
||||||
'LineArt Realistic',
|
'LineArt Realistic',
|
||||||
'LineArt Anime',
|
'LineArt Anime',
|
||||||
'HED',
|
'HED',
|
||||||
'PidiNet',
|
'PidiNet',
|
||||||
|
'MLSD',
|
||||||
|
'TEED',
|
||||||
|
'Anyline',
|
||||||
|
# depth
|
||||||
'Midas Depth Hybrid',
|
'Midas Depth Hybrid',
|
||||||
'Leres Depth',
|
'Leres Depth',
|
||||||
'Zoe Depth',
|
'Zoe Depth',
|
||||||
'Marigold Depth',
|
'Marigold Depth',
|
||||||
'Normal Bae',
|
|
||||||
'SegmentAnything',
|
|
||||||
'MLSD',
|
|
||||||
'Shuffle',
|
|
||||||
'DPT Depth Hybrid',
|
'DPT Depth Hybrid',
|
||||||
'GLPN Depth',
|
'GLPN Depth',
|
||||||
'Depth Anything',
|
'Depth Anything',
|
||||||
'Depth Pro',
|
'Depth Pro',
|
||||||
|
'Depth Anything V2 Small',
|
||||||
|
'Depth Anything V2 Large',
|
||||||
|
'Marigold Depth LCM',
|
||||||
|
'Lotus Depth',
|
||||||
|
# normal
|
||||||
|
'Normal Bae',
|
||||||
|
'DSINE',
|
||||||
|
'StableNormal',
|
||||||
|
'Marigold Normals',
|
||||||
|
# segmentation
|
||||||
|
'SegmentAnything',
|
||||||
|
'SAM 2.1',
|
||||||
|
'OneFormer',
|
||||||
|
# other
|
||||||
|
'Shuffle',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -51,6 +72,7 @@ def preprocess_image(
|
||||||
active_model:list = None,
|
active_model:list = None,
|
||||||
selected_models:list = None,
|
selected_models:list = None,
|
||||||
has_models:bool = False,
|
has_models:bool = False,
|
||||||
|
active_units:list = None,
|
||||||
):
|
):
|
||||||
if selected_models is None:
|
if selected_models is None:
|
||||||
selected_models = []
|
selected_models = []
|
||||||
|
|
@ -71,7 +93,9 @@ def preprocess_image(
|
||||||
p.init_img_width = getattr(p, 'init_img_width', input_image.width) # pylint: disable=attribute-defined-outside-init
|
p.init_img_width = getattr(p, 'init_img_width', input_image.width) # pylint: disable=attribute-defined-outside-init
|
||||||
p.init_img_height = getattr(p, 'init_img_height', input_image.height) # pylint: disable=attribute-defined-outside-init
|
p.init_img_height = getattr(p, 'init_img_height', input_image.height) # pylint: disable=attribute-defined-outside-init
|
||||||
input_image = images.resize_image(p.resize_mode_before, input_image, p.width_before, p.height_before, p.resize_name_before, context=p.resize_context_before)
|
input_image = images.resize_image(p.resize_mode_before, input_image, p.width_before, p.height_before, p.resize_name_before, context=p.resize_context_before)
|
||||||
if (input_image is not None) and (init_image is not None) and (init_image.size != input_image.size):
|
if input_type == 1 and init_image is not None and input_image is not None:
|
||||||
|
init_image = input_image # init same as control: reuse already-resized image
|
||||||
|
elif (input_image is not None) and (init_image is not None) and (init_image.size != input_image.size):
|
||||||
debug_log(f'Control resize init: image={init_image} target={input_image}')
|
debug_log(f'Control resize init: image={init_image} target={input_image}')
|
||||||
init_image = images.resize_image(resize_mode=1, im=init_image, width=input_image.width, height=input_image.height)
|
init_image = images.resize_image(resize_mode=1, im=init_image, width=input_image.width, height=input_image.height)
|
||||||
if (input_image is not None) and (p.override is not None) and (p.override.size != input_image.size):
|
if (input_image is not None) and (p.override is not None) and (p.override.size != input_image.size):
|
||||||
|
|
@ -111,6 +135,7 @@ def preprocess_image(
|
||||||
resize_mode = p.resize_mode_before
|
resize_mode = p.resize_mode_before
|
||||||
else:
|
else:
|
||||||
resize_mode = 3 if shared.opts.control_aspect_ratio else 1
|
resize_mode = 3 if shared.opts.control_aspect_ratio else 1
|
||||||
|
local_config = getattr(active_units[i], 'process_params', None) if active_units and i < len(active_units) else None
|
||||||
processed_image = process(
|
processed_image = process(
|
||||||
image_input=masked_image,
|
image_input=masked_image,
|
||||||
width=p.width,
|
width=p.width,
|
||||||
|
|
@ -120,6 +145,7 @@ def preprocess_image(
|
||||||
resize_name=p.resize_name_before,
|
resize_name=p.resize_name_before,
|
||||||
scale_tab=p.selected_scale_tab_before,
|
scale_tab=p.selected_scale_tab_before,
|
||||||
scale_by=p.scale_by_before,
|
scale_by=p.scale_by_before,
|
||||||
|
local_config=local_config,
|
||||||
)
|
)
|
||||||
if processed_image is not None:
|
if processed_image is not None:
|
||||||
processed_images.append(processed_image)
|
processed_images.append(processed_image)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue