开源最强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)
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。