Path: blob/master/scripts/postprocessing_codeformer.py
3055 views
from PIL import Image1import numpy as np23from modules import scripts_postprocessing, codeformer_model, ui_components4import gradio as gr567class ScriptPostprocessingCodeFormer(scripts_postprocessing.ScriptPostprocessing):8name = "CodeFormer"9order = 30001011def ui(self):12with ui_components.InputAccordion(False, label="CodeFormer") as enable:13with gr.Row():14codeformer_visibility = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label="Visibility", value=1.0, elem_id="extras_codeformer_visibility")15codeformer_weight = gr.Slider(minimum=0.0, maximum=1.0, step=0.001, label="Weight (0 = maximum effect, 1 = minimum effect)", value=0, elem_id="extras_codeformer_weight")1617return {18"enable": enable,19"codeformer_visibility": codeformer_visibility,20"codeformer_weight": codeformer_weight,21}2223def process(self, pp: scripts_postprocessing.PostprocessedImage, enable, codeformer_visibility, codeformer_weight):24if codeformer_visibility == 0 or not enable:25return2627restored_img = codeformer_model.codeformer.restore(np.array(pp.image.convert("RGB"), dtype=np.uint8), w=codeformer_weight)28res = Image.fromarray(restored_img)2930if codeformer_visibility < 1.0:31res = Image.blend(pp.image, res, codeformer_visibility)3233pp.image = res34pp.info["CodeFormer visibility"] = round(codeformer_visibility, 3)35pp.info["CodeFormer weight"] = round(codeformer_weight, 3)363738