1
0
Fork 0

feat: add tiled VAE parameter to client

This commit is contained in:
Sean Sube 2023-04-28 13:30:54 -05:00
parent 577e2320f5
commit 7e5380db43
Signed by: ssube
GPG Key ID: 3EED7B957D362AF1
14 changed files with 47 additions and 6 deletions

View File

@ -398,12 +398,14 @@ class HighresParams:
strength: float,
method: Literal["bilinear", "lanczos", "upscale"] = "lanczos",
iterations: int = 1,
tiled_vae: bool = False,
):
self.scale = scale
self.steps = steps
self.strength = strength
self.method = method
self.iterations = iterations
self.tiled_vae = tiled_vae
def resize(self, size: Size) -> Size:
return Size(
@ -418,4 +420,5 @@ class HighresParams:
"scale": self.scale,
"steps": self.steps,
"strength": self.strength,
"tiled_vae": self.tiled_vae,
}

View File

@ -13,7 +13,7 @@ from ..params import (
Size,
UpscaleParams,
)
from ..utils import get_and_clamp_float, get_and_clamp_int, get_from_list, get_not_empty
from ..utils import get_and_clamp_float, get_and_clamp_int, get_boolean, get_from_list, get_not_empty
from .context import ServerContext
from .load import (
get_available_platforms,
@ -277,10 +277,13 @@ def highres_from_request() -> HighresParams:
get_config_value("highresStrength", "min"),
)
tiled_vae = get_boolean(request.args, "tiledVAE", get_config_value("tiledVAE"))
return HighresParams(
scale,
steps,
strength,
method=method,
iterations=iterations,
tiled_vae=tiled_vae,
)

View File

@ -180,6 +180,9 @@
"max": 1,
"step": 0.01
},
"tiledVAE": {
"default": false
},
"tileOrder": {
"default": "spiral",
"keys": [

View File

@ -30,7 +30,7 @@ build-shebang: build
bundle: build
node esbuild.js
cp -v src/index.html out/
cp -v examples/config.json out/
cp -v src/config.json out/
COVER_OPTS := --all \
--exclude ".eslintrc.js" \

View File

@ -54,7 +54,7 @@ if (watch) {
],
plugins: [
...plugins,
...copyArray(['src/index.html', 'examples/config.json']),
...copyArray(['src/index.html', 'src/config.json']),
],
banner: {
js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());`,

View File

@ -160,6 +160,8 @@ export interface HighresParams {
highresScale: number;
highresSteps: number;
highresStrength: number;
tiledVAE: boolean;
}
/**
@ -453,6 +455,10 @@ export function appendUpscaleToURL(url: URL, upscale: UpscaleParams) {
}
export function appendHighresToURL(url: URL, highres: HighresParams) {
if (highres.tiledVAE) {
url.searchParams.append('tiledVAE', String(highres.tiledVAE));
}
if (highres.enabled) {
url.searchParams.append('highresIterations', highres.highresIterations.toFixed(FIXED_INTEGER));
url.searchParams.append('highresMethod', highres.highresMethod);

View File

@ -17,6 +17,18 @@ export function HighresControl() {
const { t } = useTranslation();
return <Stack direction='row' spacing={4}>
<FormControlLabel
label={t('parameter.tiledVAE')}
control={<Checkbox
checked={highres.tiledVAE}
value='check'
onChange={(event) => {
setHighres({
tiledVAE: highres.tiledVAE === false,
});
}}
/>}
/>
<FormControlLabel
label={t('parameter.highres.label')}
control={<Checkbox
@ -72,6 +84,7 @@ export function HighresControl() {
<FormControl>
<InputLabel id={'highres-method'}>{t('parameter.highres.method')}</InputLabel>
<Select
disabled={highres.enabled === false}
labelId={'highres-method'}
label={t('parameter.highres.method')}
value={highres.highresMethod}

View File

@ -178,6 +178,9 @@
"max": 1,
"step": 0.01
},
"tiledVAE": {
"default": false
},
"tileOrder": {
"default": "spiral",
"keys": [

View File

@ -2,6 +2,10 @@ import { doesExist, Maybe } from '@apextoaster/js-utils';
import { merge } from 'lodash';
import { HighresParams, Img2ImgParams, InpaintParams, ModelParams, OutpaintParams, STATUS_SUCCESS, Txt2ImgParams, UpscaleParams } from './client/api.js';
export interface ConfigBoolean {
default: boolean;
}
export interface ConfigNumber {
default: number;
min: number;
@ -17,7 +21,7 @@ export interface ConfigString {
/**
* Helper type to filter keys whose value extends `TValid`.
*/
export type KeyFilter<T extends object, TValid = number | string> = {
export type KeyFilter<T extends object, TValid = boolean | number | string> = {
[K in keyof T]: T[K] extends TValid ? K : never;
}[keyof T];
@ -32,13 +36,13 @@ export type ConfigFiles<T extends object> = {
* Map numbers and strings to their corresponding config types and drop the rest of the fields.
*/
export type ConfigRanges<T extends object> = {
[K in KeyFilter<T>]: T[K] extends number ? ConfigNumber : T[K] extends string ? ConfigString : never;
[K in KeyFilter<T>]: T[K] extends boolean ? ConfigBoolean : T[K] extends number ? ConfigNumber : T[K] extends string ? ConfigString : never;
};
/**
* Keep fields whose value extends `TValid` and drop the rest.
*/
export type ConfigState<T extends object, TValid = number | string> = {
export type ConfigState<T extends object, TValid = boolean | number | string> = {
[K in KeyFilter<T, TValid>]: T[K] extends TValid ? T[K] : never;
};

View File

@ -447,6 +447,7 @@ export function createStateSlices(server: ServerParams) {
highresSteps: server.highresSteps.default,
highresScale: server.highresScale.default,
highresStrength: server.highresStrength.default,
tiledVAE: server.tiledVAE.default,
},
setHighres(params) {
set((prev) => ({
@ -465,6 +466,7 @@ export function createStateSlices(server: ServerParams) {
highresSteps: server.highresSteps.default,
highresScale: server.highresScale.default,
highresStrength: server.highresStrength.default,
tiledVAE: server.tiledVAE.default,
},
});
},

View File

@ -129,6 +129,7 @@ export const I18N_STRINGS_DE = {
sourceFilter: '',
steps: 'Schritte',
strength: 'Stärke',
tiledVAE: '',
tileOrder: '',
upscale: {
label: '',

View File

@ -181,6 +181,7 @@ export const I18N_STRINGS_EN = {
sourceFilter: 'Source Filter',
steps: 'Steps',
strength: 'Strength',
tiledVAE: 'Tiled VAE',
tileOrder: 'Tile Order',
upscale: {
label: 'Upscale',

View File

@ -129,6 +129,7 @@ export const I18N_STRINGS_ES = {
sourceFilter: '',
steps: 'Pasos',
strength: 'Fuerza',
tiledVAE: '',
tileOrder: 'Orden de secciones',
upscale: {
label: 'Aumento',

View File

@ -129,6 +129,7 @@ export const I18N_STRINGS_FR = {
sourceFilter: '',
steps: '',
strength: '',
tiledVAE: '',
tileOrder: '',
upscale: {
label: '',