不多说 先上效果:
环境依赖
- 推理框架,用于模型计算(支持cpu)
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 )
运行后会生成页面访问地址,擦除效果堪比商业软件