| import os |
| import torch |
| import modules.core as core |
|
|
| from ldm_patched.pfn.architecture.RRDB import RRDBNet as ESRGAN |
| from ldm_patched.contrib.external_upscale_model import ImageUpscaleWithModel |
| from collections import OrderedDict |
| from modules.config import path_upscale_models |
|
|
| model_filename = os.path.join(path_upscale_models, 'fooocus_upscaler_s409985e5.bin') |
| opImageUpscaleWithModel = ImageUpscaleWithModel() |
| model = None |
|
|
|
|
| def perform_upscale(img): |
| global model |
|
|
| print(f'Upscaling image with shape {str(img.shape)} ...') |
|
|
| if model is None: |
| sd = torch.load(model_filename) |
| sdo = OrderedDict() |
| for k, v in sd.items(): |
| sdo[k.replace('residual_block_', 'RDB')] = v |
| del sd |
| model = ESRGAN(sdo) |
| model.cpu() |
| model.eval() |
|
|
| img = core.numpy_to_pytorch(img) |
| img = opImageUpscaleWithModel.upscale(model, img)[0] |
| img = core.pytorch_to_numpy(img)[0] |
|
|
| return img |
|
|