BEN2:一键快速抠图!自动移除图像和视频中的背景,支持在线使用

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
简介: BEN2 是由 Prama LLC 开发的深度学习模型,专注于从图像和视频中快速移除背景并提取前景,支持高分辨率处理和GPU加速。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


大家好,我是蚝油菜花,今天跟大家分享一下 BEN2 这个专门用于从图像和视频中快速移除背景并提取前景的深度学习模型。

🚀 快速阅读

BEN2 是一款专注于从图像和视频中快速移除背景并提取前景的深度学习模型。

  1. 核心功能:自动从图像和视频中移除背景,生成高质量的前景图像,特别适用于复杂背景和细节丰富的图像。
  2. 技术原理:基于置信度引导抠图(CGM)管道,结合精细化网络处理复杂区域,如头发和边缘。

BEN2 是什么

BEN2

BEN2(Background Erase Network 2)是由 Prama LLC 开发的深度学习模型,专为从图像和视频中快速移除背景并提取前景而设计。它基于创新的置信度引导抠图(CGM)管道,通过精细化网络处理复杂区域,如头发和边缘,实现高精度的前景分割。

BEN2 在大规模数据集上训练,擅长处理高分辨率图像(如4K),并且支持 GPU 加速,确保处理速度极快。1080p 图像仅需 6 秒,4K 图像约 20 秒,适用于需要高效处理多个图像的场景。

BEN2 的主要功能

  • 背景移除与前景分割:BEN2 能自动从图像和视频中移除背景,生成高质量的前景图像。通过创新的置信度引导抠图(CGM)管道,对复杂背景和细节丰富的图像(如头发、边缘等)进行高精度分割。
  • 高分辨率处理:支持 4K 图像处理,确保高分辨率图像的分割效果,适用于需要高精度和高质量图像处理的应用场景。
  • 边缘精细化:通过精细化网络处理边缘,提升分割精度,适用于需要精细边缘处理的图像,如产品照片、肖像等。
  • 视频分割:BEN2 可以对视频中的每一帧进行前景提取,适用于动态视频编辑。
  • 简单 API 与易用性:提供简洁的 API,方便集成到各种应用中。
  • 批量图像处理:适合需要高效处理多个图像的场景。

BEN2 的技术原理

  • 置信度引导抠图(CGM):基础模型首先对图像进行初步分割,生成一个初步的前景掩码。置信度映射(confidence map)用于评估每个像素的分割置信度。对于置信度较低的像素,精细化网络会进一步处理,以提高分割精度。
  • 精细化网络:精细化网络专注于处理复杂的边缘区域,例如头发丝和透明物体的边缘。通过多尺度特征融合和上下文信息,精细化网络能生成更自然、更精确的边缘。
  • 深度学习架构:BEN2 在 DIS5k 和 Prama LLC 的 22K 专有分割数据集上进行了训练,能适应多种复杂的背景和光照条件。模型采用高效的编码器-解码器架构,结合多尺度特征提取,确保在高分辨率图像(如 4K)上的高效处理。
  • GPU 加速与 CUDA 支持:BEN2 支持 CUDA 和 GPU 加速,能提升处理速度。部署的实例可以在 6 秒内完成 1080p 图像的抠图,4K 图像处理时间约为 20 秒。

如何运行 BEN2

BEN2 是一个用于前景分割的创新模型,基于 Confidence Guided Matting (CGM) 管道,能够通过精炼网络处理低置信度像素,从而生成更精确的抠图结果。本文将详细介绍如何安装和使用 BEN2,包括单张图像处理、批量图像处理和视频分割的代码示例。

1. 安装 BEN2

1.1 克隆仓库并安装依赖

首先,您需要克隆 BEN2 的 GitHub 仓库,并安装所需的依赖项。请按照以下步骤操作:

git clone https://github.com/PramaLLC/BEN2.git
cd BEN2
pip install -r requirements.txt

1.2 安装 BEN2 模型

您可以通过以下命令直接安装 BEN2 模型:

pip install git+https://github.com/PramaLLC/BEN2.git

2. 使用 BEN2 处理单张图像

2.1 导入必要的库

import torch
from ben2 import AutoModel
from PIL import Image

2.2 加载模型并进行推理

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# 打开图像
image = Image.open("image.jpg")  # 替换为您的图像路径

# 加载预训练模型
model = AutoModel.from_pretrained("PramaLLC/BEN2")
model.to(device).eval()

# 进行推理
foreground = model.inference(image)

# 保存前景图像
foreground.save("foreground.png")

2.3 代码解释

  • torch.device('cuda' if torch.cuda.is_available() else 'cpu'): 检查是否有可用的 GPU,如果有则使用 GPU,否则使用 CPU。
  • Image.open("image.jpg"): 打开输入图像,路径需要根据实际情况修改。
  • AutoModel.from_pretrained("PramaLLC/BEN2"): 从 Hugging Face 加载预训练的 BEN2 模型。
  • model.inference(image): 对输入图像进行推理,生成前景图像。
  • foreground.save("foreground.png"): 将生成的前景图像保存为 PNG 文件。

3. 批量图像处理

3.1 导入必要的库

import BEN2
from PIL import Image
import torch

3.2 初始化模型并加载权重

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# 初始化模型
model = BEN2.BEN_Base().to(device).eval()

# 加载模型权重
model.loadcheckpoints("./BEN2_Base.pth")

3.3 批量处理多张图像

# 打开多张图像
file1 = "./image1.png"  # 输入图像1
file2 = "./image2.png"  # 输入图像2
image1 = Image.open(file1)
image2 = Image.open(file2)

# 批量推理
foregrounds = model.inference([image1, image2])

# 保存结果
foregrounds[0].save("./foreground1.png")
foregrounds[1].save("./foreground2.png")

3.4 代码解释

  • model.inference([image1, image2]): 对多张图像进行批量推理,返回多个前景图像。
  • foregrounds[0].save("./foreground1.png"): 保存第 1 张图像的前景结果。
  • foregrounds[1].save("./foreground2.png"): 保存第 2 张图像的前景结果。

  • 提示: 对于消费级 GPU,建议批量大小不超过 3,因为更大的批量并不会显著提高推理速度。

4. 视频分割

4.1 安装 FFmpeg

在进行视频分割之前,您需要安装 FFmpeg。可以通过以下命令安装:

sudo apt update
sudo apt install ffmpeg

4.2 视频分割代码

import BEN2
from PIL import Image
import torch

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# 初始化模型
model = BEN2.BEN_Base().to(device).eval()

# 加载模型权重
model.loadcheckpoints("./BEN2_Base.pth")

# 视频分割
model.segment_video(
    video_path="/path_to_your_video.mp4",  # 输入视频路径
    output_path="./",  # 输出路径,默认为当前目录
    fps=0,  # 如果设置为 0,CV2 将自动检测原始视频的帧率
    refine_foreground=False,  # 是否启用前景精炼,默认为 False
    batch=1,  # 批量大小,默认为 1
    print_frames_processed=True,  # 是否打印处理的帧数,默认为 True
    webm=False,  # 是否输出 WebM 格式的视频,默认为 False
    rgb_value=(0, 255, 0)  # 如果不使用 WebM,背景颜色将为绿色,默认为 (0, 255, 0)
)

4.3 代码解释

  • video_path="/path_to_your_video.mp4": 指定输入视频的路径。
  • output_path="./": 指定输出视频的保存路径,默认为当前目录。
  • fps=0: 如果设置为 0,CV2 将自动检测原始视频的帧率。
  • refine_foreground=False: 是否启用前景精炼,默认为 False。启用后可以提高边缘的准确性,但会增加推理时间。
  • batch=1: 批量大小,默认为 1。对于消费级 GPU,建议不超过 3。
  • print_frames_processed=True: 是否打印处理的帧数,默认为 True。
  • webm=False: 是否输出 WebM 格式的视频,默认为 False。如果不使用 WebM,背景颜色将为绿色。
  • rgb_value=(0, 255, 0): 如果不使用 WebM,背景颜色将为绿色,默认为 (0, 255, 0)。

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
9月前
|
机器学习/深度学习 人工智能 数据安全/隐私保护
免费交互式大模型在线图像去除水印.擦除.替换和增强照片项目代码(免费在线图像修复工具)
免费交互式大模型在线图像去除水印.擦除.替换和增强照片项目代码(免费在线图像修复工具)
|
6月前
|
人工智能 移动开发 文字识别
视觉智能开放平台产品使用合集之如何对视频流进行实时分割背景,和替换背景
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
6月前
|
编解码 文字识别 算法
视觉智能开放平台产品使用合集之通用高清分割是否支持裁剪空白区域
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
8月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之分别用两张同一个人像的png图片,一个可以调用成功,一个提示参数有问题,是什么原因
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
6月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之怎么识别图像中的人脸数量和区域
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
46 1
|
8月前
|
存储 生物认证 API
视觉智能开放平台产品使用合集之只有一张原图,该如何设置输出图片的格式
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
8月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之如何实现对图片的自动抠图
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
9月前
|
消息中间件 JavaScript Java
MQ产品使用合集之视觉智能平台人脸搜索1:N怎么更新人脸数据
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
9月前
|
机器学习/深度学习 数据处理 API
视觉智能平台常见问题之通用图像打标位置报警告如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
视觉智能平台常见问题之通用图像打标位置报警告如何解决
|
9月前
|
机器学习/深度学习 监控 对象存储
视觉智能平台常见问题之人脸视频融和的mp4文件抽帧如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。

热门文章

最新文章