From 75678164ca7eb7e16fc1aa94a1c996181a65237f Mon Sep 17 00:00:00 2001 From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com> Date: Fri, 11 Jul 2025 23:21:28 -0400 Subject: [PATCH 1/7] commit tile size controls --- invokeai/frontend/web/public/locales/en.json | 16 ++++++ .../InformationalPopover/constants.ts | 2 + .../ModelInstallQueue/ModelInstallQueue.tsx | 4 +- .../graph/buildMultidiffusionUpscaleGraph.ts | 25 ++++++--- .../components/Upscale/ParamTileOverlap.tsx | 53 +++++++++++++++++++ .../components/Upscale/ParamTileSize.tsx | 53 +++++++++++++++++++ .../features/parameters/store/upscaleSlice.ts | 14 +++++ .../UpscaleTabAdvancedSettingsAccordion.tsx | 4 ++ 8 files changed, 162 insertions(+), 9 deletions(-) create mode 100644 invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileOverlap.tsx create mode 100644 invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index 5f8e2070c37..56619756283 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -1775,6 +1775,20 @@ "Structure controls how closely the output image will keep to the layout of the original. Low structure allows major changes, while high structure strictly maintains the original composition and layout." ] }, + "tileSize": { + "heading": "Tile Size", + "paragraphs": [ + "Controls the size of tiles used during the upscaling process. Larger tiles use more memory but may produce better results.", + "SD1.5 models default to 768, while SDXL models default to 1024. Reduce tile size if you encounter memory issues." + ] + }, + "tileOverlap": { + "heading": "Tile Overlap", + "paragraphs": [ + "Controls the overlap between adjacent tiles during upscaling. Higher overlap values help reduce visible seams between tiles but use more memory.", + "The default value of 128 works well for most cases, but you can adjust based on your specific needs and memory constraints." + ] + }, "fluxDevLicense": { "heading": "Non-Commercial License", "paragraphs": [ @@ -2396,6 +2410,8 @@ "upscaleModel": "Upscale Model", "postProcessingModel": "Post-Processing Model", "scale": "Scale", + "tileSize": "Tile Size", + "tileOverlap": "Tile Overlap", "postProcessingMissingModelWarning": "Visit the Model Manager to install a post-processing (image to image) model.", "missingModelsWarning": "Visit the Model Manager to install the required models:", "mainModelDesc": "Main model (SD1.5 or SDXL architecture)", diff --git a/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts b/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts index f115ab3a640..22a813b6de1 100644 --- a/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts +++ b/invokeai/frontend/web/src/common/components/InformationalPopover/constants.ts @@ -67,6 +67,8 @@ export type Feature = | 'scale' | 'creativity' | 'structure' + | 'tileSize' + | 'tileOverlap' | 'optimizedDenoising' | 'fluxDevLicense'; diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx index f124462e8b4..c2443dde6b0 100644 --- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx +++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx @@ -55,9 +55,7 @@ export const ModelInstallQueue = memo(() => { - {data?.map((model) => ( - - ))} + {data?.map((model) => )} diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts index 7c6192e06a4..c91344926b3 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts @@ -12,7 +12,16 @@ import type { GraphBuilderReturn } from './types'; export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise => { const { model, upscaleCfgScale: cfg_scale, upscaleScheduler: scheduler, steps, vaePrecision, vae } = state.params; - const { upscaleModel, upscaleInitialImage, structure, creativity, tileControlnetModel, scale } = state.upscale; + const { + upscaleModel, + upscaleInitialImage, + structure, + creativity, + tileControlnetModel, + scale, + tileSize, + tileOverlap, + } = state.upscale; assert(model, 'No model selected'); assert(model.base === 'sd-1' || model.base === 'sdxl', 'Multi-Diffusion upscaling requires a SD1.5 or SDXL model'); @@ -58,11 +67,13 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise g.addEdge(unsharpMask, 'width', noise, 'width'); g.addEdge(unsharpMask, 'height', noise, 'height'); + const effectiveTileSize = tileSize; + const i2l = g.addNode({ type: 'i2l', id: getPrefixedId('i2l'), fp32: vaePrecision === 'fp32', - tile_size: 1024, + tile_size: effectiveTileSize, tiled: true, }); @@ -72,7 +83,7 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise type: 'l2i', id: getPrefixedId('l2i'), fp32: vaePrecision === 'fp32', - tile_size: 1024, + tile_size: effectiveTileSize, tiled: true, board: getBoardField(state), is_intermediate: false, @@ -81,9 +92,9 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise const tiledMultidiffusion = g.addNode({ type: 'tiled_multi_diffusion_denoise_latents', id: getPrefixedId('tiled_multidiffusion_denoise_latents'), - tile_height: 1024, // is this dependent on base model - tile_width: 1024, // is this dependent on base model - tile_overlap: 128, + tile_height: effectiveTileSize, + tile_width: effectiveTileSize, + tile_overlap: tileOverlap || 128, steps, cfg_scale, scheduler, @@ -184,6 +195,8 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise upscale_model: Graph.getModelMetadataField(upscaleModelConfig), creativity, structure, + tile_size: effectiveTileSize, + tile_overlap: tileOverlap || 128, upscale_initial_image: { image_name: upscaleInitialImage.image_name, width: upscaleInitialImage.width, diff --git a/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileOverlap.tsx b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileOverlap.tsx new file mode 100644 index 00000000000..7834e53309b --- /dev/null +++ b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileOverlap.tsx @@ -0,0 +1,53 @@ +import { CompositeNumberInput, CompositeSlider, FormControl, FormLabel } from '@invoke-ai/ui-library'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { selectTileOverlap, tileOverlapChanged } from 'features/parameters/store/upscaleSlice'; +import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; + +const initial = 128; +const sliderMin = 32; +const sliderMax = 256; +const numberInputMin = 16; +const numberInputMax = 512; +const coarseStep = 16; +const fineStep = 8; +const marks = [sliderMin, 128, sliderMax]; + +const ParamTileOverlap = () => { + const tileOverlap = useAppSelector(selectTileOverlap); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const onChange = useCallback( + (v: number) => { + dispatch(tileOverlapChanged(v)); + }, + [dispatch] + ); + + return ( + + {t('upscaling.tileOverlap')} + + + + ); +}; + +export default ParamTileOverlap; diff --git a/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx new file mode 100644 index 00000000000..083e5ecf49f --- /dev/null +++ b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx @@ -0,0 +1,53 @@ +import { CompositeNumberInput, CompositeSlider, FormControl, FormLabel } from '@invoke-ai/ui-library'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { selectTileSize, tileSizeChanged } from 'features/parameters/store/upscaleSlice'; +import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; + +const initial = 1024; +const sliderMin = 512; +const sliderMax = 1536; +const numberInputMin = 512; +const numberInputMax = 1536; +const coarseStep = 64; +const fineStep = 32; +const marks = [sliderMin, 1024, sliderMax]; + +const ParamTileSize = () => { + const tileSize = useAppSelector(selectTileSize); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const onChange = useCallback( + (v: number) => { + dispatch(tileSizeChanged(v)); + }, + [dispatch] + ); + + return ( + + {t('upscaling.tileSize')} + + + + ); +}; + +export default ParamTileSize; diff --git a/invokeai/frontend/web/src/features/parameters/store/upscaleSlice.ts b/invokeai/frontend/web/src/features/parameters/store/upscaleSlice.ts index a3fa9ae0aae..294d88fb481 100644 --- a/invokeai/frontend/web/src/features/parameters/store/upscaleSlice.ts +++ b/invokeai/frontend/web/src/features/parameters/store/upscaleSlice.ts @@ -13,6 +13,8 @@ export interface UpscaleState { tileControlnetModel: ControlNetModelConfig | null; scale: number; postProcessingModel: ParameterSpandrelImageToImageModel | null; + tileSize: number; + tileOverlap: number; } const initialUpscaleState: UpscaleState = { @@ -24,6 +26,8 @@ const initialUpscaleState: UpscaleState = { tileControlnetModel: null, scale: 4, postProcessingModel: null, + tileSize: 1024, + tileOverlap: 128, }; export const upscaleSlice = createSlice({ @@ -51,6 +55,12 @@ export const upscaleSlice = createSlice({ postProcessingModelChanged: (state, action: PayloadAction) => { state.postProcessingModel = action.payload; }, + tileSizeChanged: (state, action: PayloadAction) => { + state.tileSize = action.payload; + }, + tileOverlapChanged: (state, action: PayloadAction) => { + state.tileOverlap = action.payload; + }, }, }); @@ -62,6 +72,8 @@ export const { tileControlnetModelChanged, scaleChanged, postProcessingModelChanged, + tileSizeChanged, + tileOverlapChanged, } = upscaleSlice.actions; /* eslint-disable-next-line @typescript-eslint/no-explicit-any */ @@ -88,3 +100,5 @@ export const selectTileControlNetModel = createUpscaleSelector((upscale) => upsc export const selectStructure = createUpscaleSelector((upscale) => upscale.structure); export const selectUpscaleInitialImage = createUpscaleSelector((upscale) => upscale.upscaleInitialImage); export const selectUpscaleScale = createUpscaleSelector((upscale) => upscale.scale); +export const selectTileSize = createUpscaleSelector((upscale) => upscale.tileSize); +export const selectTileOverlap = createUpscaleSelector((upscale) => upscale.tileOverlap); diff --git a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx index 4aa0708ac03..470f8447f5d 100644 --- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx +++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx @@ -7,6 +7,8 @@ import { ParamSeed } from 'features/parameters/components/Seed/ParamSeed'; import ParamFLUXVAEModelSelect from 'features/parameters/components/VAEModel/ParamFLUXVAEModelSelect'; import ParamVAEModelSelect from 'features/parameters/components/VAEModel/ParamVAEModelSelect'; import ParamVAEPrecision from 'features/parameters/components/VAEModel/ParamVAEPrecision'; +import ParamTileOverlap from 'features/parameters/components/Upscale/ParamTileOverlap'; +import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize'; import { useStandaloneAccordionToggle } from 'features/settingsAccordions/hooks/useStandaloneAccordionToggle'; import { memo, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; @@ -73,6 +75,8 @@ export const UpscaleTabAdvancedSettingsAccordion = memo(() => { {!isFLUX && !isSD3 && } + + ); From cd585385424bd3b41acee1f94af3e6176267e6ff Mon Sep 17 00:00:00 2001 From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com> Date: Fri, 11 Jul 2025 23:31:42 -0400 Subject: [PATCH 2/7] lint --- .../UpscaleTabAdvancedSettingsAccordion.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx index 470f8447f5d..efeddb35940 100644 --- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx +++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx @@ -4,11 +4,11 @@ import { createMemoizedSelector } from 'app/store/createMemoizedSelector'; import { useAppSelector } from 'app/store/storeHooks'; import { selectIsFLUX, selectIsSD3, selectParamsSlice, selectVAEKey } from 'features/controlLayers/store/paramsSlice'; import { ParamSeed } from 'features/parameters/components/Seed/ParamSeed'; +import ParamTileOverlap from 'features/parameters/components/Upscale/ParamTileOverlap'; +import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize'; import ParamFLUXVAEModelSelect from 'features/parameters/components/VAEModel/ParamFLUXVAEModelSelect'; import ParamVAEModelSelect from 'features/parameters/components/VAEModel/ParamVAEModelSelect'; import ParamVAEPrecision from 'features/parameters/components/VAEModel/ParamVAEPrecision'; -import ParamTileOverlap from 'features/parameters/components/Upscale/ParamTileOverlap'; -import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize'; import { useStandaloneAccordionToggle } from 'features/settingsAccordions/hooks/useStandaloneAccordionToggle'; import { memo, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; From c3575df3ae60fd5077200b0f88499d6105495f23 Mon Sep 17 00:00:00 2001 From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com> Date: Sat, 12 Jul 2025 00:35:25 -0400 Subject: [PATCH 3/7] unlint. --- .../AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx index c2443dde6b0..f124462e8b4 100644 --- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx +++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx @@ -55,7 +55,9 @@ export const ModelInstallQueue = memo(() => { - {data?.map((model) => )} + {data?.map((model) => ( + + ))} From af49faa58d9c048bed5755398d405690e4433761 Mon Sep 17 00:00:00 2001 From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com> Date: Fri, 11 Jul 2025 23:21:28 -0400 Subject: [PATCH 4/7] commit tile size controls --- .../AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx | 4 +--- .../UpscaleTabAdvancedSettingsAccordion.tsx | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx index f124462e8b4..c2443dde6b0 100644 --- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx +++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx @@ -55,9 +55,7 @@ export const ModelInstallQueue = memo(() => { - {data?.map((model) => ( - - ))} + {data?.map((model) => )} diff --git a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx index efeddb35940..b214614b478 100644 --- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx +++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx @@ -9,6 +9,8 @@ import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize' import ParamFLUXVAEModelSelect from 'features/parameters/components/VAEModel/ParamFLUXVAEModelSelect'; import ParamVAEModelSelect from 'features/parameters/components/VAEModel/ParamVAEModelSelect'; import ParamVAEPrecision from 'features/parameters/components/VAEModel/ParamVAEPrecision'; +import ParamTileOverlap from 'features/parameters/components/Upscale/ParamTileOverlap'; +import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize'; import { useStandaloneAccordionToggle } from 'features/settingsAccordions/hooks/useStandaloneAccordionToggle'; import { memo, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; From 9d7b919a831138e1dfd2e33344528cbff9500d99 Mon Sep 17 00:00:00 2001 From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com> Date: Fri, 11 Jul 2025 23:31:42 -0400 Subject: [PATCH 5/7] lint --- .../UpscaleTabAdvancedSettingsAccordion.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx index b214614b478..efeddb35940 100644 --- a/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx +++ b/invokeai/frontend/web/src/features/settingsAccordions/components/AdvancedSettingsAccordion/UpscaleTabAdvancedSettingsAccordion.tsx @@ -9,8 +9,6 @@ import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize' import ParamFLUXVAEModelSelect from 'features/parameters/components/VAEModel/ParamFLUXVAEModelSelect'; import ParamVAEModelSelect from 'features/parameters/components/VAEModel/ParamVAEModelSelect'; import ParamVAEPrecision from 'features/parameters/components/VAEModel/ParamVAEPrecision'; -import ParamTileOverlap from 'features/parameters/components/Upscale/ParamTileOverlap'; -import ParamTileSize from 'features/parameters/components/Upscale/ParamTileSize'; import { useStandaloneAccordionToggle } from 'features/settingsAccordions/hooks/useStandaloneAccordionToggle'; import { memo, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; From 851b6b5e8a0eb7bc7f8db12a1dc0765027e8be1e Mon Sep 17 00:00:00 2001 From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com> Date: Sat, 12 Jul 2025 00:35:25 -0400 Subject: [PATCH 6/7] unlint. --- .../AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx index c2443dde6b0..f124462e8b4 100644 --- a/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx +++ b/invokeai/frontend/web/src/features/modelManagerV2/subpanels/AddModelPanel/ModelInstallQueue/ModelInstallQueue.tsx @@ -55,7 +55,9 @@ export const ModelInstallQueue = memo(() => { - {data?.map((model) => )} + {data?.map((model) => ( + + ))} From 390ac45f4060f06ff2274814bcd3684b45ffdb69 Mon Sep 17 00:00:00 2001 From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com> Date: Tue, 15 Jul 2025 15:40:49 -0400 Subject: [PATCH 7/7] address comments --- .../util/graph/buildMultidiffusionUpscaleGraph.ts | 12 +++++------- .../parameters/components/Upscale/ParamTileSize.tsx | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts index c91344926b3..fafedd1a5df 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/buildMultidiffusionUpscaleGraph.ts @@ -67,13 +67,11 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise g.addEdge(unsharpMask, 'width', noise, 'width'); g.addEdge(unsharpMask, 'height', noise, 'height'); - const effectiveTileSize = tileSize; - const i2l = g.addNode({ type: 'i2l', id: getPrefixedId('i2l'), fp32: vaePrecision === 'fp32', - tile_size: effectiveTileSize, + tile_size: tileSize, tiled: true, }); @@ -83,7 +81,7 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise type: 'l2i', id: getPrefixedId('l2i'), fp32: vaePrecision === 'fp32', - tile_size: effectiveTileSize, + tile_size: tileSize, tiled: true, board: getBoardField(state), is_intermediate: false, @@ -92,8 +90,8 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise const tiledMultidiffusion = g.addNode({ type: 'tiled_multi_diffusion_denoise_latents', id: getPrefixedId('tiled_multidiffusion_denoise_latents'), - tile_height: effectiveTileSize, - tile_width: effectiveTileSize, + tile_height: tileSize, + tile_width: tileSize, tile_overlap: tileOverlap || 128, steps, cfg_scale, @@ -195,7 +193,7 @@ export const buildMultidiffusionUpscaleGraph = async (state: RootState): Promise upscale_model: Graph.getModelMetadataField(upscaleModelConfig), creativity, structure, - tile_size: effectiveTileSize, + tile_size: tileSize, tile_overlap: tileOverlap || 128, upscale_initial_image: { image_name: upscaleInitialImage.image_name, diff --git a/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx index 083e5ecf49f..c0443cb6fe1 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamTileSize.tsx @@ -10,7 +10,7 @@ const sliderMax = 1536; const numberInputMin = 512; const numberInputMax = 1536; const coarseStep = 64; -const fineStep = 32; +const fineStep = 64; const marks = [sliderMin, 1024, sliderMax]; const ParamTileSize = () => {