From 67cbfeb33d0c75ca2caaba585804aa410e604224 Mon Sep 17 00:00:00 2001 From: blessedcoolant <54517381+blessedcoolant@users.noreply.github.com> Date: Sat, 10 Feb 2024 03:35:10 +0530 Subject: [PATCH] feat: Add output image resizing for DWPose --- .../controlnet_image_processors.py | 11 +++++-- .../backend/image_util/dwpose/__init__.py | 17 ++++++++--- .../components/processors/DWPoseProcessor.tsx | 29 +++++++++++++++++-- .../controlAdapters/store/constants.ts | 1 + .../features/controlAdapters/store/types.ts | 2 +- .../frontend/web/src/services/api/schema.ts | 26 ++++++++++------- 6 files changed, 67 insertions(+), 19 deletions(-) diff --git a/invokeai/app/invocations/controlnet_image_processors.py b/invokeai/app/invocations/controlnet_image_processors.py index 9e18225ee3..41344ede8d 100644 --- a/invokeai/app/invocations/controlnet_image_processors.py +++ b/invokeai/app/invocations/controlnet_image_processors.py @@ -292,7 +292,7 @@ class OpenposeImageProcessorInvocation(ImageProcessorInvocation): image_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.image_res) def run_processor(self, image): - openpose_processor = OpenposeDetector.from_pretrained("lllyasviel/Annotators") + openpose_processor = OpenposeDetector.from_pretrained(pretrained_model_or_path="lllyasviel/Annotators") processed_image = openpose_processor( image, detect_resolution=self.detect_resolution, @@ -649,8 +649,15 @@ class DWPoseImageProcessorInvocation(ImageProcessorInvocation): draw_body: bool = InputField(default=True) draw_face: bool = InputField(default=False) draw_hands: bool = InputField(default=False) + image_resolution: int = InputField(default=512, ge=0, description=FieldDescriptions.image_res) def run_processor(self, image): dwpose = DWPoseDetector() - processed_image = dwpose(image, draw_face=self.draw_face, draw_hands=self.draw_hands, draw_body=self.draw_body) + processed_image = dwpose( + image, + draw_face=self.draw_face, + draw_hands=self.draw_hands, + draw_body=self.draw_body, + resolution=self.image_resolution, + ) return processed_image diff --git a/invokeai/backend/image_util/dwpose/__init__.py b/invokeai/backend/image_util/dwpose/__init__.py index 05c0687247..f25a252a74 100644 --- a/invokeai/backend/image_util/dwpose/__init__.py +++ b/invokeai/backend/image_util/dwpose/__init__.py @@ -1,12 +1,13 @@ import numpy as np import torch +from controlnet_aux.util import resize_image from PIL import Image from invokeai.backend.image_util.dwpose.utils import draw_bodypose, draw_facepose, draw_handpose from invokeai.backend.image_util.dwpose.wholebody import Wholebody -def draw_pose(pose, H, W, draw_face=True, draw_body=True, draw_hands=True): +def draw_pose(pose, H, W, draw_face=True, draw_body=True, draw_hands=True, resolution=512): bodies = pose["bodies"] faces = pose["faces"] hands = pose["hands"] @@ -23,7 +24,11 @@ def draw_pose(pose, H, W, draw_face=True, draw_body=True, draw_hands=True): if draw_face: canvas = draw_facepose(canvas, faces) - dwpose_image = Image.fromarray(canvas) + dwpose_image = resize_image( + canvas, + resolution, + ) + dwpose_image = Image.fromarray(dwpose_image) return dwpose_image @@ -32,7 +37,9 @@ class DWPoseDetector: def __init__(self) -> None: self.pose_estimation = Wholebody() - def __call__(self, image: Image.Image, draw_face=False, draw_body=True, draw_hands=False) -> Image.Image: + def __call__( + self, image: Image.Image, draw_face=False, draw_body=True, draw_hands=False, resolution=512 + ) -> Image.Image: np_image = np.array(image) H, W, C = np_image.shape @@ -64,4 +71,6 @@ class DWPoseDetector: bodies = {"candidate": body, "subset": score} pose = {"bodies": bodies, "hands": hands, "faces": faces} - return draw_pose(pose, H, W, draw_face=draw_face, draw_hands=draw_hands, draw_body=draw_body) + return draw_pose( + pose, H, W, draw_face=draw_face, draw_hands=draw_hands, draw_body=draw_body, resolution=resolution + ) diff --git a/invokeai/frontend/web/src/features/controlAdapters/components/processors/DWPoseProcessor.tsx b/invokeai/frontend/web/src/features/controlAdapters/components/processors/DWPoseProcessor.tsx index c48ef73722..e0e94012ce 100644 --- a/invokeai/frontend/web/src/features/controlAdapters/components/processors/DWPoseProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlAdapters/components/processors/DWPoseProcessor.tsx @@ -1,4 +1,4 @@ -import { Flex, FormControl, FormLabel, Switch } from '@invoke-ai/ui-library'; +import { CompositeNumberInput, CompositeSlider, 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'; @@ -18,7 +18,7 @@ type Props = { const DWPoseProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; - const { draw_body, draw_face, draw_hands } = processorNode; + const { image_resolution, draw_body, draw_face, draw_hands } = processorNode; const processorChanged = useProcessorNodeChanged(); const { t } = useTranslation(); @@ -43,6 +43,13 @@ const DWPoseProcessor = (props: Props) => { [controlNetId, processorChanged] ); + const handleImageResolutionChanged = useCallback( + (v: number) => { + processorChanged(controlNetId, { image_resolution: v }); + }, + [controlNetId, processorChanged] + ); + return ( @@ -59,6 +66,24 @@ const DWPoseProcessor = (props: Props) => { + + {t('controlnet.imageResolution')} + + + ); }; diff --git a/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts b/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts index 73ccaf74a7..5eb5af9b35 100644 --- a/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts +++ b/invokeai/frontend/web/src/features/controlAdapters/store/constants.ts @@ -232,6 +232,7 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { default: { id: 'dwpose_image_processor', type: 'dwpose_image_processor', + image_resolution: 512, draw_body: true, draw_face: false, draw_hands: false, diff --git a/invokeai/frontend/web/src/features/controlAdapters/store/types.ts b/invokeai/frontend/web/src/features/controlAdapters/store/types.ts index f761a7bc9b..7418de20e0 100644 --- a/invokeai/frontend/web/src/features/controlAdapters/store/types.ts +++ b/invokeai/frontend/web/src/features/controlAdapters/store/types.ts @@ -157,7 +157,7 @@ export type RequiredOpenposeImageProcessorInvocation = O.Required< */ export type RequiredDWPoseImageProcessorInvocation = O.Required< DWPoseImageProcessorInvocation, - 'type' | 'draw_body' | 'draw_face' | 'draw_hands' + 'type' | 'image_resolution' | 'draw_body' | 'draw_face' | 'draw_hands' >; /** diff --git a/invokeai/frontend/web/src/services/api/schema.ts b/invokeai/frontend/web/src/services/api/schema.ts index 8a45d1923a..f67a3e82cd 100644 --- a/invokeai/frontend/web/src/services/api/schema.ts +++ b/invokeai/frontend/web/src/services/api/schema.ts @@ -3513,6 +3513,12 @@ export type components = { * @default false */ draw_hands?: boolean; + /** + * Image Resolution + * @description Pixel resolution for output image + * @default 512 + */ + image_resolution?: number; /** * type * @default dwpose_image_processor @@ -4657,7 +4663,7 @@ export type components = { * @description The nodes in this graph */ nodes?: { - [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"]; + [key: string]: components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["ImageDilateOrErodeInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ShadowsHighlightsMidtonesMaskInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["TextToMaskClipsegAdvancedInvocation"] | components["schemas"]["ImageBlendInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["ColorMapImageProcessorInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["EquivalentAchromaticLightnessInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["MaskedBlendLatentsInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["NoiseImage2DInvocation"] | components["schemas"]["ImageValueThresholdsInvocation"] | components["schemas"]["CMYKMergeInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["BriaRemoveBackgroundInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["TextMaskInvocation"] | components["schemas"]["OffsetLatentsInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["ImageEnhanceInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["CMYKColorSeparationInvocation"] | components["schemas"]["DepthAnythingImageProcessorInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["FlattenHistogramMono"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["LatentConsistencyInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["DWPoseImageProcessorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["TextToMaskClipsegInvocation"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["AdjustImageHuePlusInvocation"] | components["schemas"]["HandDepthMeshGraphormerProcessor"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageRotateInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageOffsetInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["ImageCompositorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["LinearUIOutputInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["NoiseSpectralInvocation"] | components["schemas"]["CMYKSplitInvocation"] | components["schemas"]["StringInvocation"]; }; /** * Edges @@ -4694,7 +4700,7 @@ export type components = { * @description The results of node executions */ results: { - [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"]; + [key: string]: components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["VAEOutput"] | components["schemas"]["IPAdapterOutput"] | components["schemas"]["SDXLLoraLoaderOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["ShadowsHighlightsMidtonesMasksOutput"] | components["schemas"]["String2Output"] | components["schemas"]["NoiseOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["IdealSizeOutput"] | components["schemas"]["MetadataOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["CalculateImageTilesOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["MetadataItemOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["ONNXModelLoaderOutput"] | components["schemas"]["CLIPOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["ClipSkipInvocationOutput"] | components["schemas"]["CollectInvocationOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["CMYKSplitOutput"] | components["schemas"]["LoraLoaderOutput"] | components["schemas"]["GraphInvocationOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["StringPosNegOutput"] | components["schemas"]["BooleanOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["TileToPropertiesOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["HandDepthOutput"] | components["schemas"]["FaceOffOutput"] | components["schemas"]["T2IAdapterOutput"] | components["schemas"]["UNetOutput"] | components["schemas"]["FaceMaskOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["CMYKSeparationOutput"] | components["schemas"]["PairTileImageOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["ConditioningCollectionOutput"]; }; /** * Errors @@ -13155,17 +13161,23 @@ export type components = { */ CLIPVisionModelFormat: "diffusers"; /** - * StableDiffusionXLModelFormat + * IPAdapterModelFormat * @description An enumeration. * @enum {string} */ - StableDiffusionXLModelFormat: "checkpoint" | "diffusers"; + IPAdapterModelFormat: "invokeai"; /** * StableDiffusionOnnxModelFormat * @description An enumeration. * @enum {string} */ StableDiffusionOnnxModelFormat: "olive" | "onnx"; + /** + * StableDiffusionXLModelFormat + * @description An enumeration. + * @enum {string} + */ + StableDiffusionXLModelFormat: "checkpoint" | "diffusers"; /** * StableDiffusion2ModelFormat * @description An enumeration. @@ -13178,12 +13190,6 @@ export type components = { * @enum {string} */ T2IAdapterModelFormat: "diffusers"; - /** - * IPAdapterModelFormat - * @description An enumeration. - * @enum {string} - */ - IPAdapterModelFormat: "invokeai"; /** * ControlNetModelFormat * @description An enumeration.