feat: add parameter for highres iterations (#316)
This commit is contained in:
parent
ff9ce03af5
commit
7f504a5b5b
|
@ -185,13 +185,15 @@ def run_txt2img_pipeline(
|
||||||
)
|
)
|
||||||
return result.images[0]
|
return result.images[0]
|
||||||
|
|
||||||
logger.info("running highres fix for %s tiles", highres.scale)
|
logger.info("running highres fix for %s iterations at %s scale", highres.iterations, highres.scale)
|
||||||
|
for _i in range(highres.iterations):
|
||||||
image = process_tile_order(
|
image = process_tile_order(
|
||||||
TileOrder.grid,
|
TileOrder.grid,
|
||||||
image,
|
image,
|
||||||
size.height // highres.scale,
|
size.height // highres.scale,
|
||||||
highres.scale,
|
highres.scale,
|
||||||
[highres_tile],
|
[highres_tile],
|
||||||
|
overlap=0,
|
||||||
)
|
)
|
||||||
|
|
||||||
image = run_upscale_correction(
|
image = run_upscale_correction(
|
||||||
|
|
|
@ -326,17 +326,20 @@ class HighresParams:
|
||||||
steps: int,
|
steps: int,
|
||||||
strength: float,
|
strength: float,
|
||||||
method: Literal["bilinear", "lanczos", "upscale"] = "lanczos",
|
method: Literal["bilinear", "lanczos", "upscale"] = "lanczos",
|
||||||
|
iterations: int = 1,
|
||||||
):
|
):
|
||||||
self.scale = scale
|
self.scale = scale
|
||||||
self.steps = steps
|
self.steps = steps
|
||||||
self.strength = strength
|
self.strength = strength
|
||||||
self.method = method
|
self.method = method
|
||||||
|
self.iterations = iterations
|
||||||
|
|
||||||
def resize(self, size: Size) -> Size:
|
def resize(self, size: Size) -> Size:
|
||||||
return Size(size.width * self.scale, size.height * self.scale)
|
return Size(size.width * (self.scale ** self.iterations), size.height * (self.scale ** self.iterations))
|
||||||
|
|
||||||
def tojson(self):
|
def tojson(self):
|
||||||
return {
|
return {
|
||||||
|
"iterations": self.iterations,
|
||||||
"method": self.method,
|
"method": self.method,
|
||||||
"scale": self.scale,
|
"scale": self.scale,
|
||||||
"steps": self.steps,
|
"steps": self.steps,
|
||||||
|
|
|
@ -226,6 +226,13 @@ def upscale_from_request() -> UpscaleParams:
|
||||||
|
|
||||||
|
|
||||||
def highres_from_request() -> HighresParams:
|
def highres_from_request() -> HighresParams:
|
||||||
|
iterations = get_and_clamp_int(
|
||||||
|
request.args,
|
||||||
|
"highresIterations",
|
||||||
|
get_config_value("highresIterations"),
|
||||||
|
get_config_value("highresIterations", "max"),
|
||||||
|
get_config_value("highresIterations", "min"),
|
||||||
|
)
|
||||||
method = get_from_list(request.args, "highresMethod", get_highres_methods())
|
method = get_from_list(request.args, "highresMethod", get_highres_methods())
|
||||||
scale = get_and_clamp_int(
|
scale = get_and_clamp_int(
|
||||||
request.args,
|
request.args,
|
||||||
|
@ -254,4 +261,5 @@ def highres_from_request() -> HighresParams:
|
||||||
steps,
|
steps,
|
||||||
strength,
|
strength,
|
||||||
method=method,
|
method=method,
|
||||||
|
iterations=iterations,
|
||||||
)
|
)
|
||||||
|
|
|
@ -60,6 +60,12 @@
|
||||||
"max": 1024,
|
"max": 1024,
|
||||||
"step": 8
|
"step": 8
|
||||||
},
|
},
|
||||||
|
"highresIterations": {
|
||||||
|
"default": 1,
|
||||||
|
"min": 1,
|
||||||
|
"max": 4,
|
||||||
|
"step": 1
|
||||||
|
},
|
||||||
"highresMethod": {
|
"highresMethod": {
|
||||||
"default": "lanczos",
|
"default": "lanczos",
|
||||||
"keys": [
|
"keys": [
|
||||||
|
|
|
@ -147,6 +147,7 @@ export interface BlendParams {
|
||||||
export interface HighresParams {
|
export interface HighresParams {
|
||||||
enabled: boolean;
|
enabled: boolean;
|
||||||
|
|
||||||
|
highresIterations: number;
|
||||||
highresMethod: string;
|
highresMethod: string;
|
||||||
highresScale: number;
|
highresScale: number;
|
||||||
highresSteps: number;
|
highresSteps: number;
|
||||||
|
@ -504,6 +505,7 @@ export function makeClient(root: string, f = fetch): ApiClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doesExist(highres) && highres.enabled) {
|
if (doesExist(highres) && highres.enabled) {
|
||||||
|
url.searchParams.append('highresIterations', highres.highresIterations.toFixed(FIXED_INTEGER));
|
||||||
url.searchParams.append('highresMethod', highres.highresMethod);
|
url.searchParams.append('highresMethod', highres.highresMethod);
|
||||||
url.searchParams.append('highresScale', highres.highresScale.toFixed(FIXED_INTEGER));
|
url.searchParams.append('highresScale', highres.highresScale.toFixed(FIXED_INTEGER));
|
||||||
url.searchParams.append('highresSteps', highres.highresSteps.toFixed(FIXED_INTEGER));
|
url.searchParams.append('highresSteps', highres.highresSteps.toFixed(FIXED_INTEGER));
|
||||||
|
|
|
@ -86,5 +86,18 @@ export function HighresControl() {
|
||||||
}
|
}
|
||||||
</Select>
|
</Select>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
|
<NumericField
|
||||||
|
label={t('parameter.highres.iterations')}
|
||||||
|
disabled={highres.enabled === false}
|
||||||
|
min={params.highresIterations.min}
|
||||||
|
max={params.highresIterations.max}
|
||||||
|
step={params.highresIterations.step}
|
||||||
|
value={highres.highresIterations}
|
||||||
|
onChange={(iterations) => {
|
||||||
|
setHighres({
|
||||||
|
highresIterations: iterations,
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</Stack>;
|
</Stack>;
|
||||||
}
|
}
|
||||||
|
|
|
@ -433,6 +433,7 @@ export function createStateSlices(server: ServerParams) {
|
||||||
const createHighresSlice: Slice<HighresSlice> = (set) => ({
|
const createHighresSlice: Slice<HighresSlice> = (set) => ({
|
||||||
highres: {
|
highres: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
|
highresIterations: server.highresIterations.default,
|
||||||
highresMethod: '',
|
highresMethod: '',
|
||||||
highresSteps: server.highresSteps.default,
|
highresSteps: server.highresSteps.default,
|
||||||
highresScale: server.highresScale.default,
|
highresScale: server.highresScale.default,
|
||||||
|
@ -450,6 +451,7 @@ export function createStateSlices(server: ServerParams) {
|
||||||
set({
|
set({
|
||||||
highres: {
|
highres: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
|
highresIterations: server.highresIterations.default,
|
||||||
highresMethod: '',
|
highresMethod: '',
|
||||||
highresSteps: server.highresSteps.default,
|
highresSteps: server.highresSteps.default,
|
||||||
highresScale: server.highresScale.default,
|
highresScale: server.highresScale.default,
|
||||||
|
|
Loading…
Reference in New Issue