img_backswapper / app.py
jgurzoni's picture
creating gradio app
d7713d2
raw
history blame
No virus
1.56 kB
import gradio as gr
from maskformer import Mask2FormerSegmenter
from inpainter import Inpainter
import os
from tqdm import tqdm
from PIL import Image
def main(image1, image2, refine='False'):
segmenter = Mask2FormerSegmenter()
segmenter.load_models(checkpoint_name = "facebook/mask2former-swin-large-ade-semantic")
inpainter = Inpainter({'scale_factor': None, 'pad_out_to_modulo': 8, 'predict': {'out_key': 'inpainted'}})
inpainter.load_model_from_checkpoint('big-lama', 'best.ckpt')
fg_img1, mask_img1 = segmenter.retrieve_fg_image_and_mask(image1, verbose=False)
new_bg_img1 = inpainter.inpaint_img(image1, mask_img1, refine=refine)
fg_img2, mask_img2 = segmenter.retrieve_fg_image_and_mask(image2, verbose=False)
new_bg_img2 = inpainter.inpaint_img(image2, mask_img2, refine=refine)
image_a = Image.alpha_composite(new_bg_img2.convert('RGBA'), fg_img1)
image_b = Image.alpha_composite(new_bg_img1.convert('RGBA'), fg_img2)
return image_a, image_b
def process_image(image1, image2, refine=False):
img1 = Image.fromarray(image1.astype('uint8'), 'RGB')
img2 = Image.fromarray(image2.astype('uint8'), 'RGB')
return main(img1, img2, refine)
iface = gr.Interface(
fn=process_image,
inputs=["image", "image", gr.inputs.Checkbox(label="Use Refiner on background")],
outputs=["image", "image"],
title="Background Swapper App",
description="Upload two images to see their backgrounds swapped.",
)
iface.launch()