diff --git a/invokeai/app/invocations/infill.py b/invokeai/app/invocations/infill.py index 0971f6cce9..98e8a7590c 100644 --- a/invokeai/app/invocations/infill.py +++ b/invokeai/app/invocations/infill.py @@ -196,10 +196,8 @@ class InfillPatchMatchInvocation(BaseInvocation): """Infills transparent areas of an image using the PatchMatch algorithm""" image: ImageField = InputField(description="The image to infill") - downscale: Optional[float] = InputField( - default=2.0, gt=0, description="Run patchmatch on downscaled image to speedup infill" - ) - resample_mode: Optional[PIL_RESAMPLING_MODES] = InputField(default="bicubic", description="The resampling mode") + downscale: float = InputField(default=2.0, gt=0, description="Run patchmatch on downscaled image to speedup infill") + resample_mode: PIL_RESAMPLING_MODES = InputField(default="bicubic", description="The resampling mode") def invoke(self, context: InvocationContext) -> ImageOutput: image = context.services.images.get_pil_image(self.image.image_name).convert("RGBA") diff --git a/invokeai/backend/install/invokeai_configure.py b/invokeai/backend/install/invokeai_configure.py index 90298ce076..8d9500cf4a 100755 --- a/invokeai/backend/install/invokeai_configure.py +++ b/invokeai/backend/install/invokeai_configure.py @@ -290,9 +290,19 @@ def download_realesrgan(): download_with_progress_bar(model["url"], config.models_path / model["dest"], model["description"]) +# --------------------------------------------- +def download_lama(): + logger.info("Installing lama infill model") + download_with_progress_bar( + 'https://github.com/Sanster/models/releases/download/add_big_lama/big-lama.pt', + config.models_path / 'core/misc/lama/lama.pt', + 'lama infill model' + ) + # --------------------------------------------- def download_support_models(): download_realesrgan() + download_lama() download_conversion_models() diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts index acee1d5e35..0daca1f310 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts @@ -47,6 +47,8 @@ export const addSDXLRefinerToGraph = ( const { seamlessXAxis, seamlessYAxis, vaePrecision } = state.generation; const { boundingBoxScaleMethod } = state.canvas; + const fp32 = vaePrecision === 'fp32'; + const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -232,7 +234,7 @@ export const addSDXLRefinerToGraph = ( type: 'create_denoise_mask', id: SDXL_REFINER_INPAINT_CREATE_MASK, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; if (isUsingScaledDimensions) { diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts index 63a7eac56b..e750b40220 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts @@ -59,6 +59,8 @@ export const buildCanvasImageToImageGraph = ( shouldAutoSave, } = state.canvas; + const fp32 = vaePrecision === 'fp32'; + const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -245,7 +247,7 @@ export const buildCanvasImageToImageGraph = ( id: LATENTS_TO_IMAGE, type: 'l2i', is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; graph.nodes[CANVAS_OUTPUT] = { id: CANVAS_OUTPUT, @@ -292,7 +294,7 @@ export const buildCanvasImageToImageGraph = ( type: 'l2i', id: CANVAS_OUTPUT, is_intermediate: !shouldAutoSave, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; (graph.nodes[IMAGE_TO_LATENTS] as ImageToLatentsInvocation).image = diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts index ea6ec17999..58a7726410 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts @@ -93,6 +93,8 @@ export const buildCanvasInpaintGraph = ( shouldAutoSave, } = state.canvas; + const fp32 = vaePrecision === 'fp32'; + const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -141,7 +143,7 @@ export const buildCanvasInpaintGraph = ( type: 'i2l', id: INPAINT_IMAGE, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [NOISE]: { type: 'noise', @@ -153,7 +155,7 @@ export const buildCanvasInpaintGraph = ( type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [DENOISE_LATENTS]: { type: 'denoise_latents', @@ -191,7 +193,7 @@ export const buildCanvasInpaintGraph = ( type: 'l2i', id: LATENTS_TO_IMAGE, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', @@ -596,7 +598,7 @@ export const buildCanvasInpaintGraph = ( type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; // Handle Image Input For Mask Creation diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts index 60e606e6da..71d3492bdc 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts @@ -97,6 +97,8 @@ export const buildCanvasOutpaintGraph = ( shouldAutoSave, } = state.canvas; + const fp32 = vaePrecision === 'fp32'; + const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -150,7 +152,7 @@ export const buildCanvasOutpaintGraph = ( type: 'i2l', id: INPAINT_IMAGE, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [NOISE]: { type: 'noise', @@ -162,7 +164,7 @@ export const buildCanvasOutpaintGraph = ( type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [DENOISE_LATENTS]: { type: 'denoise_latents', @@ -200,7 +202,7 @@ export const buildCanvasOutpaintGraph = ( type: 'l2i', id: LATENTS_TO_IMAGE, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', @@ -698,7 +700,7 @@ export const buildCanvasOutpaintGraph = ( type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; // Handle Image Input For Mask Creation diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts index 872a1d53bd..2a677a8775 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts @@ -67,6 +67,8 @@ export const buildCanvasSDXLImageToImageGraph = ( shouldAutoSave, } = state.canvas; + const fp32 = vaePrecision === 'fp32'; + const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -133,7 +135,7 @@ export const buildCanvasSDXLImageToImageGraph = ( type: 'i2l', id: IMAGE_TO_LATENTS, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', @@ -258,7 +260,7 @@ export const buildCanvasSDXLImageToImageGraph = ( id: LATENTS_TO_IMAGE, type: 'l2i', is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; graph.nodes[CANVAS_OUTPUT] = { id: CANVAS_OUTPUT, @@ -305,7 +307,7 @@ export const buildCanvasSDXLImageToImageGraph = ( type: 'l2i', id: CANVAS_OUTPUT, is_intermediate: !shouldAutoSave, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; (graph.nodes[IMAGE_TO_LATENTS] as ImageToLatentsInvocation).image = diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts index f26a34a2b7..baa1c0155f 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts @@ -100,6 +100,8 @@ export const buildCanvasSDXLInpaintGraph = ( shouldAutoSave, } = state.canvas; + const fp32 = vaePrecision === 'fp32'; + const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -145,7 +147,7 @@ export const buildCanvasSDXLInpaintGraph = ( type: 'i2l', id: INPAINT_IMAGE, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [NOISE]: { type: 'noise', @@ -157,7 +159,7 @@ export const buildCanvasSDXLInpaintGraph = ( type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', @@ -197,7 +199,7 @@ export const buildCanvasSDXLInpaintGraph = ( type: 'l2i', id: LATENTS_TO_IMAGE, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', @@ -611,7 +613,7 @@ export const buildCanvasSDXLInpaintGraph = ( type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; // Handle Image Input For Mask Creation diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts index da796f8a87..3f8fffb70a 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts @@ -104,6 +104,8 @@ export const buildCanvasSDXLOutpaintGraph = ( shouldAutoSave, } = state.canvas; + const fp32 = vaePrecision === 'fp32'; + const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -154,7 +156,7 @@ export const buildCanvasSDXLOutpaintGraph = ( type: 'i2l', id: INPAINT_IMAGE, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [NOISE]: { type: 'noise', @@ -166,7 +168,7 @@ export const buildCanvasSDXLOutpaintGraph = ( type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', @@ -206,7 +208,7 @@ export const buildCanvasSDXLOutpaintGraph = ( type: 'l2i', id: LATENTS_TO_IMAGE, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', @@ -714,7 +716,7 @@ export const buildCanvasSDXLOutpaintGraph = ( type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; // Handle Image Input For Mask Creation diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts index 10bde11de9..6d787987ef 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts @@ -61,6 +61,8 @@ export const buildCanvasSDXLTextToImageGraph = ( shouldAutoSave, } = state.canvas; + const fp32 = vaePrecision === 'fp32'; + const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -252,7 +254,7 @@ export const buildCanvasSDXLTextToImageGraph = ( id: LATENTS_TO_IMAGE, type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; graph.nodes[CANVAS_OUTPUT] = { @@ -290,7 +292,7 @@ export const buildCanvasSDXLTextToImageGraph = ( type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', id: CANVAS_OUTPUT, is_intermediate: !shouldAutoSave, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; graph.edges.push({ diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts index b25c266d66..094a7b02cc 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts @@ -59,6 +59,8 @@ export const buildCanvasTextToImageGraph = ( shouldAutoSave, } = state.canvas; + const fp32 = vaePrecision === 'fp32'; + const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -238,7 +240,7 @@ export const buildCanvasTextToImageGraph = ( id: LATENTS_TO_IMAGE, type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', is_intermediate: true, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; graph.nodes[CANVAS_OUTPUT] = { @@ -276,7 +278,7 @@ export const buildCanvasTextToImageGraph = ( type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', id: CANVAS_OUTPUT, is_intermediate: !shouldAutoSave, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }; graph.edges.push({ diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts index 7c1764ae65..dc9a34c67e 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts @@ -84,6 +84,8 @@ export const buildLinearImageToImageGraph = ( throw new Error('No model found in state'); } + const fp32 = vaePrecision === 'fp32'; + let modelLoaderNodeId = MAIN_MODEL_LOADER; const use_cpu = shouldUseNoiseSettings @@ -122,7 +124,7 @@ export const buildLinearImageToImageGraph = ( [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [DENOISE_LATENTS]: { type: 'denoise_latents', @@ -140,7 +142,7 @@ export const buildLinearImageToImageGraph = ( // image: { // image_name: initialImage.image_name, // }, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, }, edges: [ diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts index b1098be6a5..757a3976bb 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts @@ -84,6 +84,8 @@ export const buildLinearSDXLImageToImageGraph = ( throw new Error('No model found in state'); } + const fp32 = vaePrecision === 'fp32'; + // Model Loader ID let modelLoaderNodeId = SDXL_MODEL_LOADER; @@ -124,7 +126,7 @@ export const buildLinearSDXLImageToImageGraph = ( [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', @@ -144,7 +146,7 @@ export const buildLinearSDXLImageToImageGraph = ( // image: { // image_name: initialImage.image_name, // }, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, }, edges: [ diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts index bf25461e34..9590e77f89 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts @@ -62,6 +62,8 @@ export const buildLinearSDXLTextToImageGraph = ( throw new Error('No model found in state'); } + const fp32 = vaePrecision === 'fp32'; + // Construct Style Prompt const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); @@ -118,7 +120,7 @@ export const buildLinearSDXLTextToImageGraph = ( [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, }, edges: [ diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts index d07534bdd9..5c534fff21 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts @@ -57,6 +57,8 @@ export const buildLinearTextToImageGraph = ( throw new Error('No model found in state'); } + const fp32 = vaePrecision === 'fp32'; + const isUsingOnnxModel = model.model_type === 'onnx'; let modelLoaderNodeId = isUsingOnnxModel @@ -139,7 +141,7 @@ export const buildLinearTextToImageGraph = ( [LATENTS_TO_IMAGE]: { type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', id: LATENTS_TO_IMAGE, - fp32: vaePrecision === 'fp32' ? true : false, + fp32, }, }, edges: [