fix: send missing model params, add face strength control
This commit is contained in:
parent
83f2e872f6
commit
0e27cc830d
|
@ -183,6 +183,7 @@ def upscale_from_request() -> UpscaleParams:
|
||||||
upscaling = get_from_list(request.args, 'upscaling', upscaling_models)
|
upscaling = get_from_list(request.args, 'upscaling', upscaling_models)
|
||||||
correction = get_from_list(request.args, 'correction', correction_models)
|
correction = get_from_list(request.args, 'correction', correction_models)
|
||||||
faces = request.args.get('faces', 'false') == 'true'
|
faces = request.args.get('faces', 'false') == 'true'
|
||||||
|
face_strength = get_and_clamp_float(request.args, 'faceStrength', 0.5, 1.0, 0.0)
|
||||||
|
|
||||||
return UpscaleParams(
|
return UpscaleParams(
|
||||||
upscaling,
|
upscaling,
|
||||||
|
@ -192,6 +193,7 @@ def upscale_from_request() -> UpscaleParams:
|
||||||
faces=faces,
|
faces=faces,
|
||||||
platform='onnx',
|
platform='onnx',
|
||||||
denoise=denoise,
|
denoise=denoise,
|
||||||
|
face_strength=face_strength,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -91,6 +91,7 @@ class UpscaleParams():
|
||||||
outscale: int = 1,
|
outscale: int = 1,
|
||||||
denoise: float = 0.5,
|
denoise: float = 0.5,
|
||||||
faces=True,
|
faces=True,
|
||||||
|
face_strength: float = 0.5,
|
||||||
platform: str = 'onnx',
|
platform: str = 'onnx',
|
||||||
half=False
|
half=False
|
||||||
) -> None:
|
) -> None:
|
||||||
|
@ -100,21 +101,10 @@ class UpscaleParams():
|
||||||
self.outscale = outscale
|
self.outscale = outscale
|
||||||
self.denoise = denoise
|
self.denoise = denoise
|
||||||
self.faces = faces
|
self.faces = faces
|
||||||
|
self.face_strength = face_strength
|
||||||
self.platform = platform
|
self.platform = platform
|
||||||
self.half = half
|
self.half = half
|
||||||
|
|
||||||
def rescale(self, scale: int, outscale: int = 1):
|
|
||||||
return UpscaleParams(
|
|
||||||
self.upscale_model,
|
|
||||||
correction_model=self.correction_model,
|
|
||||||
scale=scale,
|
|
||||||
outscale=outscale,
|
|
||||||
denoise=self.denoise,
|
|
||||||
faces=self.faces,
|
|
||||||
platform=self.platform,
|
|
||||||
half=self.half,
|
|
||||||
)
|
|
||||||
|
|
||||||
def resize(self, size: Size) -> Size:
|
def resize(self, size: Size) -> Size:
|
||||||
return Size(size.width * self.scale * self.outscale, size.height * self.scale * self.outscale)
|
return Size(size.width * self.scale * self.outscale, size.height * self.scale * self.outscale)
|
||||||
|
|
||||||
|
@ -190,6 +180,6 @@ def upscale_gfpgan(ctx: ServerContext, params: UpscaleParams, image, upsampler=N
|
||||||
bg_upsampler=upsampler)
|
bg_upsampler=upsampler)
|
||||||
|
|
||||||
_, _, output = face_enhancer.enhance(
|
_, _, output = face_enhancer.enhance(
|
||||||
image, has_aligned=False, only_center_face=False, paste_back=True)
|
image, has_aligned=False, only_center_face=False, paste_back=True, weight=params.face_strength)
|
||||||
|
|
||||||
return output
|
return output
|
||||||
|
|
|
@ -73,6 +73,7 @@ export interface UpscaleParams {
|
||||||
faces: boolean;
|
faces: boolean;
|
||||||
scale: number;
|
scale: number;
|
||||||
outscale: number;
|
outscale: number;
|
||||||
|
faceStrength: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ApiResponse {
|
export interface ApiResponse {
|
||||||
|
@ -167,6 +168,8 @@ export function makeImageURL(root: string, type: string, params: BaseImgParams):
|
||||||
export function appendModelToURL(url: URL, params: ModelParams) {
|
export function appendModelToURL(url: URL, params: ModelParams) {
|
||||||
url.searchParams.append('model', params.model);
|
url.searchParams.append('model', params.model);
|
||||||
url.searchParams.append('platform', params.platform);
|
url.searchParams.append('platform', params.platform);
|
||||||
|
url.searchParams.append('upscaling', params.upscaling);
|
||||||
|
url.searchParams.append('correction', params.correction);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function appendUpscaleToURL(url: URL, upscale: UpscaleParams) {
|
export function appendUpscaleToURL(url: URL, upscale: UpscaleParams) {
|
||||||
|
@ -175,6 +178,7 @@ export function appendUpscaleToURL(url: URL, upscale: UpscaleParams) {
|
||||||
url.searchParams.append('faces', String(upscale.faces));
|
url.searchParams.append('faces', String(upscale.faces));
|
||||||
url.searchParams.append('scale', upscale.scale.toFixed(FIXED_INTEGER));
|
url.searchParams.append('scale', upscale.scale.toFixed(FIXED_INTEGER));
|
||||||
url.searchParams.append('outscale', upscale.outscale.toFixed(FIXED_INTEGER));
|
url.searchParams.append('outscale', upscale.outscale.toFixed(FIXED_INTEGER));
|
||||||
|
url.searchParams.append('faceStrength', upscale.faceStrength.toFixed(FIXED_FLOAT));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -89,5 +89,19 @@ export function UpscaleControl(props: UpscaleControlProps) {
|
||||||
<FaceRetouchingNatural />
|
<FaceRetouchingNatural />
|
||||||
Face Correction
|
Face Correction
|
||||||
</ToggleButton>
|
</ToggleButton>
|
||||||
|
<NumericField
|
||||||
|
label='Strength'
|
||||||
|
decimal
|
||||||
|
disabled={params.enabled === false}
|
||||||
|
min={config.faceStrength.min}
|
||||||
|
max={config.faceStrength.max}
|
||||||
|
step={config.faceStrength.step}
|
||||||
|
value={params.faceStrength}
|
||||||
|
onChange={(faceStrength) => {
|
||||||
|
setUpscale({
|
||||||
|
faceStrength,
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</Stack>;
|
</Stack>;
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,6 +250,7 @@ export function createStateSlices(base: ConfigParams) {
|
||||||
faces: false,
|
faces: false,
|
||||||
scale: 1,
|
scale: 1,
|
||||||
outscale: 1,
|
outscale: 1,
|
||||||
|
faceStrength: 0.5,
|
||||||
},
|
},
|
||||||
setUpscale(upscale) {
|
setUpscale(upscale) {
|
||||||
set((prev) => ({
|
set((prev) => ({
|
||||||
|
|
Loading…
Reference in New Issue