Birefnet Dynamic
模型简介
BiRefNet是一种基于双边参考的高分辨率二分图像分割模型,能够高效准确地执行背景去除、掩膜生成、伪装目标检测和显著目标检测等任务。
模型特点
高分辨率处理能力
能够处理高分辨率图像,保持细节精度
双边参考机制
采用双边参考架构,提高分割准确性
多任务支持
支持多种图像分割任务,包括背景去除、掩膜生成等
模型能力
背景去除
掩膜生成
二分图像分割
伪装目标检测
显著目标检测
使用案例
图像编辑
产品图片背景去除
用于电商产品图片的背景去除和替换
生成精确的产品轮廓掩膜
计算机视觉
目标检测预处理
作为目标检测系统的预处理步骤
提高后续目标检测的准确性
🚀 BiRefNet:高分辨率二分图像分割的双边参考模型
BiRefNet是一个用于高分辨率二分图像分割的模型,在背景去除、掩膜生成、二分图像分割、伪装目标检测和显著目标检测等任务中表现出色。本项目提供了模型的官方实现、代码、文档和模型库。
🚀 快速开始
安装依赖包
pip install -qr https://raw.githubusercontent.com/ZhengPeng7/BiRefNet/main/requirements.txt
加载BiRefNet模型
使用HuggingFace的代码和权重
# 加载带权重的BiRefNet模型
from transformers import AutoModelForImageSegmentation
birefnet = AutoModelForImageSegmentation.from_pretrained('ZhengPeng7/BiRefNet', trust_remote_code=True)
使用GitHub的代码和HuggingFace的权重
# 下载代码
git clone https://github.com/ZhengPeng7/BiRefNet.git
cd BiRefNet
# 本地使用代码
from models.birefnet import BiRefNet
# 从Hugging Face Models加载权重
birefnet = BiRefNet.from_pretrained('ZhengPeng7/BiRefNet')
使用GitHub的代码和本地的权重
# 本地使用代码和权重
import torch
from utils import check_state_dict
birefnet = BiRefNet(bb_pretrained=False)
state_dict = torch.load(PATH_TO_WEIGHT, map_location='cpu')
state_dict = check_state_dict(state_dict)
birefnet.load_state_dict(state_dict)
使用加载好的BiRefNet进行推理
# 导入必要的库
from PIL import Image
import matplotlib.pyplot as plt
import torch
from torchvision import transforms
from models.birefnet import BiRefNet
birefnet = ... # -- 需使用上述代码加载BiRefNet模型
torch.set_float32_matmul_precision(['high', 'highest'][0])
birefnet.to('cuda')
birefnet.eval()
birefnet.half()
def extract_object(birefnet, imagepath):
# 数据设置
image_size = (1024, 1024)
transform_image = transforms.Compose([
transforms.Resize(image_size),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
image = Image.open(imagepath)
input_images = transform_image(image).unsqueeze(0).to('cuda').half()
# 预测
with torch.no_grad():
preds = birefnet(input_images)[-1].sigmoid().cpu()
pred = preds[0].squeeze()
pred_pil = transforms.ToPILImage()(pred)
mask = pred_pil.resize(image.size)
image.putalpha(mask)
return image, mask
# 可视化
plt.axis("off")
plt.imshow(extract_object(birefnet, imagepath='PATH-TO-YOUR_IMAGE.jpg')[0])
plt.show()
本地使用推理端点
import requests
import base64
from io import BytesIO
from PIL import Image
YOUR_HF_TOKEN = 'xxx'
API_URL = "xxx"
headers = {
"Authorization": "Bearer {}".format(YOUR_HF_TOKEN)
}
def base64_to_bytes(base64_string):
# 如果存在数据URI前缀,则移除
if "data:image" in base64_string:
base64_string = base64_string.split(",")[1]
# 将Base64字符串解码为字节
image_bytes = base64.b64decode(base64_string)
return image_bytes
def bytes_to_base64(image_bytes):
# 创建一个BytesIO对象来处理图像数据
image_stream = BytesIO(image_bytes)
# 使用Pillow (PIL)打开图像
image = Image.open(image_stream)
return image
def query(payload):
response = requests.post(API_URL, headers=headers, json=payload)
return response.json()
output = query({
"inputs": "https://hips.hearstapps.com/hmg-prod/images/gettyimages-1229892983-square.jpg",
"parameters": {}
})
output_image = bytes_to_base64(base64_to_bytes(output))
output_image
✨ 主要特性
- 多任务支持:可用于背景去除、掩膜生成、二分图像分割、伪装目标检测和显著目标检测等多种任务。
- 高分辨率分割:能够实现高分辨率的二分图像分割。
- 多种使用方式:支持使用HuggingFace的代码和权重、GitHub的代码和HuggingFace的权重、GitHub的代码和本地的权重等多种方式加载模型。
📦 安装指南
安装依赖包
pip install -qr https://raw.githubusercontent.com/ZhengPeng7/BiRefNet/main/requirements.txt
💻 使用示例
基础用法
# 加载带权重的BiRefNet模型
from transformers import AutoModelForImageSegmentation
birefnet = AutoModelForImageSegmentation.from_pretrained('ZhengPeng7/BiRefNet', trust_remote_code=True)
高级用法
# 本地使用代码和权重
import torch
from utils import check_state_dict
birefnet = BiRefNet(bb_pretrained=False)
state_dict = torch.load(PATH_TO_WEIGHT, map_location='cpu')
state_dict = check_state_dict(state_dict)
birefnet.load_state_dict(state_dict)
📚 详细文档
本项目是论文 "Bilateral Reference for High-Resolution Dichotomous Image Segmentation" (CAAI AIR 2024) 的官方实现。更多详细信息请访问我们的GitHub仓库:https://github.com/ZhengPeng7/BiRefNet,包括代码、文档和模型库。
在线演示
🔧 技术细节
本项目的BiRefNet模型是用于标准二分图像分割(DIS)的,在 DIS-TR 上进行训练,并在 DIS-TEs和DIS-VD 上进行验证。该模型在三个任务(DIS、HRSOD和COD)上取得了SOTA性能。
📄 许可证
本项目采用MIT许可证。详情请见 LICENSE 文件。
致谢
- 感谢 @Freepik 慷慨提供GPU资源,用于训练更高分辨率的BiRefNet模型和进行更多探索。
- 感谢 @fal 慷慨提供GPU资源,用于训练更通用的BiRefNet模型。
- 感谢 @not-lain 帮助我们将BiRefNet模型更好地部署到HuggingFace上。
引用
@article{zheng2024birefnet,
title={Bilateral Reference for High-Resolution Dichotomous Image Segmentation},
author={Zheng, Peng and Gao, Dehong and Fan, Deng-Ping and Liu, Li and Laaksonen, Jorma and Ouyang, Wanli and Sebe, Nicu},
journal={CAAI Artificial Intelligence Research},
volume = {3},
pages = {9150038},
year={2024}
}
示例图片
DIS示例1 | DIS示例2 |
---|---|
作者信息
1 南开大学 2 西北工业大学 3 国防科技大学 4 阿尔托大学 5 上海人工智能实验室 6 特伦托大学
相关链接
Clipseg Rd64 Refined
Apache-2.0
CLIPSeg是一种基于文本与图像提示的图像分割模型,支持零样本和单样本图像分割任务。
图像分割
Transformers

C
CIDAS
10.0M
122
RMBG 1.4
其他
BRIA RMBG v1.4 是一款先进的背景移除模型,专为高效分离各类图像的前景与背景而设计,适用于非商业用途。
图像分割
Transformers

R
briaai
874.12k
1,771
RMBG 2.0
其他
BRIA AI开发的最新背景移除模型,能有效分离各类图像的前景与背景,适合大规模商业内容创作场景。
图像分割
Transformers

R
briaai
703.33k
741
Segformer B2 Clothes
MIT
基于ATR数据集微调的SegFormer模型,用于服装和人体分割
图像分割
Transformers

S
mattmdjaga
666.39k
410
Sam Vit Base
Apache-2.0
SAM是一个能够通过输入提示(如点或框)生成高质量对象掩码的视觉模型,支持零样本分割任务
图像分割
Transformers 其他

S
facebook
635.09k
137
Birefnet
MIT
BiRefNet是一个用于高分辨率二分图像分割的深度学习模型,通过双边参考网络实现精确的图像分割。
图像分割
Transformers

B
ZhengPeng7
626.54k
365
Segformer B1 Finetuned Ade 512 512
其他
SegFormer是一种基于Transformer的语义分割模型,在ADE20K数据集上进行了微调,适用于图像分割任务。
图像分割
Transformers

S
nvidia
560.79k
6
Sam Vit Large
Apache-2.0
SAM是一个能够通过输入提示点或边界框生成高质量物体掩膜的视觉模型,具备零样本迁移能力。
图像分割
Transformers 其他

S
facebook
455.43k
28
Face Parsing
基于nvidia/mit-b5微调的语义分割模型,用于面部解析任务
图像分割
Transformers 英语

F
jonathandinu
398.59k
157
Sam Vit Huge
Apache-2.0
SAM是一个能够根据输入提示生成高质量对象掩码的视觉模型,支持零样本迁移到新任务
图像分割
Transformers 其他

S
facebook
324.78k
163
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98