glucauze / sd-webui-faceswaplab

Extended faceswap extension for StableDiffusion web-ui with multiple faceswaps, inpainting, checkpoints, ....
https://glucauze.github.io/sd-webui-faceswaplab/
GNU Affero General Public License v3.0
706 stars 92 forks source link

img2img -> Inpaint -> dont work #184

Open kalle07 opened 3 months ago

kalle07 commented 3 months ago

OK in TAB img2img SUB TAB img2img it worked

but

TAB img2img SUB TAB inpaint draw a mask on face (dont work)

... 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 35/35 [00:10<00:00, 3.43it/s] 2024-03-11 09:29:10,060 - FaceSwapLab - INFO - Try to use model : D:\stable-diffusion\webui\models\faceswaplab\inswapper_128.onnx██████████████████████████████| 35/35 [00:09<00:00, 3.47it/s] d:\stable-diffusion\system\python\lib\site-packages\insightface\utils\transform.py:68: FutureWarning: rcond parameter will change to the default of machine precision times max(M, N) where M and N are the input matrix dimensions. To use the future default and silence this warning we advise to pass rcond=None, to keep using the old, explicitly pass rcond=-1. P = np.linalg.lstsq(X_homo, Y)[0].T # Affine matrix. 3 x 4 2024-03-11 09:29:11,333 - FaceSwapLab - INFO - blend all faces together 2024-03-11 09:29:11,516 - FaceSwapLab - INFO - Int Gender : 0 2024-03-11 09:29:11,516 - FaceSwapLab - INFO - Process face 0 2024-03-11 09:29:11,516 - FaceSwapLab - INFO - Source Gender 0 2024-03-11 09:29:11,516 - FaceSwapLab - INFO - Target faces count : 1 2024-03-11 09:29:11,516 - FaceSwapLab - INFO - swap face 0 2024-03-11 09:29:12,201 - FaceSwapLab - INFO - **** 2024-03-11 09:29:12,201 - FaceSwapLab - INFO - Inswapper 2024-03-11 09:29:12,209 - FaceSwapLab - INFO - **** 2024-03-11 09:29:12,241 - FaceSwapLab - INFO - Finished processing image, return 1 images 2024-03-11 09:29:12,241 - FaceSwapLab - INFO - 1 images swapped 2024-03-11 09:29:12,251 - FaceSwapLab - INFO - Add swp image to processed 2024-03-11 09:29:12,251 - FaceSwapLab - ERROR - Failed to swap face in postprocess method : 'tuple' object has no attribute 'height' Traceback (most recent call last): File "D:\stable-diffusion\webui\extensions\sd-webui-faceswaplab\scripts\faceswaplab.py", line 216, in postprocess save_image( File "D:\stable-diffusion\webui\modules\images.py", line 611, in save_image if (image.height > 65535 or image.width > 65535) and extension.lower() in ("jpg", "jpeg") or (image.height > 16383 or image.width > 16383) and extension.lower() == "webp": AttributeError: 'tuple' object has no attribute 'height' Total progress: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 35/35 [00:12<00:00, 2.72it/s] Total progress: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 35/35 [00:12<00:00, 3.47it/s]

jaesimio commented 3 months ago

@kalle07, Plaese check this

kalle07 commented 3 months ago

newest faceswap

Automatic1111 (1.8.0) tab img2img -> tab inpaint with or without mask

error: 2024-03-23 14:40:19,818 - FaceSwapLab - INFO - Try to use model : D:\stable-diffusion\webui\models\faceswaplab\inswapper_128.onnx████████████████████████████████████████████████████████████████████████████████| 31/31 [00:10<00:00, 2.96it/s] d:\stable-diffusion\system\python\lib\site-packages\insightface\utils\transform.py:68: FutureWarning: rcond parameter will change to the default of machine precision times max(M, N) where M and N are the input matrix dimensions. To use the future default and silence this warning we advise to pass rcond=None, to keep using the old, explicitly pass rcond=-1. P = np.linalg.lstsq(X_homo, Y)[0].T # Affine matrix. 3 x 4 2024-03-23 14:40:21,199 - FaceSwapLab - INFO - Finished processing image, return 1 images 2024-03-23 14:40:21,199 - FaceSwapLab - INFO - 1 images swapped 2024-03-23 14:40:21,207 - FaceSwapLab - INFO - Add swp image to processed 2024-03-23 14:40:21,207 - FaceSwapLab - ERROR - Failed to swap face in postprocess method : 'tuple' object has no attribute 'height' Traceback (most recent call last): File "D:\stable-diffusion\webui\extensions\sd-webui-faceswaplab\scripts\faceswaplab.py", line 216, in postprocess save_image( File "D:\stable-diffusion\webui\modules\images.py", line 611, in save_image if (image.height > 65535 or image.width > 65535) and extension.lower() in ("jpg", "jpeg") or (image.height > 16383 or image.width > 16383) and extension.lower() == "webp": AttributeError: 'tuple' object has no attribute 'height' Total progress: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 31/31 [00:12<00:00, 2.46it/s] Total progress: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 31/31 [00:12<00:00, 2.96it/s]

btw: in img2img it worked fine but i will change the face and dont calculate a whole image

kalle07 commented 3 months ago

what iv made wrong ?

return img

    if p.overlay_images and batch_index < len(p.overlay_images):
      selected_overlay = p.overlay_images[batch_index]
      img, _ = processing.apply_overlay(img, p.paste_to, selected_overlay)
    else:
      return image, original_denoised_image
      logger.debug("No overlay selected or overlay list is empty.")

    if p.color_corrections is not None and batch_index < len(p.color_corrections):
        img = processing.apply_color_correction(
            p.color_corrections[batch_index], img
        )
return img
BigZampano commented 3 months ago

Had this problem a few days ago, made the proposed changes to the imgutils.py and it worked again... (@kalle07: the indentation of the lines is important, maybe re-check..)

Now today the same error came back...! I checked the imgutils.py file and the changes I made are still there...

Yesterday I updated the Nvidia driver for my 3060, it's now at version 551.86... could that be the issue...?

The problem is only when inpainting, img2img works fine...


Edit: I downgraded the Nvidia driver and it's working again...!!

jaesimio commented 3 months ago

@kalle07,

You need to check the indentation and apply_mask() function's return value.

    if p.overlay_images and batch_index < len(p.overlay_images):
        selected_overlay = p.overlay_images[batch_index]
        img, _ = processing.apply_overlay(img, p.paste_to, selected_overlay)
    else:
        return image, original_denoised_image
#               ^
#               I think this point is wrong
        logger.debug("No overlay selected or overlay list is empty.")

    if p.color_corrections is not None and batch_index < len(p.color_corrections):
        img = processing.apply_color_correction(
            p.color_corrections[batch_index], img
        )
return img

to:

        return img
kalle07 commented 3 months ago

really it depends on nvidia driver (my is 546.17)

ok .. to be shure

thats my original

    if p.overlay_images and batch_index < len(p.overlay_images):
      selected_overlay = p.overlay_images[batch_index]
      img = processing.apply_overlay(img, p.paste_to, selected_overlay)
    else:
      return img
      logger.debug("No overlay selected or overlay list is empty.")

    if p.color_corrections is not None and batch_index < len(p.color_corrections):
        img = processing.apply_color_correction(
            p.color_corrections[batch_index], img
        )
return img

what exact i should change (i have v 1.8.0)

jaesimio commented 3 months ago

@kalle07

Try this code and if that doesn't work, it's probably a nvidia driver issue.

    if p.overlay_images and batch_index < len(p.overlay_images):
      selected_overlay = p.overlay_images[batch_index]
      img, _ = processing.apply_overlay(img, p.paste_to, selected_overlay)
#     ^
#     change this only
    else:
      return img
#     ^
#     do not change
      logger.debug("No overlay selected or overlay list is empty.")

    if p.color_corrections is not None and batch_index < len(p.color_corrections):
        img = processing.apply_color_correction(
            p.color_corrections[batch_index], img
        )
return img
kalle07 commented 3 months ago

not work :(

...

    if p.overlay_images and batch_index < len(p.overlay_images):
        selected_overlay = p.overlay_images[batch_index]
        img = processing.apply_overlay(img, p.paste_to, selected_overlay)
    else:
        return img, original_denoised_image
        logger.debug("No overlay selected or overlay list is empty.")
    if p.color_corrections is not None and batch_index < len(p.color_corrections):
        img = processing.apply_color_correction(
            p.color_corrections[batch_index], img
        )
return img

...

img, _ = (also not working same error) delete "original_denoised_image" also not working

Total progress: 100%|██████████████████████████████████████████████████████████████████| 31/31 [00:22<00:00, 1.38it/s] 100%|██████████████████████████████████████████████████████████████████████████████████| 31/31 [00:19<00:00, 1.58it/s] 2024-03-28 10:46:00,732 - FaceSwapLab - INFO - Try to use model : D:\stable-diffusion\webui\models\faceswaplab\inswapper_128.onnx d:\stable-diffusion\system\python\lib\site-packages\insightface\utils\transform.py:68: FutureWarning: rcond parameter will change to the default of machine precision times max(M, N) where M and N are the input matrix dimensions. To use the future default and silence this warning we advise to pass rcond=None, to keep using the old, explicitly pass rcond=-1. P = np.linalg.lstsq(X_homo, Y)[0].T # Affine matrix. 3 x 4 2024-03-28 10:46:02,004 - FaceSwapLab - INFO - blend all faces together 2024-03-28 10:46:02,004 - FaceSwapLab - INFO - loading face Vero_face.safetensors 2024-03-28 10:46:02,004 - FaceSwapLab - INFO - Int Gender : 0 2024-03-28 10:46:02,004 - FaceSwapLab - INFO - Process face 0 2024-03-28 10:46:02,004 - FaceSwapLab - INFO - Source Gender 0 2024-03-28 10:46:02,004 - FaceSwapLab - INFO - Target faces count : 1 2024-03-28 10:46:02,004 - FaceSwapLab - INFO - swap face 0 2024-03-28 10:46:02,659 - FaceSwapLab - INFO - **** 2024-03-28 10:46:02,659 - FaceSwapLab - INFO - Inswapper 2024-03-28 10:46:02,667 - FaceSwapLab - INFO - **** 2024-03-28 10:46:02,770 - FaceSwapLab - INFO - Finished processing image, return 1 images 2024-03-28 10:46:02,778 - FaceSwapLab - INFO - 1 images swapped 2024-03-28 10:46:02,778 - FaceSwapLab - ERROR - Failed to swap face in postprocess method : apply_overlay() takes 3 positional arguments but 4 were given Traceback (most recent call last): File "D:\stable-diffusion\webui\extensions\sd-webui-faceswaplab\scripts\faceswaplab.py", line 201, in postprocess swp_img = imgutils.apply_mask(swp_img, p, batch_index) File "D:\stable-diffusion\webui\extensions\sd-webui-faceswaplab\scripts\faceswaplab_utils\imgutils.py", line 226, in apply_mask img = processing.apply_color_correction( TypeError: apply_overlay() takes 3 positional arguments but 4 were given Total progress: 100%|██████████████████████████████████████████████████████████████████| 31/31 [00:22<00:00, 1.36it/s] 2024-03-28 10:49:14,600 - ControlNet - INFO - Preview Resolution = -1██████████████████| 31/31 [00:22<00:00, 1.59it/s]

which nvidia driver is working ? and why should this important ?

kalle07 commented 2 months ago

hello , any idea ?

LucianoDaluz commented 1 month ago

2024-06-03 11:53:01,725 - FaceSwapLab - ERROR - Failed to swap face in postprocess method : apply_overlay() takes 3 positional arguments but 4 were given Traceback (most recent call last): File "C:\Users\lucia\Videos\SD\stable-diffusion-webui\extensions\sd-webui-faceswaplab\scripts\faceswaplab.py", line 201, in postprocess swp_img = imgutils.apply_mask(swp_img, p, batch_index) File "C:\Users\lucia\Videos\SD\stable-diffusion-webui\extensions\sd-webui-faceswaplab\scripts\faceswaplab_utils\imgutils.py", line 224, in apply_mask img = processing.apply_overlay(img, p.paste_to, batch_index, p.overlay_images) TypeError: apply_overlay() takes 3 positional arguments but 4 were given

kalle07 commented 1 month ago

use reactor

is in the extension list in a1111

if you mask a to small area.. this error apears !!! you shoukld reduce "Only masked padding, pixels" to 4 to 12