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

不多说 先上效果:



环境依赖

  • 推理框架,用于模型计算(支持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 )

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容