手把手做一个图片智能擦除小工具

2023-02-22  本文已影响0人  郭彦超

不多说 先上效果:



环境依赖

pip3 install torch torchvision torchaudio
pip3 install modelscope
pip3 install gradio

模型推理相关的代码

import cv2
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from PIL import Image
import requests
from matplotlib import pyplot as plt

 
inpainting = pipeline(Tasks.image_inpainting, model='damo/cv_fft_inpainting_lama' ) #
def img_clean(dic):
    img = dic["image"]
    mask = dic["mask"]
    w, h = img.size
    v = min(max(471, 313),512)
    r = w/v
    if r>1:
        h = int(h/r)
    else:
        h = int(h/r)
    img = img.resize((v, h))
    mask = mask.resize((v, h))
    input = {
            'img': img,
            'mask': mask,
    }

    
    result = inpainting(input)
    vis_img = result[OutputKeys.OUTPUT_IMG]
    vis_img = cv2.cvtColor(vis_img, cv2.COLOR_RGB2BGR)
 
    return img, Image.fromarray(vis_img)

生成交互页面

import gradio
interface2 = gradio.Interface(img_clean, 
                             inputs=gradio.ImageMask(type="pil"),
                             outputs=[gradio.outputs.Image(type="pil", label=None).style(height=320,width=320) for _ in range(2)], allow_flagging='never',
                             description="图像擦除|demo"
                            )

interface2.launch(inline=True, share=True,server_port=9988 )

运行后会生成页面访问地址,擦除效果堪比商业软件

上一篇下一篇

猜你喜欢

热点阅读