|
from backend.models.lcmdiffusion_setting import DiffusionTask |
|
from backend.models.upscale import UpscaleMode |
|
from backend.upscale.edsr_upscale_onnx import upscale_edsr_2x |
|
from backend.upscale.aura_sr_upscale import upscale_aura_sr |
|
from backend.upscale.tiled_upscale import generate_upscaled_image |
|
from context import Context |
|
from PIL import Image |
|
from state import get_settings |
|
|
|
|
|
config = get_settings() |
|
|
|
|
|
def upscale_image( |
|
context: Context, |
|
src_image_path: str, |
|
dst_image_path: str, |
|
scale_factor: int = 2, |
|
upscale_mode: UpscaleMode = UpscaleMode.normal.value, |
|
strength: float = 0.1, |
|
): |
|
if upscale_mode == UpscaleMode.normal.value: |
|
upscaled_img = upscale_edsr_2x(src_image_path) |
|
upscaled_img.save(dst_image_path) |
|
print(f"Upscaled image saved {dst_image_path}") |
|
elif upscale_mode == UpscaleMode.aura_sr.value: |
|
upscaled_img = upscale_aura_sr(src_image_path) |
|
upscaled_img.save(dst_image_path) |
|
print(f"Upscaled image saved {dst_image_path}") |
|
else: |
|
config.settings.lcm_diffusion_setting.strength = ( |
|
0.3 if config.settings.lcm_diffusion_setting.use_openvino else strength |
|
) |
|
config.settings.lcm_diffusion_setting.diffusion_task = ( |
|
DiffusionTask.image_to_image.value |
|
) |
|
|
|
generate_upscaled_image( |
|
config.settings, |
|
src_image_path, |
|
config.settings.lcm_diffusion_setting.strength, |
|
upscale_settings=None, |
|
context=context, |
|
tile_overlap=( |
|
32 if config.settings.lcm_diffusion_setting.use_openvino else 16 |
|
), |
|
output_path=dst_image_path, |
|
image_format=config.settings.generated_images.format, |
|
) |
|
print(f"Upscaled image saved {dst_image_path}") |
|
|
|
return [Image.open(dst_image_path)] |
|
|