mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-02-13 16:45:07 -05:00
fix(ui): ensure noise is correctly sized
This commit is contained in:
@@ -14,6 +14,7 @@ import type {
|
||||
VaeSourceNodes,
|
||||
} from 'features/nodes/util/graph/types';
|
||||
import type { Invocation } from 'services/api/types';
|
||||
import { assert } from 'tsafe';
|
||||
|
||||
type AddImageToImageArg = {
|
||||
g: Graph;
|
||||
@@ -21,6 +22,7 @@ type AddImageToImageArg = {
|
||||
manager: CanvasManager;
|
||||
l2i: Invocation<LatentToImageNodes>;
|
||||
i2l: Invocation<'i2l' | 'flux_vae_encode' | 'sd3_i2l' | 'cogview4_i2l'>;
|
||||
noise?: Invocation<'noise'>;
|
||||
denoise: Invocation<DenoiseLatentsNodes>;
|
||||
vaeSource: Invocation<VaeSourceNodes | MainModelLoaderNodes>;
|
||||
};
|
||||
@@ -31,6 +33,7 @@ export const addImageToImage = async ({
|
||||
manager,
|
||||
l2i,
|
||||
i2l,
|
||||
noise,
|
||||
denoise,
|
||||
vaeSource,
|
||||
}: AddImageToImageArg): Promise<Invocation<'img_resize' | 'l2i' | 'flux_vae_decode' | 'sd3_l2i' | 'cogview4_l2i'>> => {
|
||||
@@ -40,6 +43,16 @@ export const addImageToImage = async ({
|
||||
|
||||
const { originalSize, scaledSize, rect } = getOriginalAndScaledSizesForOtherModes(state);
|
||||
|
||||
if (denoise.type === 'cogview4_denoise' || denoise.type === 'flux_denoise' || denoise.type === 'sd3_denoise') {
|
||||
denoise.width = scaledSize.width;
|
||||
denoise.height = scaledSize.height;
|
||||
} else {
|
||||
assert(denoise.type === 'denoise_latents');
|
||||
assert(noise, 'SD1.5/SD2/SDXL graphs require a noise node to be passed in');
|
||||
noise.width = scaledSize.width;
|
||||
noise.height = scaledSize.height;
|
||||
}
|
||||
|
||||
const adapters = manager.compositor.getVisibleAdaptersOfType('raster_layer');
|
||||
const { image_name } = await manager.compositor.getCompositeImageDTO(adapters, rect, {
|
||||
is_intermediate: true,
|
||||
@@ -55,8 +68,6 @@ export const addImageToImage = async ({
|
||||
...scaledSize,
|
||||
});
|
||||
|
||||
i2l.image = { image_name };
|
||||
|
||||
const resizeImageToOriginalSize = g.addNode({
|
||||
type: 'img_resize',
|
||||
id: getPrefixedId('initial_image_resize_out'),
|
||||
|
||||
@@ -17,6 +17,7 @@ import type {
|
||||
VaeSourceNodes,
|
||||
} from 'features/nodes/util/graph/types';
|
||||
import type { ImageDTO, Invocation } from 'services/api/types';
|
||||
import { assert } from 'tsafe';
|
||||
|
||||
type AddInpaintArg = {
|
||||
g: Graph;
|
||||
@@ -24,6 +25,7 @@ type AddInpaintArg = {
|
||||
manager: CanvasManager;
|
||||
l2i: Invocation<LatentToImageNodes>;
|
||||
i2l: Invocation<'i2l' | 'flux_vae_encode' | 'sd3_i2l' | 'cogview4_i2l'>;
|
||||
noise?: Invocation<'noise'>;
|
||||
denoise: Invocation<DenoiseLatentsNodes>;
|
||||
vaeSource: Invocation<VaeSourceNodes | MainModelLoaderNodes>;
|
||||
modelLoader: Invocation<MainModelLoaderNodes>;
|
||||
@@ -36,6 +38,7 @@ export const addInpaint = async ({
|
||||
manager,
|
||||
l2i,
|
||||
i2l,
|
||||
noise,
|
||||
denoise,
|
||||
vaeSource,
|
||||
modelLoader,
|
||||
@@ -50,6 +53,16 @@ export const addInpaint = async ({
|
||||
|
||||
const { originalSize, scaledSize, rect } = getOriginalAndScaledSizesForOtherModes(state);
|
||||
|
||||
if (denoise.type === 'cogview4_denoise' || denoise.type === 'flux_denoise' || denoise.type === 'sd3_denoise') {
|
||||
denoise.width = scaledSize.width;
|
||||
denoise.height = scaledSize.height;
|
||||
} else {
|
||||
assert(denoise.type === 'denoise_latents');
|
||||
assert(noise, 'SD1.5/SD2/SDXL graphs require a noise node to be passed in');
|
||||
noise.width = scaledSize.width;
|
||||
noise.height = scaledSize.height;
|
||||
}
|
||||
|
||||
const rasterAdapters = manager.compositor.getVisibleAdaptersOfType('raster_layer');
|
||||
const initialImage = await manager.compositor.getCompositeImageDTO(rasterAdapters, rect, {
|
||||
is_intermediate: true,
|
||||
@@ -92,8 +105,6 @@ export const addInpaint = async ({
|
||||
|
||||
if (needsScaleBeforeProcessing) {
|
||||
// Scale before processing requires some resizing
|
||||
i2l.image = { image_name: initialImage.image_name };
|
||||
|
||||
const resizeImageToScaledSize = g.addNode({
|
||||
type: 'img_resize',
|
||||
id: getPrefixedId('resize_image_to_scaled_size'),
|
||||
@@ -198,7 +209,6 @@ export const addInpaint = async ({
|
||||
}
|
||||
} else {
|
||||
// No scale before processing, much simpler
|
||||
i2l.image = { image_name: initialImage.image_name };
|
||||
|
||||
// If we have a noise mask, apply it to the input image before i2l conversion
|
||||
if (noiseMaskImage) {
|
||||
@@ -219,6 +229,8 @@ export const addInpaint = async ({
|
||||
|
||||
g.addEdge(seed, 'value', noiseNode, 'seed');
|
||||
g.addEdge(noiseNode, 'image', i2l, 'image');
|
||||
} else {
|
||||
i2l.image = { image_name: initialImage.image_name };
|
||||
}
|
||||
|
||||
const createGradientMask = g.addNode({
|
||||
|
||||
@@ -19,6 +19,7 @@ import type {
|
||||
VaeSourceNodes,
|
||||
} from 'features/nodes/util/graph/types';
|
||||
import type { ImageDTO, Invocation } from 'services/api/types';
|
||||
import { assert } from 'tsafe';
|
||||
|
||||
type AddOutpaintArg = {
|
||||
g: Graph;
|
||||
@@ -26,6 +27,7 @@ type AddOutpaintArg = {
|
||||
manager: CanvasManager;
|
||||
l2i: Invocation<LatentToImageNodes>;
|
||||
i2l: Invocation<ImageToLatentsNodes>;
|
||||
noise?: Invocation<'noise'>;
|
||||
denoise: Invocation<DenoiseLatentsNodes>;
|
||||
vaeSource: Invocation<VaeSourceNodes | MainModelLoaderNodes>;
|
||||
modelLoader: Invocation<MainModelLoaderNodes>;
|
||||
@@ -38,6 +40,7 @@ export const addOutpaint = async ({
|
||||
manager,
|
||||
l2i,
|
||||
i2l,
|
||||
noise,
|
||||
denoise,
|
||||
vaeSource,
|
||||
modelLoader,
|
||||
@@ -52,6 +55,16 @@ export const addOutpaint = async ({
|
||||
|
||||
const { originalSize, scaledSize, rect } = getOriginalAndScaledSizesForOtherModes(state);
|
||||
|
||||
if (denoise.type === 'cogview4_denoise' || denoise.type === 'flux_denoise' || denoise.type === 'sd3_denoise') {
|
||||
denoise.width = scaledSize.width;
|
||||
denoise.height = scaledSize.height;
|
||||
} else {
|
||||
assert(denoise.type === 'denoise_latents');
|
||||
assert(noise, 'SD1.5/SD2/SDXL graphs require a noise node to be passed in');
|
||||
noise.width = scaledSize.width;
|
||||
noise.height = scaledSize.height;
|
||||
}
|
||||
|
||||
const rasterAdapters = manager.compositor.getVisibleAdaptersOfType('raster_layer');
|
||||
const initialImage = await manager.compositor.getCompositeImageDTO(rasterAdapters, rect, {
|
||||
is_intermediate: true,
|
||||
|
||||
@@ -130,6 +130,7 @@ export const buildFLUXGraph = async (arg: GraphBuilderArg): Promise<GraphBuilder
|
||||
g.addEdge(modelLoader, 't5_encoder', posCond, 't5_encoder');
|
||||
g.addEdge(modelLoader, 'max_seq_len', posCond, 't5_max_seq_len');
|
||||
|
||||
g.addEdge(positivePrompt, 'value', posCond, 'prompt');
|
||||
g.addEdge(posCond, 'conditioning', posCondCollect, 'item');
|
||||
g.addEdge(posCondCollect, 'collection', denoise, 'positive_text_conditioning');
|
||||
|
||||
|
||||
@@ -182,6 +182,7 @@ export const buildSD1Graph = async (arg: GraphBuilderArg): Promise<GraphBuilderR
|
||||
manager,
|
||||
l2i,
|
||||
i2l,
|
||||
noise,
|
||||
denoise,
|
||||
vaeSource,
|
||||
});
|
||||
@@ -199,6 +200,7 @@ export const buildSD1Graph = async (arg: GraphBuilderArg): Promise<GraphBuilderR
|
||||
manager,
|
||||
l2i,
|
||||
i2l,
|
||||
noise,
|
||||
denoise,
|
||||
vaeSource,
|
||||
modelLoader,
|
||||
@@ -218,6 +220,7 @@ export const buildSD1Graph = async (arg: GraphBuilderArg): Promise<GraphBuilderR
|
||||
manager,
|
||||
l2i,
|
||||
i2l,
|
||||
noise,
|
||||
denoise,
|
||||
vaeSource,
|
||||
modelLoader,
|
||||
|
||||
@@ -192,6 +192,7 @@ export const buildSDXLGraph = async (arg: GraphBuilderArg): Promise<GraphBuilder
|
||||
manager,
|
||||
l2i,
|
||||
i2l,
|
||||
noise,
|
||||
denoise,
|
||||
vaeSource,
|
||||
});
|
||||
@@ -209,6 +210,7 @@ export const buildSDXLGraph = async (arg: GraphBuilderArg): Promise<GraphBuilder
|
||||
manager,
|
||||
l2i,
|
||||
i2l,
|
||||
noise,
|
||||
denoise,
|
||||
vaeSource,
|
||||
modelLoader,
|
||||
@@ -228,6 +230,7 @@ export const buildSDXLGraph = async (arg: GraphBuilderArg): Promise<GraphBuilder
|
||||
manager,
|
||||
l2i,
|
||||
i2l,
|
||||
noise,
|
||||
denoise,
|
||||
vaeSource,
|
||||
modelLoader,
|
||||
|
||||
Reference in New Issue
Block a user