From fd8a155eb6d2b70667d93665510a5f5f75bebe07 Mon Sep 17 00:00:00 2001
From: blessedcoolant <54517381+blessedcoolant@users.noreply.github.com>
Date: Sat, 29 Jun 2024 19:51:35 +0530
Subject: [PATCH] feat: add Tile Image Processor to Linear UI
---
.../controlnet_image_processors.py | 2 +-
invokeai/backend/model_manager/probe.py | 9 +-
invokeai/frontend/web/public/locales/en.json | 8 +
.../ControlAdapterProcessorComponent.tsx | 5 +
.../controlAdapters/store/constants.ts | 15 ++
.../features/controlAdapters/store/types.ts | 15 ++
.../ControlAdapterProcessorConfig.tsx | 5 +
.../processors/TileProcessor.tsx | 76 ++++++
.../util/controlAdapters.test.ts | 5 +
.../controlLayers/util/controlAdapters.ts | 26 ++
.../DefaultPreprocessor.tsx | 1 +
.../frontend/web/src/services/api/schema.ts | 238 +++++++++---------
12 files changed, 282 insertions(+), 123 deletions(-)
create mode 100644 invokeai/frontend/web/src/features/controlLayers/components/ControlAndIPAdapter/processors/TileProcessor.tsx
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/components/ControlAdapterProcessorComponent.tsx b/invokeai/frontend/web/src/features/controlAdapters/components/ControlAdapterProcessorComponent.tsx
index 2e37d88e272..3faf68bd101 100644
--- a/invokeai/frontend/web/src/features/controlAdapters/components/ControlAdapterProcessorComponent.tsx
+++ b/invokeai/frontend/web/src/features/controlAdapters/components/ControlAdapterProcessorComponent.tsx
@@ -1,5 +1,6 @@
import { useControlAdapterIsEnabled } from 'features/controlAdapters/hooks/useControlAdapterIsEnabled';
import { useControlAdapterProcessorNode } from 'features/controlAdapters/hooks/useControlAdapterProcessorNode';
+import { TileProcessor } from 'features/controlLayers/components/ControlAndIPAdapter/processors/TileProcessor';
import { memo } from 'react';
import CannyProcessor from './processors/CannyProcessor';
@@ -81,6 +82,10 @@ const ControlAdapterProcessorComponent = ({ id }: Props) => {
return ;
}
+ if (processorNode.type === 'tile_image_processor') {
+ return ;
+ }
+
if (processorNode.type === 'zoe_depth_image_processor') {
return ;
}
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..1e70a610bf2 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',
]);
@@ -161,6 +163,14 @@ export type RequiredPidiImageProcessorInvocation = O.Required<
'type' | 'detect_resolution' | 'image_resolution' | 'safe' | 'scribble'
>;
+/**
+ * The Tile processor node, with parameters flagged as required
+ */
+export type RequiredTileImageProcessorInvocation = O.Required<
+ Invocation<'tile_image_processor'>,
+ 'type' | 'down_sampling_rate' | 'mode'
+>;
+
/**
* The ZoeDepth processor node, with parameters flagged as required
*/
@@ -184,6 +194,7 @@ export type RequiredControlAdapterProcessorNode =
| RequiredNormalbaeImageProcessorInvocation
| RequiredDWOpenposeImageProcessorInvocation
| RequiredPidiImageProcessorInvocation
+ | RequiredTileImageProcessorInvocation
| RequiredZoeDepthImageProcessorInvocation,
'id'
>
@@ -199,6 +210,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..b725b7cd830 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: 'blur',
+ }),
+ 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