今天和大家分享一款名为 BEN2 的工具,它能快速移除图像和视频中的背景,并提取前景,给需要图像处理的朋友们提供了极大的便利。
🚀 快速阅读
BEN2 是一款深度学习模型,专门用于从图像和视频中快速移除背景并提取前景,能够精准处理复杂背景,尤其是细节丰富的图像。
- 核心功能:自动移除背景,生成高质量前景图像,适用于各种背景复杂的图像。
- 技术原理:基于置信度引导抠图(CGM)管道,结合精细化网络优化边缘处理。
BEN2 是什么

BEN2(Background Erase Network 2)是由 Prama LLC 开发的深度学习模型,旨在高效从图像和视频中移除背景,提取清晰的前景。通过创新的置信度引导抠图(CGM)技术,BEN2 精准处理复杂区域(如头发、透明物体的边缘),能生成高质量的前景图像。
BEN2 在大规模数据集上训练,能够处理高分辨率图像(如 4K 图像),支持 GPU 加速,确保在 1080p 图像上处理速度仅需 6 秒,4K 图像约 20 秒,适合高效图像处理需求。
BEN2 的主要功能
- 背景移除与前景分割:自动移除图像和视频背景,生成精确的前景图像,特别适合复杂背景和细节丰富的图像。
- 高分辨率支持:能够处理 4K 图像,确保图像分割效果清晰。
- 精细化边缘处理:处理细节区域(如头发和物体边缘),提高图像分割的精度。
- 视频分割:BEN2 支持视频帧的前景提取,适合视频编辑。
- 简易 API 与易用性:提供简单易用的 API,方便集成到各种应用中。
- 批量图像处理:适合需要同时处理多个图像的场景。
BEN2 的技术原理
- 置信度引导抠图(CGM):模型先对图像进行初步分割,生成初步前景掩码,通过置信度图评估每个像素的分割信心度,低置信度像素通过精细化网络进一步优化。
- 精细化网络:处理复杂边缘区域,像头发丝、透明物体的边缘等,结合多尺度特征提升边缘处理精度。
- 深度学习架构:BEN2 在 DIS5k 和 Prama LLC 的 22K 专有数据集上训练,采用高效的编码器-解码器架构,确保在高分辨率图像处理中的高效性。
- GPU 加速与 CUDA 支持:支持 GPU 加速,图像处理速度大幅提升,1080p 图像处理时间为 6 秒,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")
:加载预训练的 BEN2 模型。model.inference(image)
:对图像进行推理,生成前景图像。
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\")
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)。
资源
- GitHub 仓库:https://github.com/PramaLLC/BEN2/
- HuggingFace 仓库:https://huggingface.co/PramaLLC/BEN2
- 在线使用:https://backgrounderase.net/home
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!