UPDATE: CodeFormer Weight, API
+VersionUP (beta3)
This commit is contained in:
parent
7950a546c5
commit
6d6981acbb
@ -2,7 +2,7 @@
|
||||
|
||||
<img src="example/ReActor_logo_red.png" alt="logo" width="180px"/>
|
||||
|
||||

|
||||

|
||||
|
||||
<table>
|
||||
<tr>
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
<img src="example/ReActor_logo_red.png" alt="logo" width="180px"/>
|
||||
|
||||

|
||||

|
||||
|
||||
<table>
|
||||
<tr>
|
||||
|
||||
@ -39,6 +39,7 @@ args=[
|
||||
0, #14 Gender Detection (Source) (0 - No, 1 - Female Only, 2 - Male Only)
|
||||
0, #15 Gender Detection (Target) (0 - No, 1 - Female Only, 2 - Male Only)
|
||||
False, #16 Save the original image(s) made before swapping
|
||||
0.8, #17 CodeFormer Weight (0 = maximum effect, 1 = minimum effect), 0.5 - by default
|
||||
]
|
||||
|
||||
# The args for ReActor can be found by
|
||||
|
||||
@ -12,6 +12,7 @@ curl -X POST \
|
||||
"upscale_visibility": 1,
|
||||
"face_restorer": "CodeFormer",
|
||||
"restorer_visibility": 1,
|
||||
"codeformer_weight": 0.5,
|
||||
"restore_first": 1,
|
||||
"model": "inswapper_128.onnx",
|
||||
"gender_source": 0,
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
"upscale_visibility": 1,
|
||||
"face_restorer": "CodeFormer",
|
||||
"restorer_visibility": 1,
|
||||
"codeformer_weight": 0.5,
|
||||
"restore_first": 1,
|
||||
"model": "inswapper_128.onnx",
|
||||
"gender_source": 0,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
'''
|
||||
Thanks SpenserCai for the original version of the roop api script
|
||||
-----------------------------------
|
||||
--- ReActor External API v1.0.0 ---
|
||||
--- ReActor External API v1.0.1 ---
|
||||
-----------------------------------
|
||||
'''
|
||||
import os, glob
|
||||
@ -64,6 +64,7 @@ def reactor_api(_: gr.Blocks, app: FastAPI):
|
||||
upscale_visibility: float = Body(1,title="Upscaler visibility (if scale = 1)"),
|
||||
face_restorer: str = Body("None",title="Restore Face: 0 - None; 1 - CodeFormer; 2 - GFPGA"),
|
||||
restorer_visibility: float = Body(1,title="Restore visibility value"),
|
||||
codeformer_weight: float = Body(0.5,title="CodeFormer Weight"),
|
||||
restore_first: int = Body(1,title="Restore face -> Then upscale, 1 - True, 0 - False"),
|
||||
model: str = Body("inswapper_128.onnx",title="Model"),
|
||||
gender_source: int = Body(0,title="Gender Detection (Source) (0 - No, 1 - Female Only, 2 - Male Only)"),
|
||||
@ -78,7 +79,7 @@ def reactor_api(_: gr.Blocks, app: FastAPI):
|
||||
gender_s = gender_source
|
||||
gender_t = gender_target
|
||||
restore_first_bool = True if restore_first == 1 else False
|
||||
up_options = EnhancementOptions(do_restore_first=restore_first_bool, scale=scale, upscaler=get_upscaler(upscaler), upscale_visibility=upscale_visibility,face_restorer=get_face_restorer(face_restorer),restorer_visibility=restorer_visibility)
|
||||
up_options = EnhancementOptions(do_restore_first=restore_first_bool, scale=scale, upscaler=get_upscaler(upscaler), upscale_visibility=upscale_visibility,face_restorer=get_face_restorer(face_restorer),restorer_visibility=restorer_visibility,codeformer_weight=codeformer_weight)
|
||||
use_model = get_full_model(model)
|
||||
if use_model is None:
|
||||
Exception("Model not found")
|
||||
|
||||
@ -90,9 +90,13 @@ class FaceSwapScript(scripts.Script):
|
||||
value=shared.face_restorers[0].name(),
|
||||
type="value",
|
||||
)
|
||||
face_restorer_visibility = gr.Slider(
|
||||
0, 1, 1, step=0.1, label="Restore Face Visibility"
|
||||
)
|
||||
with gr.Column():
|
||||
face_restorer_visibility = gr.Slider(
|
||||
0, 1, 1, step=0.1, label="Restore Face Visibility"
|
||||
)
|
||||
codeformer_weight = gr.Slider(
|
||||
0, 1, 0.5, step=0.1, label="CodeFormer Weight", info="0 = maximum effect, 1 = minimum effect"
|
||||
)
|
||||
gr.Markdown("<br>")
|
||||
swap_in_source = gr.Checkbox(
|
||||
False,
|
||||
@ -162,6 +166,7 @@ class FaceSwapScript(scripts.Script):
|
||||
gender_source,
|
||||
gender_target,
|
||||
save_original,
|
||||
codeformer_weight,
|
||||
]
|
||||
|
||||
|
||||
@ -188,6 +193,7 @@ class FaceSwapScript(scripts.Script):
|
||||
face_restorer=self.face_restorer,
|
||||
upscale_visibility=self.upscaler_visibility,
|
||||
restorer_visibility=self.face_restorer_visibility,
|
||||
codeformer_weight=self.codeformer_weight,
|
||||
)
|
||||
|
||||
def process(
|
||||
@ -210,6 +216,7 @@ class FaceSwapScript(scripts.Script):
|
||||
gender_source,
|
||||
gender_target,
|
||||
save_original,
|
||||
codeformer_weight,
|
||||
):
|
||||
self.enable = enable
|
||||
if self.enable:
|
||||
@ -232,6 +239,7 @@ class FaceSwapScript(scripts.Script):
|
||||
self.gender_source = gender_source
|
||||
self.gender_target = gender_target
|
||||
self.save_original = save_original
|
||||
self.codeformer_weight = codeformer_weight
|
||||
if self.gender_source is None or self.gender_source == "No":
|
||||
self.gender_source = 0
|
||||
if self.gender_target is None or self.gender_target == "No":
|
||||
|
||||
@ -10,6 +10,7 @@ from PIL import Image
|
||||
import insightface
|
||||
|
||||
from modules.face_restoration import FaceRestoration
|
||||
from modules import codeformer_model
|
||||
from modules.upscaler import UpscalerData
|
||||
from modules.shared import state
|
||||
from modules.paths_internal import models_path
|
||||
@ -31,6 +32,7 @@ class EnhancementOptions:
|
||||
upscale_visibility: float = 0.5
|
||||
face_restorer: FaceRestoration = None
|
||||
restorer_visibility: float = 0.5
|
||||
codeformer_weight: float = 0.5
|
||||
|
||||
|
||||
MESSAGED_STOPPED = False
|
||||
@ -93,7 +95,12 @@ def restore_face(image: Image, enhancement_options: EnhancementOptions):
|
||||
original_image = result_image.copy()
|
||||
logger.info("Restoring the face with %s", enhancement_options.face_restorer.name())
|
||||
numpy_image = np.array(result_image)
|
||||
numpy_image = enhancement_options.face_restorer.restore(numpy_image)
|
||||
if enhancement_options.face_restorer.name() == "CodeFormer":
|
||||
numpy_image = codeformer_model.codeformer.restore(
|
||||
numpy_image, w=enhancement_options.codeformer_weight
|
||||
)
|
||||
else:
|
||||
numpy_image = enhancement_options.face_restorer.restore(numpy_image)
|
||||
restored_image = Image.fromarray(numpy_image)
|
||||
result_image = Image.blend(
|
||||
original_image, restored_image, enhancement_options.restorer_visibility
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
app_title = "ReActor"
|
||||
version_flag = "v0.4.2-b2"
|
||||
version_flag = "v0.4.2-b3"
|
||||
|
||||
from scripts.reactor_logger import logger, get_Run, set_Run
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user