该模型为图像填充模型,输入一个抹除部分内容的图像,实现端到端的图像填充,返回填充后的完整图像。
模型效果如下:
该模型基于Stable Diffusion v2与diffusers进行构建。
通过在页面右侧绘制Mask,即可快速体验模型效果:
在 ModelScope 框架上,提供输入图像和掩码,即可以通过简单的 Pipeline 调用来使用Stable Diffusion v2图像填充模型。
import cv2
import torch
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
input_location = 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/image_inpainting/image_inpainting_1.png'
input_mask_location = 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/image_inpainting/image_inpainting_mask_1.png'
prompt = 'background'
output_image_path = './result.png'
input = {
'image': input_location,
'mask': input_mask_location,
'prompt': prompt
}
image_inpainting = pipeline(
Tasks.image_inpainting,
model='damo/cv_stable-diffusion-v2_image-inpainting_base',
device='gpu',
torch_dtype=torch.float16,
enable_attention_slicing=True)
output = image_inpainting(input)[OutputKeys.OUTPUT_IMG]
cv2.imwrite(output_image_path, output)
print('pipeline: the output image path is {}'.format(output_image_path))
Pipeline初始化参数
Pipeline调用参数
'prompt': 'background',
'num_inference_steps': 50,
'guidance_scale': 7.5,
'negative_prompt': None,
'num_images_per_prompt': 1,
'eta': 0.0
额外参数:
由于GPU显存限制,本项目默认支持开启FP16推理,可以在构建pipeline时传入参数torch_dtype=torch.float32来使用FP32;同时torch_dtype参数可缺省,默认值为torch.float16。
本项目支持使用CPU进行推理,可以在构建pipeline时传入参数device=‘cpu’;CPU模式下torch_dtype仅支持torch.float32。
本模型根据diffusers开源库构建,由Stability-AI从 stable-diffusion-2-base (512-base-ema.ckpt) 微调 200k steps。 并使用了LAMA中提出的掩码生成策略。请参考模型来源。
本算法模型源自一些开源项目:
如果你觉得这个模型对你有所帮助,请考虑引用下面的相关论文:
@misc{rombach2021highresolution,
title={High-Resolution Image Synthesis with Latent Diffusion Models},
author={Robin Rombach and Andreas Blattmann and Dominik Lorenz and Patrick Esser and Björn Ommer},
year={2021},
eprint={2112.10752},
archivePrefix={arXiv},
primaryClass={cs.CV}
}