diff --git a/README.md b/README.md index e04303b..252d774 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Roop-GE 0.2.2 for StableDiffusion +# Roop-GE 0.2.3b for StableDiffusion ### NSFW (uncensored) version (use it on your own responsibility) of [original sd-webui-roop](https://github.com/s0md3v/sd-webui-roop) with a lot of improvements > GE (Gourieff Edition), aka "NSFW-Roop" diff --git a/scripts/faceswap.py b/scripts/faceswap.py index 5880a46..b29963b 100644 --- a/scripts/faceswap.py +++ b/scripts/faceswap.py @@ -12,11 +12,10 @@ import glob from modules.face_restoration import FaceRestoration from scripts.roop_logging import logger -from scripts.swapper import UpscaleOptions, swap_face, ImageResult +from scripts.swapper import UpscaleOptions, swap_face from scripts.roop_version import version_flag import os - def get_models(): models_path = os.path.join(scripts.basedir(), "models/roop/*") models = glob.glob(models_path) @@ -191,7 +190,7 @@ class FaceSwapScript(scripts.Script): model=self.model, upscale_options=self.upscale_options, ) - p.init_images[i] = result.image() + p.init_images[i] = result else: logger.error(f"Please provide a source face") @@ -203,7 +202,7 @@ class FaceSwapScript(scripts.Script): if self.enable and self.swap_in_generated: if self.source is not None: image: Image.Image = script_pp.image - result: ImageResult = swap_face( + result = swap_face( self.source, image, source_faces_index=self.source_faces_index, @@ -211,7 +210,10 @@ class FaceSwapScript(scripts.Script): model=self.model, upscale_options=self.upscale_options, ) - pp = scripts_postprocessing.PostprocessedImage(result.image()) - pp.info = {} - p.extra_generation_params.update(pp.info) - script_pp.image = pp.image + try: + pp = scripts_postprocessing.PostprocessedImage(result) + pp.info = {} + p.extra_generation_params.update(pp.info) + script_pp.image = pp.image + except: + logger.error(f"Cannot create a result image") diff --git a/scripts/roop_version.py b/scripts/roop_version.py index 8a9a1ae..91a70ec 100644 --- a/scripts/roop_version.py +++ b/scripts/roop_version.py @@ -1,4 +1,4 @@ -version_flag = "v0.2.2" +version_flag = "v0.2.3b" from scripts.roop_logging import logger diff --git a/scripts/swapper.py b/scripts/swapper.py index 3208f89..8df4ea4 100644 --- a/scripts/swapper.py +++ b/scripts/swapper.py @@ -1,9 +1,7 @@ import copy -import math import os -import tempfile from dataclasses import dataclass -from typing import List, Union, Dict, Set, Tuple +from typing import List, Union import cv2 import numpy as np @@ -12,10 +10,11 @@ from PIL import Image import insightface import onnxruntime -from modules.face_restoration import FaceRestoration, restore_faces -from modules.upscaler import Upscaler, UpscalerData +from modules.face_restoration import FaceRestoration +from modules.upscaler import UpscalerData from scripts.roop_logging import logger + providers = onnxruntime.get_available_providers() @@ -141,17 +140,6 @@ def get_face_single(img_data: np.ndarray, face_index=0, det_size=(640, 640)): return None -@dataclass -class ImageResult: - path: Union[str, None] = None - similarity: Union[Dict[int, float], None] = None # face, 0..1 - - def image(self) -> Union[Image.Image, None]: - if self.path: - return Image.open(self.path) - return None - - def swap_face( source_img: Image.Image, target_img: Image.Image, @@ -159,9 +147,8 @@ def swap_face( source_faces_index: List[int] = [0], faces_index: List[int] = [0], upscale_options: Union[UpscaleOptions, None] = None, -) -> ImageResult: +): result_image = target_img - fn = tempfile.NamedTemporaryFile(delete=False, suffix=".png") if model is not None: if isinstance(source_img, str): # source_img is a base64 string @@ -209,5 +196,4 @@ def swap_face( else: logger.info("No source face(s) found") - result_image.save(fn.name) - return ImageResult(path=fn.name) + return result_image \ No newline at end of file