From f7998b4be06763c497b7ae9c358495bcbd91ffa2 Mon Sep 17 00:00:00 2001 From: blessedcoolant <54517381+blessedcoolant@users.noreply.github.com> Date: Sat, 10 Feb 2024 01:44:15 +0530 Subject: [PATCH] feat: Add DWPose to Linear UI --- invokeai/frontend/web/public/locales/en.json | 5 + .../ControlAdapterProcessorComponent.tsx | 5 + .../components/processors/DWPoseProcessor.tsx | 66 + .../controlAdapters/store/constants.ts | 18 +- .../features/controlAdapters/store/types.ts | 21 + .../frontend/web/src/services/api/schema.ts | 1722 ++++++++++++++++- .../frontend/web/src/services/api/types.ts | 1 + 7 files changed, 1812 insertions(+), 26 deletions(-) create mode 100644 invokeai/frontend/web/src/features/controlAdapters/components/processors/DWPoseProcessor.tsx diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index e204057fe5..508a0e8ff5 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -235,6 +235,9 @@ "fill": "Fill", "h": "H", "handAndFace": "Hand and Face", + "face": "Face", + "body": "Body", + "hands": "Hands", "hed": "HED", "hedDescription": "Holistically-Nested Edge Detection", "hideAdvanced": "Hide Advanced", @@ -263,6 +266,8 @@ "normalBaeDescription": "Normal BAE processing", "openPose": "Openpose", "openPoseDescription": "Human pose estimation using Openpose", + "dwPose": "DWPose", + "dwPoseDescription": "Human pose estimation using DWPose", "pidi": "PIDI", "pidiDescription": "PIDI image processing", "processor": "Processor", diff --git a/invokeai/frontend/web/src/features/controlAdapters/components/ControlAdapterProcessorComponent.tsx b/invokeai/frontend/web/src/features/controlAdapters/components/ControlAdapterProcessorComponent.tsx index 73d4f801c7..c3931385f2 100644 --- a/invokeai/frontend/web/src/features/controlAdapters/components/ControlAdapterProcessorComponent.tsx +++ b/invokeai/frontend/web/src/features/controlAdapters/components/ControlAdapterProcessorComponent.tsx @@ -6,6 +6,7 @@ import CannyProcessor from './processors/CannyProcessor'; import ColorMapProcessor from './processors/ColorMapProcessor'; import ContentShuffleProcessor from './processors/ContentShuffleProcessor'; import DepthAnyThingProcessor from './processors/DepthAnyThingProcessor'; +import DWPoseProcessor from './processors/DWPoseProcessor'; import HedProcessor from './processors/HedProcessor'; import LineartAnimeProcessor from './processors/LineartAnimeProcessor'; import LineartProcessor from './processors/LineartProcessor'; @@ -77,6 +78,10 @@ const ControlAdapterProcessorComponent = ({ id }: Props) => { return ; } + if (processorNode.type === 'dwpose_image_processor') { + return ; + } + if (processorNode.type === 'pidi_image_processor') { return ; } diff --git a/invokeai/frontend/web/src/features/controlAdapters/components/processors/DWPoseProcessor.tsx b/invokeai/frontend/web/src/features/controlAdapters/components/processors/DWPoseProcessor.tsx new file mode 100644 index 0000000000..c48ef73722 --- /dev/null +++ b/invokeai/frontend/web/src/features/controlAdapters/components/processors/DWPoseProcessor.tsx @@ -0,0 +1,66 @@ +import { Flex, FormControl, FormLabel, Switch } from '@invoke-ai/ui-library'; +import { useProcessorNodeChanged } from 'features/controlAdapters/components/hooks/useProcessorNodeChanged'; +import { CONTROLNET_PROCESSORS } from 'features/controlAdapters/store/constants'; +import type { RequiredDWPoseImageProcessorInvocation } from 'features/controlAdapters/store/types'; +import type { ChangeEvent } from 'react'; +import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; + +import ProcessorWrapper from './common/ProcessorWrapper'; + +const DEFAULTS = CONTROLNET_PROCESSORS.dwpose_image_processor.default as RequiredDWPoseImageProcessorInvocation; + +type Props = { + controlNetId: string; + processorNode: RequiredDWPoseImageProcessorInvocation; + isEnabled: boolean; +}; + +const DWPoseProcessor = (props: Props) => { + const { controlNetId, processorNode, isEnabled } = props; + const { draw_body, draw_face, draw_hands } = processorNode; + const processorChanged = useProcessorNodeChanged(); + const { t } = useTranslation(); + + const handleDrawBodyChanged = useCallback( + (e: ChangeEvent) => { + processorChanged(controlNetId, { draw_body: e.target.checked }); + }, + [controlNetId, processorChanged] + ); + + const handleDrawFaceChanged = useCallback( + (e: ChangeEvent) => { + processorChanged(controlNetId, { draw_face: e.target.checked }); + }, + [controlNetId, processorChanged] + ); + + const handleDrawHandsChanged = useCallback( + (e: ChangeEvent) => { + processorChanged(controlNetId, { draw_hands: e.target.checked }); + }, + [controlNetId, processorChanged] + ); + + return ( + + + + {t('controlnet.body')} + + + + {t('controlnet.face')} + + + + {t('controlnet.hands')} + + + + + ); +}; + +export default memo(DWPoseProcessor); diff --git a/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts b/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts index 61af98afc4..73ccaf74a7 100644 --- a/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts +++ b/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts @@ -221,6 +221,22 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { hand_and_face: false, }, }, + dwpose_image_processor: { + type: 'dwpose_image_processor', + get label() { + return i18n.t('controlnet.dwPose'); + }, + get description() { + return i18n.t('controlnet.dwPoseDescription'); + }, + default: { + id: 'dwpose_image_processor', + type: 'dwpose_image_processor', + draw_body: true, + draw_face: false, + draw_hands: false, + }, + }, pidi_image_processor: { type: 'pidi_image_processor', get label() { @@ -266,7 +282,7 @@ export const CONTROLNET_MODEL_DEFAULT_PROCESSORS: { lineart_anime: 'lineart_anime_image_processor', softedge: 'hed_image_processor', shuffle: 'content_shuffle_image_processor', - openpose: 'openpose_image_processor', + openpose: 'dwpose_image_processor', mediapipe: 'mediapipe_face_processor', pidi: 'pidi_image_processor', zoe: 'zoe_depth_image_processor', diff --git a/invokeai/frontend/web/src/features/controlAdapters/store/types.ts b/invokeai/frontend/web/src/features/controlAdapters/store/types.ts index 86aff63155..f761a7bc9b 100644 --- a/invokeai/frontend/web/src/features/controlAdapters/store/types.ts +++ b/invokeai/frontend/web/src/features/controlAdapters/store/types.ts @@ -11,6 +11,7 @@ import type { ColorMapImageProcessorInvocation, ContentShuffleImageProcessorInvocation, DepthAnythingImageProcessorInvocation, + DWPoseImageProcessorInvocation, HedImageProcessorInvocation, LineartAnimeImageProcessorInvocation, LineartImageProcessorInvocation, @@ -41,6 +42,7 @@ export type ControlAdapterProcessorNode = | MlsdImageProcessorInvocation | NormalbaeImageProcessorInvocation | OpenposeImageProcessorInvocation + | DWPoseImageProcessorInvocation | PidiImageProcessorInvocation | ZoeDepthImageProcessorInvocation; @@ -150,6 +152,14 @@ export type RequiredOpenposeImageProcessorInvocation = O.Required< 'type' | 'detect_resolution' | 'image_resolution' | 'hand_and_face' >; +/** + * The DWPose processor node, with parameters flagged as required + */ +export type RequiredDWPoseImageProcessorInvocation = O.Required< + DWPoseImageProcessorInvocation, + 'type' | 'draw_body' | 'draw_face' | 'draw_hands' +>; + /** * The Pidi processor node, with parameters flagged as required */ @@ -180,6 +190,7 @@ export type RequiredControlAdapterProcessorNode = | RequiredMlsdImageProcessorInvocation | RequiredNormalbaeImageProcessorInvocation | RequiredOpenposeImageProcessorInvocation + | RequiredDWPoseImageProcessorInvocation | RequiredPidiImageProcessorInvocation | RequiredZoeDepthImageProcessorInvocation, 'id' @@ -308,6 +319,16 @@ export const isOpenposeImageProcessorInvocation = (obj: unknown): obj is Openpos return false; }; +/** + * Type guard for DWPoseImageProcessorInvocation + */ +export const isDWPoseImageProcessorInvocation = (obj: unknown): obj is DWPoseImageProcessorInvocation => { + if (isObject(obj) && 'type' in obj && obj.type === 'dwpose_image_processor') { + return true; + } + return false; +}; + /** * Type guard for PidiImageProcessorInvocation */ diff --git a/invokeai/frontend/web/src/services/api/schema.ts b/invokeai/frontend/web/src/services/api/schema.ts index a4f358640d..8a45d1923a 100644 --- a/invokeai/frontend/web/src/services/api/schema.ts +++ b/invokeai/frontend/web/src/services/api/schema.ts @@ -238,6 +238,20 @@ export type paths = { */ patch: operations["sync_models_to_config"]; }; + "/api/v1/model/record/merge": { + /** + * Merge + * @description Merge diffusers models. + * + * keys: List of 2-3 model keys to merge together. All models must use the same base type. + * merged_model_name: Name for the merged model [Concat model names] + * alpha: Alpha value (0.0-1.0). Higher values give more weight to the second model [0.5] + * force: If true, force the merge even if the models were generated by different versions of the diffusers library [False] + * interp: Interpolation method. One of "weighted_sum", "sigmoid", "inv_sigmoid" or "add_difference" [weighted_sum] + * merge_dest_directory: Specify a directory to store the merged model in [models directory] + */ + put: operations["merge"]; + }; "/api/v1/download_queue/": { /** * List Downloads @@ -666,6 +680,70 @@ export type components = { */ type: "add"; }; + /** + * Adjust Image Hue Plus + * @description Adjusts the Hue of an image by rotating it in the selected color space + */ + AdjustImageHuePlusInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The image to adjust */ + image?: components["schemas"]["ImageField"]; + /** + * Space + * @description Color space in which to rotate hue by polar coords (*: non-invertible) + * @default Okhsl + * @enum {string} + */ + space?: "HSV / HSL / RGB" | "Okhsl" | "Okhsv" | "*Oklch / Oklab" | "*LCh / CIELab" | "*UPLab (w/CIELab_to_UPLab.icc)"; + /** + * Degrees + * @description Degrees by which to rotate image hue + * @default 0 + */ + degrees?: number; + /** + * Preserve Lightness + * @description Whether to preserve CIELAB lightness values + * @default false + */ + preserve_lightness?: boolean; + /** + * Ok Adaptive Gamut + * @description Higher preserves chroma at the expense of lightness (Oklab) + * @default 0.05 + */ + ok_adaptive_gamut?: number; + /** + * Ok High Precision + * @description Use more steps in computing gamut (Oklab/Okhsv/Okhsl) + * @default true + */ + ok_high_precision?: boolean; + /** + * type + * @default img_hue_adjust_plus + * @constant + */ + type: "img_hue_adjust_plus"; + }; /** * AppConfig * @description App Config Response @@ -1168,6 +1246,38 @@ export type components = { */ config?: Record | null; }; + /** Body_merge */ + Body_merge: { + /** + * Keys + * @description Keys for two to three models to merge + */ + keys: string[]; + /** + * Merged Model Name + * @description Name of destination model + */ + merged_model_name?: string | null; + /** + * Alpha + * @description Alpha weighting strength to apply to 2d and 3d models + * @default 0.5 + */ + alpha?: number; + /** + * Force + * @description Force merging of models created with different versions of diffusers + * @default false + */ + force?: boolean; + /** @description Interpolation method */ + interp?: components["schemas"]["MergeInterpolationMethod"] | null; + /** + * Merge Dest Directory + * @description Save the merged model to the designated directory (with 'merged_model_name' appended) + */ + merge_dest_directory?: string | null; + }; /** Body_merge_models */ Body_merge_models: { /** @description Model configuration */ @@ -1342,6 +1452,39 @@ export type components = { */ type: "boolean_output"; }; + /** + * BRIA AI Background Removal + * @description Uses the new Bria 1.4 model to remove backgrounds from images. + */ + BriaRemoveBackgroundInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The image to crop */ + image?: components["schemas"]["ImageField"]; + /** + * type + * @default bria_bg_remove + * @constant + */ + type: "bria_bg_remove"; + }; /** * CLIPOutput * @description Base class for invocations that output a CLIP field @@ -1436,6 +1579,282 @@ export type components = { /** @description Base model (usually 'Any') */ base_model: components["schemas"]["invokeai__backend__model_management__models__base__BaseModelType"]; }; + /** + * CMYK Color Separation + * @description Get color images from a base color and two others that subtractively mix to obtain it + */ + CMYKColorSeparationInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Width + * @description Desired image width + * @default 512 + */ + width?: number; + /** + * Height + * @description Desired image height + * @default 512 + */ + height?: number; + /** + * C Value + * @description Desired final cyan value + * @default 0 + */ + c_value?: number; + /** + * M Value + * @description Desired final magenta value + * @default 25 + */ + m_value?: number; + /** + * Y Value + * @description Desired final yellow value + * @default 28 + */ + y_value?: number; + /** + * K Value + * @description Desired final black value + * @default 76 + */ + k_value?: number; + /** + * C Split + * @description Desired cyan split point % [0..1.0] + * @default 0.5 + */ + c_split?: number; + /** + * M Split + * @description Desired magenta split point % [0..1.0] + * @default 1 + */ + m_split?: number; + /** + * Y Split + * @description Desired yellow split point % [0..1.0] + * @default 0 + */ + y_split?: number; + /** + * K Split + * @description Desired black split point % [0..1.0] + * @default 0.5 + */ + k_split?: number; + /** + * Profile + * @description CMYK Color Profile + * @default Default + * @enum {string} + */ + profile?: "Default" | "PIL"; + /** + * type + * @default cmyk_separation + * @constant + */ + type: "cmyk_separation"; + }; + /** + * CMYK Merge + * @description Merge subtractive color channels (CMYK+alpha) + */ + CMYKMergeInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The c channel */ + c_channel?: components["schemas"]["ImageField"] | null; + /** @description The m channel */ + m_channel?: components["schemas"]["ImageField"] | null; + /** @description The y channel */ + y_channel?: components["schemas"]["ImageField"] | null; + /** @description The k channel */ + k_channel?: components["schemas"]["ImageField"] | null; + /** @description The alpha channel */ + alpha_channel?: components["schemas"]["ImageField"] | null; + /** + * Profile + * @description CMYK Color Profile + * @default Default + * @enum {string} + */ + profile?: "Default" | "PIL"; + /** + * type + * @default cmyk_merge + * @constant + */ + type: "cmyk_merge"; + }; + /** + * CMYKSeparationOutput + * @description Base class for invocations that output four L-mode images (C, M, Y, K) + */ + CMYKSeparationOutput: { + /** @description Blank image of the specified color */ + color_image: components["schemas"]["ImageField"]; + /** + * Width + * @description The width of the image in pixels + */ + width: number; + /** + * Height + * @description The height of the image in pixels + */ + height: number; + /** @description Blank image of the first separated color */ + part_a: components["schemas"]["ImageField"]; + /** + * Rgb Red A + * @description R value of color part A + */ + rgb_red_a: number; + /** + * Rgb Green A + * @description G value of color part A + */ + rgb_green_a: number; + /** + * Rgb Blue A + * @description B value of color part A + */ + rgb_blue_a: number; + /** @description Blank image of the second separated color */ + part_b: components["schemas"]["ImageField"]; + /** + * Rgb Red B + * @description R value of color part B + */ + rgb_red_b: number; + /** + * Rgb Green B + * @description G value of color part B + */ + rgb_green_b: number; + /** + * Rgb Blue B + * @description B value of color part B + */ + rgb_blue_b: number; + /** + * type + * @default cmyk_separation_output + * @constant + */ + type: "cmyk_separation_output"; + }; + /** + * CMYK Split + * @description Split an image into subtractive color channels (CMYK+alpha) + */ + CMYKSplitInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The image to halftone */ + image?: components["schemas"]["ImageField"]; + /** + * Profile + * @description CMYK Color Profile + * @default Default + * @enum {string} + */ + profile?: "Default" | "PIL"; + /** + * type + * @default cmyk_split + * @constant + */ + type: "cmyk_split"; + }; + /** + * CMYKSplitOutput + * @description Base class for invocations that output four L-mode images (C, M, Y, K) + */ + CMYKSplitOutput: { + /** @description Grayscale image of the cyan channel */ + c_channel: components["schemas"]["ImageField"]; + /** @description Grayscale image of the magenta channel */ + m_channel: components["schemas"]["ImageField"]; + /** @description Grayscale image of the yellow channel */ + y_channel: components["schemas"]["ImageField"]; + /** @description Grayscale image of the k channel */ + k_channel: components["schemas"]["ImageField"]; + /** @description Grayscale image of the alpha channel */ + alpha_channel: components["schemas"]["ImageField"]; + /** + * Width + * @description The width of the image in pixels + */ + width: number; + /** + * Height + * @description The height of the image in pixels + */ + height: number; + /** + * type + * @default cmyk_split_output + * @constant + */ + type: "cmyk_split_output"; + }; /** * CV2 Infill * @description Infills transparent areas of an image using OpenCV Inpainting @@ -3053,6 +3472,54 @@ export type components = { */ type: "cv_inpaint"; }; + /** + * DWPose Image Processor + * @description Generates an openpose pose from an image using DWPose + */ + DWPoseImageProcessorInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The image to process */ + image?: components["schemas"]["ImageField"]; + /** + * Draw Body + * @default true + */ + draw_body?: boolean; + /** + * Draw Face + * @default false + */ + draw_face?: boolean; + /** + * Draw Hands + * @default false + */ + draw_hands?: boolean; + /** + * type + * @default dwpose_image_processor + * @constant + */ + type: "dwpose_image_processor"; + }; /** DeleteBoardResult */ DeleteBoardResult: { /** @@ -3523,6 +3990,39 @@ export type components = { */ priority: number; }; + /** + * Equivalent Achromatic Lightness + * @description Calculate Equivalent Achromatic Lightness from image + */ + EquivalentAchromaticLightnessInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description Image from which to get channel */ + image?: components["schemas"]["ImageField"]; + /** + * type + * @default ealightness + * @constant + */ + type: "ealightness"; + }; /** ExposedField */ ExposedField: { /** Nodeid */ @@ -3775,6 +4275,39 @@ export type components = { */ y: number; }; + /** + * Flatten Histogram (Grayscale) + * @description Scales the values of an L-mode image by scaling them to the full range 0..255 in equal proportions + */ + FlattenHistogramMono: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description Single-channel image for which to flatten the histogram */ + image?: components["schemas"]["ImageField"]; + /** + * type + * @default flatten_histogram_mono + * @constant + */ + type: "flatten_histogram_mono"; + }; /** * Float Collection Primitive * @description A collection of float primitive values @@ -4124,7 +4657,7 @@ export type components = { * @description The nodes in this graph */ nodes?: { - [key: string]: components["schemas"]["LatentConsistencyInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["LinearUIOutputInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["ColorMapImageProcessorInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["DepthAnythingImageProcessorInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["LeresImageProcessorInvocation"]; + [key: string]: components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["ImageEnhanceInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["HandDepthMeshGraphormerProcessor"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["ImageValueThresholdsInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["MaskedBlendLatentsInvocation"] | components["schemas"]["DWPoseImageProcessorInvocation"] | components["schemas"]["FlattenHistogramMono"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["EquivalentAchromaticLightnessInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["LatentConsistencyInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["ColorMapImageProcessorInvocation"] | components["schemas"]["NoiseImage2DInvocation"] | components["schemas"]["ShadowsHighlightsMidtonesMaskInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["TextToMaskClipsegInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["CMYKSplitInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["ImageRotateInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["DepthAnythingImageProcessorInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["NoiseSpectralInvocation"] | components["schemas"]["CMYKColorSeparationInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["BriaRemoveBackgroundInvocation"] | components["schemas"]["CMYKMergeInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["TextToMaskClipsegAdvancedInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["TextMaskInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["ImageOffsetInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["AdjustImageHuePlusInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["LinearUIOutputInvocation"] | components["schemas"]["ImageDilateOrErodeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["ImageCompositorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["OffsetLatentsInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ImageBlendInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["SchedulerInvocation"]; }; /** * Edges @@ -4161,7 +4694,7 @@ export type components = { * @description The results of node executions */ results: { - [key: string]: components["schemas"]["ColorCollectionOutput"] | components["schemas"]["PairTileImageOutput"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["FaceOffOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["VAEOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["StringPosNegOutput"] | components["schemas"]["LoraLoaderOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["CollectInvocationOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["MetadataItemOutput"] | components["schemas"]["SDXLLoraLoaderOutput"] | components["schemas"]["T2IAdapterOutput"] | components["schemas"]["IdealSizeOutput"] | components["schemas"]["UNetOutput"] | components["schemas"]["TileToPropertiesOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["GraphInvocationOutput"] | components["schemas"]["BooleanOutput"] | components["schemas"]["CLIPOutput"] | components["schemas"]["MetadataOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["ClipSkipInvocationOutput"] | components["schemas"]["ONNXModelLoaderOutput"] | components["schemas"]["IPAdapterOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["String2Output"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["FaceMaskOutput"] | components["schemas"]["CalculateImageTilesOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["ImageOutput"]; + [key: string]: components["schemas"]["StringPosNegOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["T2IAdapterOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["CalculateImageTilesOutput"] | components["schemas"]["FaceOffOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["GraphInvocationOutput"] | components["schemas"]["UNetOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["MetadataOutput"] | components["schemas"]["PairTileImageOutput"] | components["schemas"]["CMYKSeparationOutput"] | components["schemas"]["IdealSizeOutput"] | components["schemas"]["String2Output"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["CLIPOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["FaceMaskOutput"] | components["schemas"]["SDXLLoraLoaderOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["TileToPropertiesOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["LoraLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["CollectInvocationOutput"] | components["schemas"]["ClipSkipInvocationOutput"] | components["schemas"]["ShadowsHighlightsMidtonesMasksOutput"] | components["schemas"]["HandDepthOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["BooleanOutput"] | components["schemas"]["IPAdapterOutput"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["MetadataItemOutput"] | components["schemas"]["ONNXModelLoaderOutput"] | components["schemas"]["VAEOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["CMYKSplitOutput"]; }; /** * Errors @@ -4252,6 +4785,83 @@ export type components = { /** Detail */ detail?: components["schemas"]["ValidationError"][]; }; + /** + * Hand Depth w/ MeshGraphormer + * @description Generate hand depth maps to inpaint with using ControlNet + */ + HandDepthMeshGraphormerProcessor: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The image to process */ + image?: components["schemas"]["ImageField"]; + /** + * Resolution + * @description Pixel resolution for output image + * @default 512 + */ + resolution?: number; + /** + * Mask Padding + * @description Amount to pad the hand mask by + * @default 30 + */ + mask_padding?: number; + /** + * Offload + * @description Offload model after usage + * @default false + */ + offload?: boolean; + /** + * type + * @default hand_depth_mesh_graphormer_image_processor + * @constant + */ + type: "hand_depth_mesh_graphormer_image_processor"; + }; + /** + * HandDepthOutput + * @description Base class for to output Meshgraphormer results + */ + HandDepthOutput: { + /** @description Improved hands depth map */ + image: components["schemas"]["ImageField"]; + /** @description Hands area mask */ + mask: components["schemas"]["ImageField"]; + /** + * Width + * @description The width of the depth map in pixels + */ + width: number; + /** + * Height + * @description The height of the depth map in pixels + */ + height: number; + /** + * type + * @default meshgraphormer_output + * @constant + */ + type: "meshgraphormer_output"; + }; /** * HED (softedge) Processor * @description Applies HED edge detection to image @@ -4622,6 +5232,87 @@ export type components = { */ type: "ideal_size_output"; }; + /** + * Image Layer Blend + * @description Blend two images together, with optional opacity, mask, and blend modes + */ + ImageBlendInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The top image to blend */ + layer_upper?: components["schemas"]["ImageField"]; + /** + * Blend Mode + * @description Available blend modes + * @default Normal + * @enum {string} + */ + blend_mode?: "Normal" | "Lighten Only" | "Darken Only" | "Lighten Only (EAL)" | "Darken Only (EAL)" | "Hue" | "Saturation" | "Color" | "Luminosity" | "Linear Dodge (Add)" | "Subtract" | "Multiply" | "Divide" | "Screen" | "Overlay" | "Linear Burn" | "Difference" | "Hard Light" | "Soft Light" | "Vivid Light" | "Linear Light" | "Color Burn" | "Color Dodge"; + /** + * Opacity + * @description Desired opacity of the upper layer + * @default 1 + */ + opacity?: number; + /** @description Optional mask, used to restrict areas from blending */ + mask?: components["schemas"]["ImageField"] | null; + /** + * Fit To Width + * @description Scale upper layer to fit base width + * @default false + */ + fit_to_width?: boolean; + /** + * Fit To Height + * @description Scale upper layer to fit base height + * @default true + */ + fit_to_height?: boolean; + /** @description The bottom image to blend */ + layer_base?: components["schemas"]["ImageField"]; + /** + * Color Space + * @description Available color spaces for blend computations + * @default Linear RGB + * @enum {string} + */ + color_space?: "RGB" | "Linear RGB" | "HSL (RGB)" | "HSV (RGB)" | "Okhsl" | "Okhsv" | "Oklch (Oklab)" | "LCh (CIELab)"; + /** + * Adaptive Gamut + * @description Adaptive gamut clipping (0=off). Higher prioritizes chroma over lightness + * @default 0 + */ + adaptive_gamut?: number; + /** + * High Precision + * @description Use more steps in computing gamut when possible + * @default true + */ + high_precision?: boolean; + /** + * type + * @default img_blend + * @constant + */ + type: "img_blend"; + }; /** * Blur Image * @description Blurs an image @@ -4867,6 +5558,77 @@ export type components = { */ type: "image_collection_output"; }; + /** + * Image Compositor + * @description Removes backdrop from subject image then overlays subject on background image + */ + ImageCompositorInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description Image of the subject on a plain monochrome background */ + image_subject?: components["schemas"]["ImageField"]; + /** @description Image of a background scene */ + image_background?: components["schemas"]["ImageField"]; + /** + * Chroma Key + * @description Can be empty for corner flood select, or CSS-3 color or tuple + * @default + */ + chroma_key?: string; + /** + * Threshold + * @description Subject isolation flood-fill threshold + * @default 50 + */ + threshold?: number; + /** + * Fill X + * @description Scale base subject image to fit background width + * @default false + */ + fill_x?: boolean; + /** + * Fill Y + * @description Scale base subject image to fit background height + * @default true + */ + fill_y?: boolean; + /** + * X Offset + * @description x-offset for the subject + * @default 0 + */ + x_offset?: number; + /** + * Y Offset + * @description y-offset for the subject + * @default 0 + */ + y_offset?: number; + /** + * type + * @default img_composite + * @constant + */ + type: "img_composite"; + }; /** * Convert Image Mode * @description Converts an image to a different mode. @@ -5044,6 +5806,127 @@ export type components = { */ board_id?: string | null; }; + /** + * Image Dilate or Erode + * @description Dilate (expand) or erode (contract) an image + */ + ImageDilateOrErodeInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The image from which to create a mask */ + image?: components["schemas"]["ImageField"]; + /** + * Lightness Only + * @description If true, only applies to image lightness (CIELa*b*) + * @default false + */ + lightness_only?: boolean; + /** + * Radius W + * @description Width (in pixels) by which to dilate(expand) or erode (contract) the image + * @default 4 + */ + radius_w?: number; + /** + * Radius H + * @description Height (in pixels) by which to dilate(expand) or erode (contract) the image + * @default 4 + */ + radius_h?: number; + /** + * Mode + * @description How to operate on the image + * @default Dilate + * @enum {string} + */ + mode?: "Dilate" | "Erode"; + /** + * type + * @default img_dilate_erode + * @constant + */ + type: "img_dilate_erode"; + }; + /** + * Enhance Image + * @description Applies processing from PIL's ImageEnhance module. + */ + ImageEnhanceInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The image for which to apply processing */ + image?: components["schemas"]["ImageField"]; + /** + * Invert + * @description Whether to invert the image colors + * @default false + */ + invert?: boolean; + /** + * Color + * @description Color enhancement factor + * @default 1 + */ + color?: number; + /** + * Contrast + * @description Contrast enhancement factor + * @default 1 + */ + contrast?: number; + /** + * Brightness + * @description Brightness enhancement factor + * @default 1 + */ + brightness?: number; + /** + * Sharpness + * @description Sharpness enhancement factor + * @default 1 + */ + sharpness?: number; + /** + * type + * @default img_enhance + * @constant + */ + type: "img_enhance"; + }; /** * ImageField * @description An image primitive field @@ -5283,6 +6166,57 @@ export type components = { */ type: "img_nsfw"; }; + /** + * Offset Image + * @description Offsets an image by a given percentage (or pixel amount). + */ + ImageOffsetInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * As Pixels + * @description Interpret offsets as pixels rather than percentages + * @default false + */ + as_pixels?: boolean; + /** @description Image to be offset */ + image?: components["schemas"]["ImageField"]; + /** + * X Offset + * @description x-offset for the subject + * @default 0.5 + */ + x_offset?: number; + /** + * Y Offset + * @description y-offset for the subject + * @default 0.5 + */ + y_offset?: number; + /** + * type + * @default offset_image + * @constant + */ + type: "offset_image"; + }; /** * ImageOutput * @description Base class for nodes that output a single image @@ -5444,6 +6378,63 @@ export type components = { */ type: "img_resize"; }; + /** + * Rotate/Flip Image + * @description Rotates an image by a given angle (in degrees clockwise). + */ + ImageRotateInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description Image to be rotated clockwise */ + image?: components["schemas"]["ImageField"]; + /** + * Degrees + * @description Angle (in degrees clockwise) by which to rotate + * @default 90 + */ + degrees?: number; + /** + * Expand To Fit + * @description If true, extends the image boundary to fit the rotated content + * @default true + */ + expand_to_fit?: boolean; + /** + * Flip Horizontal + * @description If true, flips the image horizontally + * @default false + */ + flip_horizontal?: boolean; + /** + * Flip Vertical + * @description If true, flips the image vertically + * @default false + */ + flip_vertical?: boolean; + /** + * type + * @default rotate_image + * @constant + */ + type: "rotate_image"; + }; /** * Scale Image * @description Scales an image by a factor @@ -5556,6 +6547,69 @@ export type components = { */ thumbnail_url: string; }; + /** + * Image Value Thresholds + * @description Clip image to pure black/white past specified thresholds + */ + ImageValueThresholdsInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The image from which to create a mask */ + image?: components["schemas"]["ImageField"]; + /** + * Invert Output + * @description Make light areas dark and vice versa + * @default false + */ + invert_output?: boolean; + /** + * Renormalize Values + * @description Rescale remaining values from minimum to maximum + * @default false + */ + renormalize_values?: boolean; + /** + * Lightness Only + * @description If true, only applies to image lightness (CIELa*b*) + * @default false + */ + lightness_only?: boolean; + /** + * Threshold Upper + * @description Threshold above which will be set to full value + * @default 0.5 + */ + threshold_upper?: number; + /** + * Threshold Lower + * @description Threshold below which will be set to minimum value + * @default 0.5 + */ + threshold_lower?: number; + /** + * type + * @default img_val_thresholds + * @constant + */ + type: "img_val_thresholds"; + }; /** * Add Invisible Watermark * @description Add an invisible watermark to an image @@ -7016,6 +8070,47 @@ export type components = { */ type: "tomask"; }; + /** + * Blend Latents/Noise (Masked) + * @description Blend two latents using a given alpha and mask. Latents must have same size. + */ + MaskedBlendLatentsInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description Latents tensor */ + latents_a?: components["schemas"]["LatentsField"]; + /** @description Latents tensor */ + latents_b?: components["schemas"]["LatentsField"]; + /** @description Mask for blending in latents B */ + mask?: components["schemas"]["ImageField"]; + /** + * Alpha + * @description Blending factor. 0.0 = use input A only, 1.0 = use input B only, 0.5 = 50% mix of input A and input B. + * @default 0.5 + */ + alpha?: number; + /** + * type + * @default lmblend + * @constant + */ + type: "lmblend"; + }; /** * Mediapipe Face Processor * @description Applies mediapipe face processing to image @@ -7470,8 +8565,9 @@ export type components = { /** * Bytes * @description For a remote model, the number of bytes downloaded so far (may not be available) + * @default 0 */ - bytes?: number | null; + bytes?: number; /** * Total Bytes * @description Total size of the model to be installed @@ -7619,6 +8715,86 @@ export type components = { */ value: string | number; }; + /** + * 2D Noise Image + * @description Creates an image of 2D Noise approximating the desired characteristics + */ + NoiseImage2DInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Noise Type + * @description Desired noise spectral characteristics + * @default White + * @enum {string} + */ + noise_type?: "White" | "Red" | "Blue" | "Green"; + /** + * Width + * @description Desired image width + * @default 512 + */ + width?: number; + /** + * Height + * @description Desired image height + * @default 512 + */ + height?: number; + /** + * Seed + * @description Seed for noise generation + * @default 0 + */ + seed?: number; + /** + * Iterations + * @description Noise approx. iterations + * @default 15 + */ + iterations?: number; + /** + * Blur Threshold + * @description Threshold used in computing noise (lower is better/slower) + * @default 0.2 + */ + blur_threshold?: number; + /** + * Sigma Red + * @description Sigma for strong gaussian blur LPF for red/green + * @default 3 + */ + sigma_red?: number; + /** + * Sigma Blue + * @description Sigma for weak gaussian blur HPF for blue/green + * @default 1 + */ + sigma_blue?: number; + /** + * type + * @default noiseimg_2d + * @constant + */ + type: "noiseimg_2d"; + }; /** * Noise * @description Generates latent noise. @@ -7696,6 +8872,84 @@ export type components = { */ type: "noise_output"; }; + /** + * Noise (Spectral characteristics) + * @description Creates an image of 2D Noise approximating the desired characteristics + */ + NoiseSpectralInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Noise Type + * @description Desired noise spectral characteristics + * @default White + * @enum {string} + */ + noise_type?: "White" | "Red" | "Blue" | "Green"; + /** + * Width + * @description Desired image width + * @default 512 + */ + width?: number; + /** + * Height + * @description Desired image height + * @default 512 + */ + height?: number; + /** + * Seed + * @description Seed for noise generation + * @default 0 + */ + seed?: number; + /** + * Iterations + * @description Noise approx. iterations + * @default 15 + */ + iterations?: number; + /** + * Blur Threshold + * @description Threshold used in computing noise (lower is better/slower) + * @default 0.2 + */ + blur_threshold?: number; + /** + * Sigma Red + * @description Sigma for strong gaussian blur LPF for red/green + * @default 3 + */ + sigma_red?: number; + /** + * Sigma Blue + * @description Sigma for weak gaussian blur HPF for blue/green + * @default 1 + */ + sigma_blue?: number; + /** + * type + * @default noise_spectral + * @constant + */ + type: "noise_spectral"; + }; /** * Normal BAE Processor * @description Applies NormalBae processing to image @@ -8091,6 +9345,49 @@ export type components = { */ type: "t2l_onnx"; }; + /** + * Offset Latents + * @description Offsets a latents tensor by a given percentage of height/width. + */ + OffsetLatentsInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description Latents tensor */ + latents?: components["schemas"]["LatentsField"]; + /** + * X Offset + * @description Approx percentage to offset (H) + * @default 0.5 + */ + x_offset?: number; + /** + * Y Offset + * @description Approx percentage to offset (V) + * @default 0.5 + */ + y_offset?: number; + /** + * type + * @default offset_latents + * @constant + */ + type: "offset_latents"; + }; /** OffsetPaginatedResults[BoardDTO] */ OffsetPaginatedResults_BoardDTO_: { /** @@ -9637,6 +10934,106 @@ export type components = { */ total: number; }; + /** + * Shadows/Highlights/Midtones + * @description Extract a Shadows/Highlights/Midtones mask from an image + */ + ShadowsHighlightsMidtonesMaskInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description Image from which to extract mask */ + image?: components["schemas"]["ImageField"]; + /** + * Invert Output + * @description Off: white on black / On: black on white + * @default true + */ + invert_output?: boolean; + /** + * Highlight Threshold + * @description Threshold beyond which mask values will be at extremum + * @default 0.75 + */ + highlight_threshold?: number; + /** + * Upper Mid Threshold + * @description Threshold to which to extend mask border by 0..1 gradient + * @default 0.7 + */ + upper_mid_threshold?: number; + /** + * Lower Mid Threshold + * @description Threshold to which to extend mask border by 0..1 gradient + * @default 0.3 + */ + lower_mid_threshold?: number; + /** + * Shadow Threshold + * @description Threshold beyond which mask values will be at extremum + * @default 0.25 + */ + shadow_threshold?: number; + /** + * Mask Expand Or Contract + * @description Pixels to grow (or shrink) the mask areas + * @default 0 + */ + mask_expand_or_contract?: number; + /** + * Mask Blur + * @description Gaussian blur radius to apply to the masks + * @default 0 + */ + mask_blur?: number; + /** + * type + * @default shmmask + * @constant + */ + type: "shmmask"; + }; + /** ShadowsHighlightsMidtonesMasksOutput */ + ShadowsHighlightsMidtonesMasksOutput: { + /** @description Soft-edged highlights mask */ + highlights_mask?: components["schemas"]["ImageField"]; + /** @description Soft-edged midtones mask */ + midtones_mask?: components["schemas"]["ImageField"]; + /** @description Soft-edged shadows mask */ + shadows_mask?: components["schemas"]["ImageField"]; + /** + * Width + * @description Width of the input/outputs + */ + width: number; + /** + * Height + * @description Height of the input/outputs + */ + height: number; + /** + * type + * @default shmmask_output + * @constant + */ + type: "shmmask_output"; + }; /** * Show Image * @description Displays a provided image using the OS image viewer, and passes it forward in the pipeline. @@ -10518,6 +11915,249 @@ export type components = { /** Right */ right: number; }; + /** + * Text Mask + * @description Creates a 2D rendering of a text mask from a given font + */ + TextMaskInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Width + * @description The width of the desired mask + * @default 512 + */ + width?: number; + /** + * Height + * @description The height of the desired mask + * @default 512 + */ + height?: number; + /** + * Text + * @description The text to render + * @default + */ + text?: string; + /** + * Font + * @description Path to a FreeType-supported TTF/OTF font file + * @default + */ + font?: string; + /** + * Size + * @description Desired point size of text to use + * @default 64 + */ + size?: number; + /** + * Angle + * @description Angle of rotation to apply to the text + * @default 0 + */ + angle?: number; + /** + * X Offset + * @description x-offset for text rendering + * @default 24 + */ + x_offset?: number; + /** + * Y Offset + * @description y-offset for text rendering + * @default 36 + */ + y_offset?: number; + /** + * Invert + * @description Whether to invert color of the output + * @default false + */ + invert?: boolean; + /** + * type + * @default text_mask + * @constant + */ + type: "text_mask"; + }; + /** + * Text to Mask Advanced (Clipseg) + * @description Uses the Clipseg model to generate an image mask from a text prompt + */ + TextToMaskClipsegAdvancedInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The image from which to create a mask */ + image?: components["schemas"]["ImageField"]; + /** + * Invert Output + * @description Off: white on black / On: black on white + * @default true + */ + invert_output?: boolean; + /** + * Prompt 1 + * @description First prompt with which to create a mask + */ + prompt_1?: string; + /** + * Prompt 2 + * @description Second prompt with which to create a mask (optional) + */ + prompt_2?: string; + /** + * Prompt 3 + * @description Third prompt with which to create a mask (optional) + */ + prompt_3?: string; + /** + * Prompt 4 + * @description Fourth prompt with which to create a mask (optional) + */ + prompt_4?: string; + /** + * Combine + * @description How to combine the results + * @default or + * @enum {string} + */ + combine?: "or" | "and" | "none (rgba multiplex)"; + /** + * Smoothing + * @description Radius of blur to apply before thresholding + * @default 4 + */ + smoothing?: number; + /** + * Subject Threshold + * @description Threshold above which is considered the subject + * @default 1 + */ + subject_threshold?: number; + /** + * Background Threshold + * @description Threshold below which is considered the background + * @default 0 + */ + background_threshold?: number; + /** + * type + * @default txt2mask_clipseg_adv + * @constant + */ + type: "txt2mask_clipseg_adv"; + }; + /** + * Text to Mask (Clipseg) + * @description Uses the Clipseg model to generate an image mask from a text prompt + */ + TextToMaskClipsegInvocation: { + /** @description Optional metadata to be saved with the image */ + metadata?: components["schemas"]["MetadataField"] | null; + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** @description The image from which to create a mask */ + image?: components["schemas"]["ImageField"]; + /** + * Invert Output + * @description Off: white on black / On: black on white + * @default true + */ + invert_output?: boolean; + /** + * Prompt + * @description The prompt with which to create a mask + */ + prompt?: string; + /** + * Smoothing + * @description Radius of blur to apply before thresholding + * @default 4 + */ + smoothing?: number; + /** + * Subject Threshold + * @description Threshold above which is considered the subject + * @default 0.4 + */ + subject_threshold?: number; + /** + * Background Threshold + * @description Threshold below which is considered the background + * @default 0.4 + */ + background_threshold?: number; + /** + * Mask Expand Or Contract + * @description Pixels by which to grow (or shrink) mask after thresholding + * @default 0 + */ + mask_expand_or_contract?: number; + /** + * Mask Blur + * @description Radius of blur to apply after thresholding + * @default 0 + */ + mask_blur?: number; + /** + * type + * @default txt2mask_clipseg + * @constant + */ + type: "txt2mask_clipseg"; + }; /** * TextualInversionConfig * @description Model config for textual inversion embeddings. @@ -11503,11 +13143,11 @@ export type components = { */ UIType: "SDXLMainModelField" | "SDXLRefinerModelField" | "ONNXModelField" | "VAEModelField" | "LoRAModelField" | "ControlNetModelField" | "IPAdapterModelField" | "SchedulerField" | "AnyField" | "CollectionField" | "CollectionItemField" | "DEPRECATED_Boolean" | "DEPRECATED_Color" | "DEPRECATED_Conditioning" | "DEPRECATED_Control" | "DEPRECATED_Float" | "DEPRECATED_Image" | "DEPRECATED_Integer" | "DEPRECATED_Latents" | "DEPRECATED_String" | "DEPRECATED_BooleanCollection" | "DEPRECATED_ColorCollection" | "DEPRECATED_ConditioningCollection" | "DEPRECATED_ControlCollection" | "DEPRECATED_FloatCollection" | "DEPRECATED_ImageCollection" | "DEPRECATED_IntegerCollection" | "DEPRECATED_LatentsCollection" | "DEPRECATED_StringCollection" | "DEPRECATED_BooleanPolymorphic" | "DEPRECATED_ColorPolymorphic" | "DEPRECATED_ConditioningPolymorphic" | "DEPRECATED_ControlPolymorphic" | "DEPRECATED_FloatPolymorphic" | "DEPRECATED_ImagePolymorphic" | "DEPRECATED_IntegerPolymorphic" | "DEPRECATED_LatentsPolymorphic" | "DEPRECATED_StringPolymorphic" | "DEPRECATED_MainModel" | "DEPRECATED_UNet" | "DEPRECATED_Vae" | "DEPRECATED_CLIP" | "DEPRECATED_Collection" | "DEPRECATED_CollectionItem" | "DEPRECATED_Enum" | "DEPRECATED_WorkflowField" | "DEPRECATED_IsIntermediate" | "DEPRECATED_BoardField" | "DEPRECATED_MetadataItem" | "DEPRECATED_MetadataItemCollection" | "DEPRECATED_MetadataItemPolymorphic" | "DEPRECATED_MetadataDict"; /** - * StableDiffusionXLModelFormat + * StableDiffusion1ModelFormat * @description An enumeration. * @enum {string} */ - StableDiffusionXLModelFormat: "checkpoint" | "diffusers"; + StableDiffusion1ModelFormat: "checkpoint" | "diffusers"; /** * CLIPVisionModelFormat * @description An enumeration. @@ -11515,41 +13155,41 @@ export type components = { */ CLIPVisionModelFormat: "diffusers"; /** - * ControlNetModelFormat + * StableDiffusionXLModelFormat * @description An enumeration. * @enum {string} */ - ControlNetModelFormat: "checkpoint" | "diffusers"; - /** - * T2IAdapterModelFormat - * @description An enumeration. - * @enum {string} - */ - T2IAdapterModelFormat: "diffusers"; - /** - * StableDiffusion1ModelFormat - * @description An enumeration. - * @enum {string} - */ - StableDiffusion1ModelFormat: "checkpoint" | "diffusers"; - /** - * StableDiffusion2ModelFormat - * @description An enumeration. - * @enum {string} - */ - StableDiffusion2ModelFormat: "checkpoint" | "diffusers"; + StableDiffusionXLModelFormat: "checkpoint" | "diffusers"; /** * StableDiffusionOnnxModelFormat * @description An enumeration. * @enum {string} */ StableDiffusionOnnxModelFormat: "olive" | "onnx"; + /** + * StableDiffusion2ModelFormat + * @description An enumeration. + * @enum {string} + */ + StableDiffusion2ModelFormat: "checkpoint" | "diffusers"; + /** + * T2IAdapterModelFormat + * @description An enumeration. + * @enum {string} + */ + T2IAdapterModelFormat: "diffusers"; /** * IPAdapterModelFormat * @description An enumeration. * @enum {string} */ IPAdapterModelFormat: "invokeai"; + /** + * ControlNetModelFormat + * @description An enumeration. + * @enum {string} + */ + ControlNetModelFormat: "checkpoint" | "diffusers"; }; responses: never; parameters: never; @@ -12428,6 +14068,38 @@ export type operations = { }; }; }; + /** + * Merge + * @description Merge diffusers models. + * + * keys: List of 2-3 model keys to merge together. All models must use the same base type. + * merged_model_name: Name for the merged model [Concat model names] + * alpha: Alpha value (0.0-1.0). Higher values give more weight to the second model [0.5] + * force: If true, force the merge even if the models were generated by different versions of the diffusers library [False] + * interp: Interpolation method. One of "weighted_sum", "sigmoid", "inv_sigmoid" or "add_difference" [weighted_sum] + * merge_dest_directory: Specify a directory to store the merged model in [models directory] + */ + merge: { + requestBody: { + content: { + "application/json": components["schemas"]["Body_merge"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": (components["schemas"]["MainDiffusersConfig"] | components["schemas"]["MainCheckpointConfig"]) | (components["schemas"]["ONNXSD1Config"] | components["schemas"]["ONNXSD2Config"]) | (components["schemas"]["VaeDiffusersConfig"] | components["schemas"]["VaeCheckpointConfig"]) | (components["schemas"]["ControlNetDiffusersConfig"] | components["schemas"]["ControlNetCheckpointConfig"]) | components["schemas"]["LoRAConfig"] | components["schemas"]["TextualInversionConfig"] | components["schemas"]["IPAdapterConfig"] | components["schemas"]["CLIPVisionDiffusersConfig"] | components["schemas"]["T2IConfig"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; /** * List Downloads * @description Get a list of active and inactive jobs. diff --git a/invokeai/frontend/web/src/services/api/types.ts b/invokeai/frontend/web/src/services/api/types.ts index e8d2f1a863..64e56d3243 100644 --- a/invokeai/frontend/web/src/services/api/types.ts +++ b/invokeai/frontend/web/src/services/api/types.ts @@ -157,6 +157,7 @@ export type MidasDepthImageProcessorInvocation = s['MidasDepthImageProcessorInvo export type MlsdImageProcessorInvocation = s['MlsdImageProcessorInvocation']; export type NormalbaeImageProcessorInvocation = s['NormalbaeImageProcessorInvocation']; export type OpenposeImageProcessorInvocation = s['OpenposeImageProcessorInvocation']; +export type DWPoseImageProcessorInvocation = s['DWPoseImageProcessorInvocation']; export type PidiImageProcessorInvocation = s['PidiImageProcessorInvocation']; export type ZoeDepthImageProcessorInvocation = s['ZoeDepthImageProcessorInvocation'];