Skip to content

Commit 4d09b73

Browse files
authored
refa: optimize request params for nai4 (#269)
1 parent d84328c commit 4d09b73

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

src/config.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ interface ParamConfig {
226226
smea?: boolean
227227
smeaDyn?: boolean
228228
scheduler?: string
229+
rescale?: Computed<number>
229230
decrisper?: boolean
230231
upscaler?: string
231232
restoreFaces?: boolean
@@ -236,6 +237,7 @@ interface ParamConfig {
236237
imageSteps?: Computed<number>
237238
maxSteps?: Computed<number>
238239
strength?: Computed<number>
240+
noise?: Computed<number>
239241
resolution?: Computed<Orient | Size>
240242
maxResolution?: Computed<number>
241243
}
@@ -402,8 +404,9 @@ export const Config = Schema.intersect([
402404
}),
403405
Schema.object({
404406
model: Schema.const('nai-v4-curated-preview'),
405-
sampler: sampler.createSchema(sampler.nai4),
407+
sampler: sampler.createSchema(sampler.nai4).default('k_euler_a'),
406408
scheduler: Schema.union(scheduler.nai4).description('默认的调度器。').default('karras'),
409+
rescale: Schema.computed(Schema.number(), options).min(0).max(1).description('输入服从度调整规模。').default(0),
407410
}),
408411
Schema.object({ sampler: sampler.createSchema(sampler.nai) }),
409412
]),
@@ -417,6 +420,7 @@ export const Config = Schema.intersect([
417420
imageSteps: Schema.computed(Schema.natural(), options).description('以图生图时默认的迭代步数。').default(50),
418421
maxSteps: Schema.computed(Schema.natural(), options).description('允许的最大迭代步数。').default(64),
419422
strength: Schema.computed(Schema.number(), options).min(0).max(1).description('默认的重绘强度。').default(0.7),
423+
noise: Schema.computed(Schema.number(), options).min(0).max(1).description('默认的重绘添加噪声强度。').default(0.2),
420424
resolution: Schema.computed(Schema.union([
421425
Schema.const('portrait').description('肖像 (832x2326)'),
422426
Schema.const('landscape').description('风景 (1216x832)'),

src/index.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ export function apply(ctx: Context, config: Config) {
261261
Object.assign(parameters, {
262262
height: options.resolution.height,
263263
width: options.resolution.width,
264-
noise: options.noise ?? 0.2,
264+
noise: options.noise ?? session.resolve(config.noise),
265265
strength: options.strength ?? session.resolve(config.strength),
266266
})
267267
}
@@ -334,7 +334,9 @@ export function apply(ctx: Context, config: Config) {
334334
}
335335
parameters.dynamic_thresholding = options.decrisper ?? config.decrisper
336336
if (model === 'nai-diffusion-3' || model === 'nai-diffusion-4-curated-preview') {
337+
parameters.params_version = 3
337338
parameters.legacy = false
339+
parameters.legacy_v3_extend = false
338340
parameters.noise_schedule = options.scheduler ?? config.scheduler
339341
// Max scale for nai-v3 is 10, but not 20.
340342
// If the given value is greater than 10,
@@ -343,7 +345,6 @@ export function apply(ctx: Context, config: Config) {
343345
parameters.scale = parameters.scale / 2
344346
}
345347
if (model === 'nai-diffusion-3') {
346-
parameters.legacy_v3_extend = false
347348
parameters.sm_dyn = options.smeaDyn ?? config.smeaDyn
348349
parameters.sm = (options.smea ?? config.smea) || parameters.sm_dyn
349350
if (['k_euler_ancestral', 'k_dpmpp_2s_ancestral'].includes(parameters.sampler)
@@ -357,8 +358,17 @@ export function apply(ctx: Context, config: Config) {
357358
}
358359
}
359360
if (model === 'nai-diffusion-4-curated-preview') {
360-
parameters.use_coords = false // unknown
361+
parameters.add_original_image = true // unknown
362+
parameters.cfg_rescale = session.resolve(config.rescale)
361363
parameters.characterPrompts = [] satisfies NovelAI.V4CharacterPrompt[]
364+
parameters.controlnet_strength = 1 // unknown
365+
parameters.deliberate_euler_ancestral_bug = false // unknown
366+
parameters.prefer_brownian = true // unknown
367+
parameters.reference_image_multiple = [] // unknown
368+
parameters.reference_information_extracted_multiple = [] // unknown
369+
parameters.reference_strength_multiple = [] // unknown
370+
parameters.skip_cfg_above_sigma = null // unknown
371+
parameters.use_coords = false // unknown
362372
parameters.v4_prompt = {
363373
caption: {
364374
base_caption: prompt,
@@ -479,7 +489,7 @@ export function apply(ctx: Context, config: Config) {
479489
prompt[nodeId].inputs.steps = parameters.steps
480490
prompt[nodeId].inputs.cfg = parameters.scale
481491
prompt[nodeId].inputs.sampler_name = options.sampler
482-
prompt[nodeId].inputs.denoise = options.strength ?? config.strength
492+
prompt[nodeId].inputs.denoise = options.strength ?? session.resolve(config.strength)
483493
prompt[nodeId].inputs.scheduler = options.scheduler ?? config.scheduler
484494
const positiveNodeId = prompt[nodeId].inputs.positive[0]
485495
const negativeeNodeId = prompt[nodeId].inputs.negative[0]

0 commit comments

Comments
 (0)