diff --git a/invokeai/app/invocations/controlnet_image_processors.py b/invokeai/app/invocations/controlnet_image_processors.py index 46086695fd5..876b0957400 100644 --- a/invokeai/app/invocations/controlnet_image_processors.py +++ b/invokeai/app/invocations/controlnet_image_processors.py @@ -539,7 +539,7 @@ def tile_resample(self, np_img: np.ndarray[Any, Any]): ) np_img = cv2.resize(np_img, (resize_w, resize_h), interpolation=cv2.INTER_CUBIC) - np_img = cv2.cvtColor(np_img, cv2.COLOR_BGR2RGB) + # np_img = cv2.cvtColor(np_img, cv2.COLOR_BGR2RGB) return np_img diff --git a/invokeai/backend/model_manager/probe.py b/invokeai/backend/model_manager/probe.py index 2f18f1a8a60..286eb3617c8 100644 --- a/invokeai/backend/model_manager/probe.py +++ b/invokeai/backend/model_manager/probe.py @@ -312,9 +312,11 @@ def _get_checkpoint_config_path( config_file = ( "stable-diffusion/v1-inference.yaml" if base_type is BaseModelType.StableDiffusion1 - else "stable-diffusion/sd_xl_base.yaml" - if base_type is BaseModelType.StableDiffusionXL - else "stable-diffusion/v2-inference.yaml" + else ( + "stable-diffusion/sd_xl_base.yaml" + if base_type is BaseModelType.StableDiffusionXL + else "stable-diffusion/v2-inference.yaml" + ) ) else: raise InvalidModelConfigException( @@ -361,6 +363,7 @@ def _scan_model(cls, model_name: str, checkpoint: Path) -> None: "pose": "dw_openpose_image_processor", "mediapipe": "mediapipe_face_processor", "pidi": "pidi_image_processor", + "tile": "tile_image_processor", "zoe": "zoe_depth_image_processor", "color": "color_map_image_processor", } diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index 6d3829bc718..da04eead2e2 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -231,6 +231,14 @@ "dwOpenposeDescription": "Human pose estimation using DW Openpose", "pidi": "PIDI", "pidiDescription": "PIDI image processing", + "tile": "Tile", + "TileDescription": "Tile Resampling", + "mode": "Mode", + "downsamplingRate": "Downsampling Rate", + "regular": "Regular", + "blur": "Blur", + "variation": "Variation", + "super": "Super", "processor": "Processor", "prompt": "Prompt", "resetControlImage": "Reset Control Image", diff --git a/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts b/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts index 152e977e5c6..1a40be4cdc3 100644 --- a/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts +++ b/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts @@ -245,6 +245,21 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { safe: false, }), }, + tile_image_processor: { + type: 'tile_image_processor', + get label() { + return i18n.t('controlnet.tile'); + }, + get description() { + return i18n.t('controlnet.tileDescription'); + }, + buildDefaults: () => ({ + id: 'tile_image_processor', + type: 'tile_image_processor', + down_sampling_rate: 1.0, + mode: 'blur', + }), + }, zoe_depth_image_processor: { type: 'zoe_depth_image_processor', get label() { diff --git a/invokeai/frontend/web/src/features/controlAdapters/store/types.ts b/invokeai/frontend/web/src/features/controlAdapters/store/types.ts index b76a729263e..301e1702f8a 100644 --- a/invokeai/frontend/web/src/features/controlAdapters/store/types.ts +++ b/invokeai/frontend/web/src/features/controlAdapters/store/types.ts @@ -26,6 +26,7 @@ export type ControlAdapterProcessorNode = | Invocation<'normalbae_image_processor'> | Invocation<'dw_openpose_image_processor'> | Invocation<'pidi_image_processor'> + | Invocation<'tile_image_processor'> | Invocation<'zoe_depth_image_processor'>; /** @@ -46,6 +47,7 @@ export const zControlAdapterProcessorType = z.enum([ 'normalbae_image_processor', 'dw_openpose_image_processor', 'pidi_image_processor', + 'tile_image_processor', 'zoe_depth_image_processor', 'none', ]); @@ -199,6 +201,10 @@ const zIPMethod = z.enum(['full', 'style', 'composition']); export type IPMethod = z.infer; export const isIPMethod = (v: unknown): v is IPMethod => zIPMethod.safeParse(v).success; +const zTileProcessorMode = z.enum(['regular', 'blur', 'var', 'super']); +export type TileProcessorMode = z.infer; +export const isTileProcessorMode = (v: unknown): v is TileProcessorMode => zTileProcessorMode.safeParse(v).success; + export type ControlNetConfig = { type: 'controlnet'; id: string; diff --git a/invokeai/frontend/web/src/features/controlLayers/components/ControlAndIPAdapter/ControlAdapterProcessorConfig.tsx b/invokeai/frontend/web/src/features/controlLayers/components/ControlAndIPAdapter/ControlAdapterProcessorConfig.tsx index 034dc5454e7..83b2371c8ef 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/ControlAndIPAdapter/ControlAdapterProcessorConfig.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/ControlAndIPAdapter/ControlAdapterProcessorConfig.tsx @@ -12,6 +12,7 @@ import { MediapipeFaceProcessor } from './processors/MediapipeFaceProcessor'; import { MidasDepthProcessor } from './processors/MidasDepthProcessor'; import { MlsdImageProcessor } from './processors/MlsdImageProcessor'; import { PidiProcessor } from './processors/PidiProcessor'; +import { TileProcessor } from './processors/TileProcessor'; type Props = { config: ProcessorConfig | null; @@ -77,6 +78,10 @@ export const ControlAdapterProcessorConfig = memo(({ config, onChange }: Props) return ; } + if (config.type === 'tile_image_processor') { + return ; + } + if (config.type === 'zoe_depth_image_processor') { return null; } diff --git a/invokeai/frontend/web/src/features/controlLayers/components/ControlAndIPAdapter/processors/TileProcessor.tsx b/invokeai/frontend/web/src/features/controlLayers/components/ControlAndIPAdapter/processors/TileProcessor.tsx new file mode 100644 index 00000000000..a11770f278a --- /dev/null +++ b/invokeai/frontend/web/src/features/controlLayers/components/ControlAndIPAdapter/processors/TileProcessor.tsx @@ -0,0 +1,76 @@ +import type { ComboboxOnChange } from '@invoke-ai/ui-library'; +import { Combobox, CompositeNumberInput, CompositeSlider, FormControl, FormLabel } from '@invoke-ai/ui-library'; +import { isTileProcessorMode, type TileProcessorMode } from 'features/controlAdapters/store/types'; +import type { ProcessorComponentProps } from 'features/controlLayers/components/ControlAndIPAdapter/processors/types'; +import { CA_PROCESSOR_DATA, type TileProcessorConfig } from 'features/controlLayers/util/controlAdapters'; +import { memo, useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; + +import ProcessorWrapper from './ProcessorWrapper'; + +type Props = ProcessorComponentProps; +const DEFAULTS = CA_PROCESSOR_DATA['tile_image_processor'].buildDefaults(); + +export const TileProcessor = memo(({ onChange, config }: Props) => { + const { t } = useTranslation(); + + const tileModeOptions: { label: string; value: TileProcessorMode }[] = useMemo( + () => [ + { label: t('controlnet.regular'), value: 'regular' }, + { label: t('controlnet.blur'), value: 'blur' }, + { label: t('controlnet.variation'), value: 'var' }, + { label: t('controlnet.super'), value: 'super' }, + ], + [t] + ); + + const tileModeValue = useMemo(() => tileModeOptions.find((o) => o.value === config.mode), [tileModeOptions, config]); + + const handleTileModeChange = useCallback( + (v) => { + if (!isTileProcessorMode(v?.value)) { + return; + } + onChange({ ...config, mode: v.value }); + }, + [config, onChange] + ); + + const handleDownSamplingRateChanged = useCallback( + (v: number) => { + onChange({ ...config, down_sampling_rate: v }); + }, + [config, onChange] + ); + + return ( + + + {t('controlnet.mode')} + + + + {t('controlnet.downsamplingRate')} + + + + + ); +}); + +TileProcessor.displayName = 'TileProcessor'; diff --git a/invokeai/frontend/web/src/features/controlLayers/util/controlAdapters.test.ts b/invokeai/frontend/web/src/features/controlLayers/util/controlAdapters.test.ts index 22f54d622cd..ebdc7b5b6dc 100644 --- a/invokeai/frontend/web/src/features/controlLayers/util/controlAdapters.test.ts +++ b/invokeai/frontend/web/src/features/controlLayers/util/controlAdapters.test.ts @@ -23,6 +23,7 @@ import type { PidiProcessorConfig, ProcessorConfig, ProcessorTypeV2, + TileProcessorConfig, ZoeDepthProcessorConfig, } from './controlAdapters'; @@ -58,6 +59,7 @@ describe('Control Adapter Types', () => { assert>(); assert>(); assert>(); + assert>(); assert>(); }); }); @@ -90,4 +92,7 @@ type _DWOpenposeProcessorConfig = Required< Pick, 'id' | 'type' | 'draw_body' | 'draw_face' | 'draw_hands'> >; type _PidiProcessorConfig = Required, 'id' | 'type' | 'safe' | 'scribble'>>; +type _TileProcessorConfig = Required< + Pick, 'id' | 'type' | 'down_sampling_rate' | 'mode'> +>; type _ZoeDepthProcessorConfig = Required, 'id' | 'type'>>; diff --git a/invokeai/frontend/web/src/features/controlLayers/util/controlAdapters.ts b/invokeai/frontend/web/src/features/controlLayers/util/controlAdapters.ts index 13435bdb7cf..2715fa3ee8b 100644 --- a/invokeai/frontend/web/src/features/controlLayers/util/controlAdapters.ts +++ b/invokeai/frontend/web/src/features/controlLayers/util/controlAdapters.ts @@ -114,6 +114,14 @@ const zPidiProcessorConfig = z.object({ }); export type PidiProcessorConfig = z.infer; +const zTileProcessorConfig = z.object({ + id: zId, + type: z.literal('tile_image_processor'), + down_sampling_rate: z.number().gte(0), + mode: z.enum(['regular', 'blur', 'var', 'super']), +}); +export type TileProcessorConfig = z.infer; + const zZoeDepthProcessorConfig = z.object({ id: zId, type: z.literal('zoe_depth_image_processor'), @@ -134,6 +142,7 @@ const zProcessorConfig = z.discriminatedUnion('type', [ zNormalbaeProcessorConfig, zDWOpenposeProcessorConfig, zPidiProcessorConfig, + zTileProcessorConfig, zZoeDepthProcessorConfig, ]); export type ProcessorConfig = z.infer; @@ -212,6 +221,7 @@ const zProcessorTypeV2 = z.enum([ 'normalbae_image_processor', 'dw_openpose_image_processor', 'pidi_image_processor', + 'tile_image_processor', 'zoe_depth_image_processor', ]); export type ProcessorTypeV2 = z.infer; @@ -453,6 +463,22 @@ export const CA_PROCESSOR_DATA: CAProcessorsData = { image_resolution: minDim(image), }), }, + tile_image_processor: { + type: 'tile_image_processor', + labelTKey: 'controlnet.tile', + descriptionTKey: 'controlnet.tileDescription', + buildDefaults: () => ({ + id: 'tile_image_processor', + type: 'tile_image_processor', + down_sampling_rate: 1.0, + mode: 'regular', + }), + buildNode: (image, config) => ({ + ...config, + type: 'tile_image_processor', + image: { image_name: image.name }, + }), + }, zoe_depth_image_processor: { type: 'zoe_depth_image_processor', labelTKey: 'controlnet.depthZoe', diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ControlNetOrT2IAdapterDefaultSettings/DefaultPreprocessor.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ControlNetOrT2IAdapterDefaultSettings/DefaultPreprocessor.tsx index b2284336bf4..a7fae3062c1 100644 --- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ControlNetOrT2IAdapterDefaultSettings/DefaultPreprocessor.tsx +++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/ModelPanel/ControlNetOrT2IAdapterDefaultSettings/DefaultPreprocessor.tsx @@ -15,6 +15,7 @@ const OPTIONS = [ { label: 'Depth Anything', value: 'depth_anything_image_processor' }, { label: 'Normal BAE', value: 'normalbae_image_processor' }, { label: 'Pidi', value: 'pidi_image_processor' }, + { label: 'Tile', value: 'tile_image_processor' }, { label: 'Lineart', value: 'lineart_image_processor' }, { label: 'Lineart Anime', value: 'lineart_anime_image_processor' }, { label: 'HED', value: 'hed_image_processor' }, diff --git a/invokeai/frontend/web/src/services/api/schema.ts b/invokeai/frontend/web/src/services/api/schema.ts index 485a5bc8362..16c5b59cffb 100644 --- a/invokeai/frontend/web/src/services/api/schema.ts +++ b/invokeai/frontend/web/src/services/api/schema.ts @@ -7293,145 +7293,145 @@ export type components = { project_id: string | null; }; InvocationOutputMap: { - img_ilerp: components["schemas"]["ImageOutput"]; - freeu: components["schemas"]["UNetOutput"]; - img_scale: components["schemas"]["ImageOutput"]; - depth_anything_image_processor: components["schemas"]["ImageOutput"]; - string_join_three: components["schemas"]["StringOutput"]; - step_param_easing: components["schemas"]["FloatCollectionOutput"]; - float_collection: components["schemas"]["FloatCollectionOutput"]; - sdxl_refiner_model_loader: components["schemas"]["SDXLRefinerModelLoaderOutput"]; - canny_image_processor: components["schemas"]["ImageOutput"]; - infill_tile: components["schemas"]["ImageOutput"]; - mediapipe_face_processor: components["schemas"]["ImageOutput"]; - mask_combine: components["schemas"]["ImageOutput"]; + img_paste: components["schemas"]["ImageOutput"]; + mask_edge: components["schemas"]["ImageOutput"]; + mlsd_image_processor: components["schemas"]["ImageOutput"]; + i2l: components["schemas"]["LatentsOutput"]; + rand_float: components["schemas"]["FloatOutput"]; + img_crop: components["schemas"]["ImageOutput"]; + vae_loader: components["schemas"]["VAEOutput"]; + img_channel_multiply: components["schemas"]["ImageOutput"]; + sub: components["schemas"]["IntegerOutput"]; + core_metadata: components["schemas"]["MetadataOutput"]; + face_mask_detection: components["schemas"]["FaceMaskOutput"]; + lscale: components["schemas"]["LatentsOutput"]; + color_map_image_processor: components["schemas"]["ImageOutput"]; + float_to_int: components["schemas"]["IntegerOutput"]; float_range: components["schemas"]["FloatCollectionOutput"]; - boolean_collection: components["schemas"]["BooleanCollectionOutput"]; - div: components["schemas"]["IntegerOutput"]; - integer_math: components["schemas"]["IntegerOutput"]; - mask_from_id: components["schemas"]["ImageOutput"]; - lora_collection_loader: components["schemas"]["LoRALoaderOutput"]; - hed_image_processor: components["schemas"]["ImageOutput"]; - tiled_multi_diffusion_denoise_latents: components["schemas"]["LatentsOutput"]; - integer_collection: components["schemas"]["IntegerCollectionOutput"]; img_conv: components["schemas"]["ImageOutput"]; - lscale: components["schemas"]["LatentsOutput"]; - color: components["schemas"]["ColorOutput"]; - metadata: components["schemas"]["MetadataOutput"]; lineart_anime_image_processor: components["schemas"]["ImageOutput"]; - color_map_image_processor: components["schemas"]["ImageOutput"]; - create_gradient_mask: components["schemas"]["GradientMaskOutput"]; - round_float: components["schemas"]["FloatOutput"]; - mask_edge: components["schemas"]["ImageOutput"]; - sdxl_lora_loader: components["schemas"]["SDXLLoRALoaderOutput"]; - seamless: components["schemas"]["SeamlessModeOutput"]; - zoe_depth_image_processor: components["schemas"]["ImageOutput"]; + invert_tensor_mask: components["schemas"]["MaskOutput"]; + main_model_loader: components["schemas"]["ModelLoaderOutput"]; + step_param_easing: components["schemas"]["FloatCollectionOutput"]; + save_image: components["schemas"]["ImageOutput"]; + infill_rgba: components["schemas"]["ImageOutput"]; + tile_to_properties: components["schemas"]["TileToPropertiesOutput"]; + sdxl_compel_prompt: components["schemas"]["ConditioningOutput"]; t2i_adapter: components["schemas"]["T2IAdapterOutput"]; + img_nsfw: components["schemas"]["ImageOutput"]; scheduler: components["schemas"]["SchedulerOutput"]; - img_channel_multiply: components["schemas"]["ImageOutput"]; - add: components["schemas"]["IntegerOutput"]; - dw_openpose_image_processor: components["schemas"]["ImageOutput"]; - l2i: components["schemas"]["ImageOutput"]; - tile_to_properties: components["schemas"]["TileToPropertiesOutput"]; - unsharp_mask: components["schemas"]["ImageOutput"]; - segment_anything_processor: components["schemas"]["ImageOutput"]; - infill_rgba: components["schemas"]["ImageOutput"]; - collect: components["schemas"]["CollectInvocationOutput"]; - string_split: components["schemas"]["String2Output"]; - show_image: components["schemas"]["ImageOutput"]; image: components["schemas"]["ImageOutput"]; - core_metadata: components["schemas"]["MetadataOutput"]; - img_chan: components["schemas"]["ImageOutput"]; + range: components["schemas"]["IntegerCollectionOutput"]; + lresize: components["schemas"]["LatentsOutput"]; + img_scale: components["schemas"]["ImageOutput"]; + sdxl_lora_loader: components["schemas"]["SDXLLoRALoaderOutput"]; + mask_combine: components["schemas"]["ImageOutput"]; + integer: components["schemas"]["IntegerOutput"]; + metadata: components["schemas"]["MetadataOutput"]; + img_ilerp: components["schemas"]["ImageOutput"]; + string_collection: components["schemas"]["StringCollectionOutput"]; + metadata_item: components["schemas"]["MetadataItemOutput"]; + sdxl_refiner_compel_prompt: components["schemas"]["ConditioningOutput"]; + model_identifier: components["schemas"]["ModelIdentifierOutput"]; + segment_anything_processor: components["schemas"]["ImageOutput"]; + integer_collection: components["schemas"]["IntegerCollectionOutput"]; + image_collection: components["schemas"]["ImageCollectionOutput"]; range_of_size: components["schemas"]["IntegerCollectionOutput"]; - sub: components["schemas"]["IntegerOutput"]; - lblend: components["schemas"]["LatentsOutput"]; - sdxl_compel_prompt: components["schemas"]["ConditioningOutput"]; - ip_adapter: components["schemas"]["IPAdapterOutput"]; + seamless: components["schemas"]["SeamlessModeOutput"]; + dynamic_prompt: components["schemas"]["StringCollectionOutput"]; + string_split_neg: components["schemas"]["StringPosNegOutput"]; + midas_depth_image_processor: components["schemas"]["ImageOutput"]; + zoe_depth_image_processor: components["schemas"]["ImageOutput"]; + add: components["schemas"]["IntegerOutput"]; + color: components["schemas"]["ColorOutput"]; + img_mul: components["schemas"]["ImageOutput"]; + infill_tile: components["schemas"]["ImageOutput"]; calculate_image_tiles: components["schemas"]["CalculateImageTilesOutput"]; + integer_math: components["schemas"]["IntegerOutput"]; + prompt_from_file: components["schemas"]["StringCollectionOutput"]; + lineart_image_processor: components["schemas"]["ImageOutput"]; + leres_image_processor: components["schemas"]["ImageOutput"]; + esrgan: components["schemas"]["ImageOutput"]; + mask_from_id: components["schemas"]["ImageOutput"]; + div: components["schemas"]["IntegerOutput"]; + face_identifier: components["schemas"]["ImageOutput"]; color_correct: components["schemas"]["ImageOutput"]; - midas_depth_image_processor: components["schemas"]["ImageOutput"]; - cv_inpaint: components["schemas"]["ImageOutput"]; - merge_metadata: components["schemas"]["MetadataOutput"]; - tomask: components["schemas"]["ImageOutput"]; - sdxl_model_loader: components["schemas"]["SDXLModelLoaderOutput"]; - compel: components["schemas"]["ConditioningOutput"]; - alpha_mask_to_tensor: components["schemas"]["MaskOutput"]; - image_collection: components["schemas"]["ImageCollectionOutput"]; + img_hue_adjust: components["schemas"]["ImageOutput"]; + string_join: components["schemas"]["StringOutput"]; + conditioning: components["schemas"]["ConditioningOutput"]; + show_image: components["schemas"]["ImageOutput"]; img_resize: components["schemas"]["ImageOutput"]; - metadata_item: components["schemas"]["MetadataItemOutput"]; - dynamic_prompt: components["schemas"]["StringCollectionOutput"]; - img_lerp: components["schemas"]["ImageOutput"]; - clip_skip: components["schemas"]["CLIPSkipInvocationOutput"]; - iterate: components["schemas"]["IterateInvocationOutput"]; - rand_float: components["schemas"]["FloatOutput"]; - string: components["schemas"]["StringOutput"]; - save_image: components["schemas"]["ImageOutput"]; - infill_lama: components["schemas"]["ImageOutput"]; - vae_loader: components["schemas"]["VAEOutput"]; - mul: components["schemas"]["IntegerOutput"]; - calculate_image_tiles_min_overlap: components["schemas"]["CalculateImageTilesOutput"]; + controlnet: components["schemas"]["ControlOutput"]; + create_denoise_mask: components["schemas"]["DenoiseMaskOutput"]; + boolean_collection: components["schemas"]["BooleanCollectionOutput"]; + pair_tile_image: components["schemas"]["PairTileImageOutput"]; + lblend: components["schemas"]["LatentsOutput"]; + sdxl_refiner_model_loader: components["schemas"]["SDXLRefinerModelLoaderOutput"]; + mediapipe_face_processor: components["schemas"]["ImageOutput"]; + infill_patchmatch: components["schemas"]["ImageOutput"]; img_pad_crop: components["schemas"]["ImageOutput"]; - crop_latents: components["schemas"]["LatentsOutput"]; - img_nsfw: components["schemas"]["ImageOutput"]; - heuristic_resize: components["schemas"]["ImageOutput"]; + lora_selector: components["schemas"]["LoRASelectorOutput"]; + img_watermark: components["schemas"]["ImageOutput"]; + alpha_mask_to_tensor: components["schemas"]["MaskOutput"]; + iterate: components["schemas"]["IterateInvocationOutput"]; + img_lerp: components["schemas"]["ImageOutput"]; + freeu: components["schemas"]["UNetOutput"]; + tile_image_processor: components["schemas"]["ImageOutput"]; image_mask_to_tensor: components["schemas"]["MaskOutput"]; - blank_image: components["schemas"]["ImageOutput"]; - img_channel_offset: components["schemas"]["ImageOutput"]; - conditioning: components["schemas"]["ConditioningOutput"]; - controlnet: components["schemas"]["ControlOutput"]; + float: components["schemas"]["FloatOutput"]; + cv_inpaint: components["schemas"]["ImageOutput"]; sdxl_lora_collection_loader: components["schemas"]["SDXLLoRALoaderOutput"]; - normalbae_image_processor: components["schemas"]["ImageOutput"]; - face_mask_detection: components["schemas"]["FaceMaskOutput"]; - range: components["schemas"]["IntegerCollectionOutput"]; - noise: components["schemas"]["NoiseOutput"]; - img_paste: components["schemas"]["ImageOutput"]; - prompt_from_file: components["schemas"]["StringCollectionOutput"]; - conditioning_collection: components["schemas"]["ConditioningCollectionOutput"]; - content_shuffle_image_processor: components["schemas"]["ImageOutput"]; - float_math: components["schemas"]["FloatOutput"]; - i2l: components["schemas"]["LatentsOutput"]; - denoise_latents: components["schemas"]["LatentsOutput"]; - merge_tiles_to_image: components["schemas"]["ImageOutput"]; - img_mul: components["schemas"]["ImageOutput"]; - leres_image_processor: components["schemas"]["ImageOutput"]; - model_identifier: components["schemas"]["ModelIdentifierOutput"]; - string_split_neg: components["schemas"]["StringPosNegOutput"]; - boolean: components["schemas"]["BooleanOutput"]; - create_denoise_mask: components["schemas"]["DenoiseMaskOutput"]; + string_split: components["schemas"]["String2Output"]; + round_float: components["schemas"]["FloatOutput"]; + merge_metadata: components["schemas"]["MetadataOutput"]; latents_collection: components["schemas"]["LatentsCollectionOutput"]; - mlsd_image_processor: components["schemas"]["ImageOutput"]; - calculate_image_tiles_even_split: components["schemas"]["CalculateImageTilesOutput"]; - float: components["schemas"]["FloatOutput"]; - img_hue_adjust: components["schemas"]["ImageOutput"]; - lora_selector: components["schemas"]["LoRASelectorOutput"]; - invert_tensor_mask: components["schemas"]["MaskOutput"]; + img_blur: components["schemas"]["ImageOutput"]; + content_shuffle_image_processor: components["schemas"]["ImageOutput"]; + create_gradient_mask: components["schemas"]["GradientMaskOutput"]; + conditioning_collection: components["schemas"]["ConditioningCollectionOutput"]; face_off: components["schemas"]["FaceOffOutput"]; - random_range: components["schemas"]["IntegerCollectionOutput"]; - lineart_image_processor: components["schemas"]["ImageOutput"]; - img_watermark: components["schemas"]["ImageOutput"]; + hed_image_processor: components["schemas"]["ImageOutput"]; + depth_anything_image_processor: components["schemas"]["ImageOutput"]; + calculate_image_tiles_min_overlap: components["schemas"]["CalculateImageTilesOutput"]; + img_channel_offset: components["schemas"]["ImageOutput"]; + string_join_three: components["schemas"]["StringOutput"]; + blank_image: components["schemas"]["ImageOutput"]; + lora_loader: components["schemas"]["LoRALoaderOutput"]; + unsharp_mask: components["schemas"]["ImageOutput"]; + mul: components["schemas"]["IntegerOutput"]; + lora_collection_loader: components["schemas"]["LoRALoaderOutput"]; + denoise_latents: components["schemas"]["LatentsOutput"]; + compel: components["schemas"]["ConditioningOutput"]; + ip_adapter: components["schemas"]["IPAdapterOutput"]; + tiled_multi_diffusion_denoise_latents: components["schemas"]["LatentsOutput"]; + infill_lama: components["schemas"]["ImageOutput"]; + sdxl_model_loader: components["schemas"]["SDXLModelLoaderOutput"]; rectangle_mask: components["schemas"]["MaskOutput"]; + boolean: components["schemas"]["BooleanOutput"]; ideal_size: components["schemas"]["IdealSizeOutput"]; - string_collection: components["schemas"]["StringCollectionOutput"]; - canvas_paste_back: components["schemas"]["ImageOutput"]; - infill_patchmatch: components["schemas"]["ImageOutput"]; - string_replace: components["schemas"]["StringOutput"]; - integer: components["schemas"]["IntegerOutput"]; - sdxl_refiner_compel_prompt: components["schemas"]["ConditioningOutput"]; + tomask: components["schemas"]["ImageOutput"]; + merge_tiles_to_image: components["schemas"]["ImageOutput"]; + float_collection: components["schemas"]["FloatCollectionOutput"]; pidi_image_processor: components["schemas"]["ImageOutput"]; - face_identifier: components["schemas"]["ImageOutput"]; - esrgan: components["schemas"]["ImageOutput"]; - lresize: components["schemas"]["LatentsOutput"]; - img_crop: components["schemas"]["ImageOutput"]; + l2i: components["schemas"]["ImageOutput"]; + noise: components["schemas"]["NoiseOutput"]; + normalbae_image_processor: components["schemas"]["ImageOutput"]; + heuristic_resize: components["schemas"]["ImageOutput"]; + rand_int: components["schemas"]["IntegerOutput"]; + string: components["schemas"]["StringOutput"]; + clip_skip: components["schemas"]["CLIPSkipInvocationOutput"]; + dw_openpose_image_processor: components["schemas"]["ImageOutput"]; + collect: components["schemas"]["CollectInvocationOutput"]; latents: components["schemas"]["LatentsOutput"]; - lora_loader: components["schemas"]["LoRALoaderOutput"]; + canvas_paste_back: components["schemas"]["ImageOutput"]; + string_replace: components["schemas"]["StringOutput"]; + canny_image_processor: components["schemas"]["ImageOutput"]; + calculate_image_tiles_even_split: components["schemas"]["CalculateImageTilesOutput"]; + float_math: components["schemas"]["FloatOutput"]; + img_chan: components["schemas"]["ImageOutput"]; + random_range: components["schemas"]["IntegerCollectionOutput"]; infill_cv2: components["schemas"]["ImageOutput"]; - float_to_int: components["schemas"]["IntegerOutput"]; - pair_tile_image: components["schemas"]["PairTileImageOutput"]; - img_blur: components["schemas"]["ImageOutput"]; - tile_image_processor: components["schemas"]["ImageOutput"]; - main_model_loader: components["schemas"]["ModelLoaderOutput"]; - rand_int: components["schemas"]["IntegerOutput"]; - string_join: components["schemas"]["StringOutput"]; + crop_latents: components["schemas"]["LatentsOutput"]; }; /** * InvocationStartedEvent