开源最强AI一键抠图一键去背景模型RMBG-1.4

大恩子 2024-08-13 15:31:03 阅读 55

目录

前言训练数据图像分布定性评估

应用场景安装用法

前言

RMBG v1.4 是BRIA AI最先进的背景去除模型,旨在有效地将各种类别和图像类型的前景与背景分开。该模型已在精心选择的数据集上进行训练,其中包括:一般库存图片、电子商务、游戏和广告内容,使其适用于大规模企业内容创建的商业用例。其准确性、效率和多功能性目前可与领先的源可用模型相媲美。它是内容安全、合法许可的数据集和偏见缓解至关重要的理想选择。

在这里插入图片描述

训练数据

Bria-RMBG 模型经过了 12,000 多张高质量、高分辨率、手动标记(像素级准确度)、完全授权的图像的训练。我们的基准包括均衡的性别、均衡的种族以及不同类型的残疾人。为清晰起见,我们根据不同的类别提供了数据分布,以展示我们模型的多功能性。

图像分布

类别 分配
仅限对象 45.11%
携带物品/动物的人 25.24%
仅限人员 17.35%
带有文字的人/物体/动物 8.52%
纯文本 2.52%
仅限动物 1.89%
类别 分配
真实感 87.70%
非真实感 12.30%
类别 分配
非纯色背景 52.05%
纯色背景 47.95%
类别 分配
单个主要前景对象 51.42%
前景中有多个物体 48.58%

定性评估

在这里插入图片描述

应用场景

以下是一些主要的应用场景:

电子商务

产品展示:在线商店需要高质量的产品图片来吸引顾客。去背景技术可以快速创建专业的产品照片,使产品在白色或自定义背景上显得更加突出。广告和促销:用于创建广告素材,去除杂乱背景,突出产品或服务。

社交媒体和内容创作

个人和品牌形象:内容创作者和网红可以使用去背景技术创建更专业的图像,用于社交媒体平台的个人资料照片、封面图片和帖子。视频制作:用于虚拟背景的更换,使视频看起来更专业。

平面设计

海报和传单:设计师可以快速去除图片背景,以便将主体融入到各种设计项目中,如海报、传单和横幅。图标和标志设计:创建透明背景的图标和标志,便于在不同背景上使用。

虚拟试衣间

服装和配饰:在线时尚零售商可以利用去背景技术展示服装和配饰,帮助顾客更好地进行虚拟试穿和搭配。

教育和培训

教学资料:制作教学幻灯片和其他教育材料时,去除背景可以帮助突出重要的图像内容。在线课程:讲师可以使用去背景技术创建更专业的视频课程内容。

市场营销和广告

品牌推广:用于创建清晰、吸引人的广告素材,帮助品牌更好地进行推广。内容个性化:根据不同的营销活动,快速更换背景以适应不同的主题和场景。

人力资源

员工证件照:公司可以快速制作员工的专业证件照,用于员工卡、内网个人资料等。

游戏和娱乐

角色和场景制作:游戏开发者可以更容易地创建角色和场景,去除多余背景以便更好地整合到游戏环境中。虚拟现实和增强现实:去背景技术在AR和VR中应用广泛,可以实现更逼真的交互体验。

摄影和视频编辑

照片修图:摄影师可以使用去背景技术快速去除照片中的杂乱背景,使主体更突出。视频特效:视频编辑可以利用去背景技术添加特效或更换背景。

这些应用场景展示了AI扣图去背景技术的多功能性和重要性,帮助各行各业提高效率,提升视觉效果。

安装

<code>pip install -qr https://huggingface.co/briaai/RMBG-1.4/resolve/main/requirements.txt

用法

加载管道

from transformers import pipeline

image_path = "https://farm5.staticflickr.com/4007/4322154488_997e69e4cf_z.jpg"

pipe = pipeline("image-segmentation", model="briaai/RMBG-1.4", trust_remote_code=True)

pillow_mask = pipe(image_path, return_mask = True) # outputs a pillow mask

pillow_image = pipe(image_path) # applies mask on input and returns a pillow image

或者加载模型

from transformers import AutoModelForImageSegmentation

from torchvision.transforms.functional import normalize

model = AutoModelForImageSegmentation.from_pretrained("briaai/RMBG-1.4",trust_remote_code=True)

def preprocess_image(im: np.ndarray, model_input_size: list) -> torch.Tensor:

if len(im.shape) < 3:

im = im[:, :, np.newaxis]

# orig_im_size=im.shape[0:2]

im_tensor = torch.tensor(im, dtype=torch.float32).permute(2,0,1)

im_tensor = F.interpolate(torch.unsqueeze(im_tensor,0), size=model_input_size, mode='bilinear')code>

image = torch.divide(im_tensor,255.0)

image = normalize(image,[0.5,0.5,0.5],[1.0,1.0,1.0])

return image

def postprocess_image(result: torch.Tensor, im_size: list)-> np.ndarray:

result = torch.squeeze(F.interpolate(result, size=im_size, mode='bilinear') ,0)code>

ma = torch.max(result)

mi = torch.min(result)

result = (result-mi)/(ma-mi)

im_array = (result*255).permute(1,2,0).cpu().data.numpy().astype(np.uint8)

im_array = np.squeeze(im_array)

return im_array

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

model.to(device)

# prepare input

image_path = "https://farm5.staticflickr.com/4007/4322154488_997e69e4cf_z.jpg"

orig_im = io.imread(image_path)

orig_im_size = orig_im.shape[0:2]

image = preprocess_image(orig_im, model_input_size).to(device)

# inference

result=model(image)

# post process

result_image = postprocess_image(result[0][0], orig_im_size)

# save result

pil_im = Image.fromarray(result_image)

no_bg_image = Image.new("RGBA", pil_im.size, (0,0,0,0))

orig_image = Image.open(image_path)

no_bg_image.paste(orig_image, mask=pil_im)



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。