From 6c3bf1c6c44830fc7f1a76e023d07b9db4fce7b5 Mon Sep 17 00:00:00 2001 From: Art Gourieff <85128026+Gourieff@users.noreply.github.com> Date: Sat, 2 Mar 2024 13:24:20 +0700 Subject: [PATCH] UPDATE: XYZ Improved - "Face Model" axis is ready +VersionUP (0.7.0 beta2) --- README.md | 19 +++++++++++++++++-- README_RU.md | 15 +++++++++++++-- scripts/reactor_faceswap.py | 1 + scripts/reactor_xyz.py | 19 +++++++++++++++++-- 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 79eac55..93b3ff0 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ logo - ![Version](https://img.shields.io/badge/version-0.7.0_beta1-green?style=for-the-badge&labelColor=darkgreen) + ![Version](https://img.shields.io/badge/version-0.7.0_beta2-green?style=for-the-badge&labelColor=darkgreen) Support Me on Boosty @@ -43,14 +43,29 @@
Click to expand +### 0.7.0 BETA2 + +- X/Y/Z is improved! One more parameter is ready: you can now select several face models to create a variation of swaps to choose the best one! + +0.7.0-whatsnew-05 + +To use "Face Model" axis - you should enable ReActor and choose any face model as the Source:
+0.7.0-whatsnew-070.7.0-whatsnew-06 + +Full size demo image: [xyz_demo_2.png](https://raw.githubusercontent.com/Gourieff/Assets/main/sd-webui-reactor/xyz_demo_2.png) + ### 0.7.0 BETA1 -- X/Y/Z Script support (up to 3 axis: CodeFormer Weight, Restorer Visibility, Face Mask Correction) +- X/Y/Z Script support (up to 3 axes: CodeFormer Weight, Restorer Visibility, Face Mask Correction) 0.7.0-whatsnew-03 +0.7.0-whatsnew-04 + Full size demo image: [xyz_demo.png](https://raw.githubusercontent.com/Gourieff/Assets/main/sd-webui-reactor/xyz_demo.png) +__Don't forget to enable ReActor and set any source (to prevent "no source" error)__ + ### 0.7.0 ALPHA1 - You can now blend faces to build blended face models ("Tools->Face Models->Blend") - due to popular demand diff --git a/README_RU.md b/README_RU.md index 201255b..111d326 100644 --- a/README_RU.md +++ b/README_RU.md @@ -2,7 +2,7 @@ logo - ![Version](https://img.shields.io/badge/версия-0.7.0_beta1-green?style=for-the-badge&labelColor=darkgreen) + ![Version](https://img.shields.io/badge/версия-0.7.0_beta2-green?style=for-the-badge&labelColor=darkgreen) Поддержать проект на Boosty @@ -42,13 +42,24 @@
Нажмите, чтобы посмотреть +### 0.7.0 BETA2 + +- X/Y/Z опция улучшена! Добавлен ещё один параметр: теперь вы можете выбрать несколько моделей лиц для создания вариации замененных лиц, чтобы выбрать наилучшие! + +0.7.0-whatsnew-05 + +Чтобы использовать ось "Face Model" - активируйте РеАктор и выбирите любую модель лица в качестве источника:
+0.7.0-whatsnew-070.7.0-whatsnew-06 + +Полноразмерное демо-изображение: [xyz_demo_2.png](https://raw.githubusercontent.com/Gourieff/Assets/main/sd-webui-reactor/xyz_demo_2.png) + ### 0.7.0 BETA1 - Поддержка X/Y/Z скрипта (до 3-х параметров: CodeFormer Weight, Restorer Visibility, Face Mask Correction) 0.7.0-whatsnew-03 -Full size demo image: [xyz_demo.png](https://raw.githubusercontent.com/Gourieff/Assets/main/sd-webui-reactor/xyz_demo.png) +Полноразмерное демо-изображение: [xyz_demo.png](https://raw.githubusercontent.com/Gourieff/Assets/main/sd-webui-reactor/xyz_demo.png) ### 0.7.0 ALPHA1 diff --git a/scripts/reactor_faceswap.py b/scripts/reactor_faceswap.py index 428f3cf..d02fc68 100644 --- a/scripts/reactor_faceswap.py +++ b/scripts/reactor_faceswap.py @@ -256,6 +256,7 @@ class FaceSwapScript(scripts.Script): self.face_restorer_visibility = shared.opts.data['restorer_visibility'] if 'restorer_visibility' in shared.opts.data.keys() else 1 self.codeformer_weight = shared.opts.data['codeformer_weight'] if 'codeformer_weight' in shared.opts.data.keys() else 0.5 self.mask_face = shared.opts.data['mask_face'] if 'mask_face' in shared.opts.data.keys() else False + self.face_model = shared.opts.data['face_model'] if 'face_model' in shared.opts.data.keys() else "None" logger.debug("*** Set Device") set_Device(self.device) diff --git a/scripts/reactor_xyz.py b/scripts/reactor_xyz.py index 52a801a..75c7e57 100644 --- a/scripts/reactor_xyz.py +++ b/scripts/reactor_xyz.py @@ -5,6 +5,11 @@ Thanks @ledahu for contributing from modules import scripts from modules.shared import opts +from scripts.reactor_helpers import ( + get_model_names, + get_facemodels +) + # xyz_grid = [x for x in scripts.scripts_data if x.script_class.__module__ == "xyz_grid.py"][0].module def find_module(module_names): @@ -29,6 +34,9 @@ def bool_(string): def choices_bool(): return ["False", "True"] +def choices_face_models(): + return get_model_names(get_facemodels) + def float_applier(value_name:str, min_range:float = 0, max_range:float = 1): """ Returns a function that applies the given value to the given value_name in opts.data. @@ -46,17 +54,24 @@ def float_applier(value_name:str, min_range:float = 0, max_range:float = 1): return apply_float def bool_applier(value_name:str): - def apply_bool__(p, x, xs): + def apply_bool(p, x, xs): x_normed = bool_(x) opts.data[value_name] = x_normed # print(f'normed = {x_normed}') - return apply_bool__ + return apply_bool + +def str_applier(value_name:str): + def apply_str(p, x, xs): + opts.data[value_name] = x + return apply_str + def add_axis_options(xyz_grid): extra_axis_options = [ xyz_grid.AxisOption("[ReActor] CodeFormer Weight", float, float_applier("codeformer_weight", 0, 1)), xyz_grid.AxisOption("[ReActor] Restorer Visibility", float, float_applier("restorer_visibility", 0, 1)), xyz_grid.AxisOption("[ReActor] Face Mask Correction", str, bool_applier("mask_face"), choices=choices_bool), + xyz_grid.AxisOption("[ReActor] Face Models", str, str_applier("face_model"), choices=choices_face_models), ] set_a = {opt.label for opt in xyz_grid.axis_options} set_b = {opt.label for opt in extra_axis_options}