feat(ui): add IP adapters to FLUX in linear UI

This commit is contained in:
Mary Hipp
2024-10-22 15:22:56 -04:00
parent 740f6eb19f
commit 0a96466b60
8 changed files with 169 additions and 18 deletions

View File

@@ -20,6 +20,7 @@ import { isNonRefinerMainModelConfig } from 'services/api/types';
import { assert } from 'tsafe';
import { addControlNets } from './addControlAdapters';
import { addIPAdapters } from './addIPAdapters';
const log = logger('system');
@@ -198,6 +199,40 @@ export const buildFLUXGraph = async (
g.deleteNode(controlNetCollector.id);
}
const ipAdapterCollector = g.addNode({
type: 'collect',
id: getPrefixedId('ip_adapter_collector'),
});
const ipAdapterResult = addIPAdapters(canvas.referenceImages.entities, g, ipAdapterCollector, modelConfig.base);
const totalIPAdaptersAdded = ipAdapterResult.addedIPAdapters;
if (totalIPAdaptersAdded > 0) {
assert(steps > 2);
const cfg_scale_start_step = 1;
const cfg_scale_end_step = Math.ceil(steps / 2);
assert(cfg_scale_end_step > cfg_scale_start_step);
const negCond = g.addNode({
type: 'flux_text_encoder',
id: getPrefixedId('flux_text_encoder'),
prompt: '',
});
g.addEdge(modelLoader, 'clip', negCond, 'clip');
g.addEdge(modelLoader, 't5_encoder', negCond, 't5_encoder');
g.addEdge(modelLoader, 'max_seq_len', negCond, 't5_max_seq_len');
g.addEdge(negCond, 'conditioning', noise, 'negative_text_conditioning');
g.updateNode(noise, {
cfg_scale: 3,
cfg_scale_start_step,
cfg_scale_end_step,
});
g.addEdge(ipAdapterCollector, 'collection', noise, 'ip_adapter');
} else {
g.deleteNode(ipAdapterCollector.id);
}
if (state.system.shouldUseNSFWChecker) {
canvasOutput = addNSFWChecker(g, canvasOutput);
}