在视觉模型中,图片去背景和图片去人物是两个不同的模型,本文将在本地运行两个模型进行图片处理。相比于 LLM 大语言模型,视觉模型参数小很多,对 GPU 要求不高。
去背景
去背景模型采用 cv_unet_image-matting 模型,抠图的效果还是不错的。详情可以移步至模型说明。
import cv2
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from modelscope.outputs import OutputKeys
portrait_matting = pipeline(Tasks.portrait_matting,model='damo/cv_unet_image-matting')
result = portrait_matting('https://modelscope.oss-cn-beijing.aliyuncs.com/demo/image-matting/1.png')
cv2.imwrite('result.png', result[OutputKeys.OUTPUT_IMG])
去人物
任务采用 cv_fft_inpainting_lama 模型,这种填充模型感觉效果一般,明显能看到改过的痕迹,不知是否因为我看到过原图的原因。详情可以移步至模型说明。
input_location = 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/image_inpainting/image_inpainting.png'
input_mask_location = 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/image_inpainting/image_inpainting_mask.png'
input = {
'img':input_location,
'mask':input_mask_location,
}
inpainting = pipeline(Tasks.image_inpainting, model='damo/cv_fft_inpainting_lama', refine=True)
result = inpainting(input)
vis_img = result[OutputKeys.OUTPUT_IMG]
总结
图片模型参数量小,对显卡要求不高,如果图片精度不高可以采用 CPU 进行推理。抠图相对好一些,填充差一些,如果单色背景能好些,如果北京色彩复杂,明显能看到改过的痕迹。