使用RMBG-1.4进行抠图(背景移除)

使用RMBG-1.4进行抠图(背景移除)

说明:

  • 首次发表日期:2024-08-28
  • RMBG-1.4 Hugging Face 地址: https://huggingface.co/briaai/RMBG-1.4

准备工作

创建环境并安装依赖::

# 如果`~/.local/lib/python3.10/site-packages`里面存在python模块,需要禁用。
## 可以直接删除该文件夹,或者:
## 参考:https://stackoverflow.com/questions/62352699/conda-uses-local-packages
export PYTHONUSERBASE=intentionally-disabledconda create -n rmbg python=3.10
conda activate rmbg
pip install torch==2.3.1 torchvision==0.18.1 --index-url https://download.pytorch.org/whl/cu121# 官方文档为:pip install -qr https://huggingface.co/briaai/RMBG-1.4/resolve/main/requirements.txt 
pip install pillow numpy typing scikit-image huggingface_hub transformers>=4.39.1

下载模型权重:

export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download --resume-download briaai/RMBG-1.4

运行推理

下图为将会使用的图片:

先导入可能用到的模块

from PIL import Image
import torch
from skimage import io
import torch.nn.functional as F
import numpy as np

使用transformers的pipeline子模块

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
pillow_mask

在这里插入图片描述

pillow_image

在这里插入图片描述

直接使用transformers推理

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')image = torch.divide(im_tensor,255.0)image = normalize(image,[0.5,0.5,0.5],[1.0,1.0,1.0])return imagedef postprocess_image(result: torch.Tensor, im_size: list)-> np.ndarray:result = torch.squeeze(F.interpolate(result, size=im_size, mode='bilinear') ,0)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_arraydevice = 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]
model_input_size = [1024,1024]
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)
pil_im

在这里插入图片描述

no_bg_image = Image.new("RGBA", pil_im.size, (0,0,0,0))
orig_image = Image.fromarray(orig_im)
# orig_image = Image.open(image_path)
no_bg_image.paste(orig_image, mask=pil_im)
no_bg_image

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/410583.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算实训37——Dockerfile的应用+私有仓库的创建与管理

一、文件联合系统 文件联合系统&#xff08;Overlay Filesystem&#xff09;&#xff1a; 是一种允许多个文件系统层叠在一起的文件系统。它通常用于将只读文件系统&#xff08;如基础镜像&#xff09;与可写文件系统&#xff08;如用户的修改&#xff09;结合&#xff0c;形…

IBM退出中国,LabVIEW未来走向何方?

IBM作为全球科技行业的领军企业之一&#xff0c;近日宣布退出中国市场的决定引起了广泛关注。IBM的退出不仅仅是企业战略的调整&#xff0c;还反映了全球经济和政治环境的变化。深入分析IBM退出中国的原因&#xff0c;并预测NI&#xff08;National Instruments&#xff09;未来…

Linux开发环境搭建,虚拟机安装

开发环境搭建 一、VMware Workstation Pro软件简介 VMware Workstation Pro 是 VMware &#xff08;威睿公司&#xff09;发布的一代虚拟机软件&#xff0c;中文名称一般称 为 "VMware 工作站 ". 它的主要功能是可以给用户在单一的桌面上同时运行不同的操作系统…

软件设计师全套备考系列文章15 -- 数据库:规范化、控制功能、大数据

软考-- 软件设计师&#xff08;15&#xff09;-- 数据库&#xff1a;规范化、控制功能、大数据 文章目录 软考-- 软件设计师&#xff08;15&#xff09;-- 数据库&#xff1a;规范化、控制功能、大数据前言一、章节考点二、规范化三、数据库的控制功能四、大数据、数据仓库 前言…

C#:WinForm界面优化常用的UI

大家好&#xff0c;今天要介绍一些不一样的。 在开发的过程中&#xff0c;大家绕不开的事情就是除了要满足用户的功能需求开发。还要对用户使用的软件界面做优化&#xff0c;提升用户的使用感受。 下面就是常用的一些UI&#xff1a; &#xff08;1&#xff09;第一个为HZH_C…

vue中使用原生的video播放flv和mp4格式的视频

安装 npm i flv.js html <div class"video"><videov-if"videoId"controls id"videoElement"preload"metadata"><source :type"video/${allData.videoType}" />您的浏览器不支持HTML5视频播放。</v…

数据结构(邓俊辉)学习笔记】优先级队列 08——左式堆:结构

文章目录 1. 第一印象2. 堆之合并3. 奇中求正4. NPL5. 左倾性6. 左展右敛 1. 第一印象 在学习过常规的完全二叉堆之后&#xff0c;我们再来学习优先级队列的另一变种&#xff0c;也就是左式堆。所谓的左式堆&#xff0c;也就是在拓扑形态上更加倾向于向左侧倾斜的一种堆&#…

嵌入式学习——ARM学习(1)

1、存储器 高速缓存&#xff08;Cache&#xff09;通常分为三级&#xff1a;L1、L2 和 L3。它们的主要功能和特点如下&#xff1a; 这三级缓存的设计旨在通过层次化存储来优化数据访问速度和处理器性能。 1、L1 缓存&#xff1a; 位置&#xff1a;直接集成在处理器核心内。 大小…

ios去水印软件免费版,精选五大高效工具,告别水印烦恼!

随着社交媒体的普及&#xff0c;越来越多的人喜欢在网络上分享自己的生活点滴。在分享视频时&#xff0c;水印往往会影响美观。为了帮助大家解决这个问题&#xff0c;本文为您推荐五大高效免费的iOS去水印软件&#xff0c;让您轻松告别水印烦恼&#xff01; 软件一&#xff1a…

​拼多多:这一刀 砍向了自己

到处砍一刀&#xff0c;砍赢淘宝、京东&#xff0c;称霸中国电商的—— 拼多多 竟然刀刃向内&#xff0c;砍了自己一刀&#xff1f; 营收增长86%&#xff0c;净利润增长了144%&#xff0c;上半年净利润600亿&#xff0c;半年赚了去年全年的利润。 拼多多交出一份足以傲视全球…

Iptables-快速上手

Iptables firewall 防火墙Iptables简述一、Iptables的四表五链1.filter表2.nat表3.raw表4. mangle表5.数据包的流通过程 二、快速上手1. 查看规则2. 规则详细3. 添加规则4. 自定义链 三、关于iptables和docker1. 背景2. 解决方案 firewall 防火墙 从逻辑上讲&#xff0c;可以分…

【LLM之Data】SKYSCRIPT-100M论文阅读笔记

研究背景 随着短视频和短剧的兴起&#xff0c;自动化的剧本生成和短剧制作在影视行业中的需求逐渐增加。传统的剧本生成过程需要大量的人工干预&#xff0c;限制了其在规模和效率上的扩展性。当前的大型语言模型&#xff08;LLM&#xff09;在剧本生成方面展现出一定潜力&…

K8S的持久化存储

文章目录 一、持久化存储emptyDir实际操作 hostPath建立过程 NFS存储NFS 存储的优点NFS 存储的缺点具体操作 pv和pvcPersistent Volume (PV)使用场景 Persistent Volume Claim (PVC)使用场景 使用 PV 和 PVC 的场景实际操作 StorageClassStorageClass 概述应用场景实际应用 一、…

CLIP微调方法总结

文章目录 前言1️⃣ Tip-Adapter论文和源码原理介绍 2️⃣Cross-modal Adaptation&#xff08;跨模态适应&#xff09;论文和源码原理介绍 3️⃣ FD-Align&#xff08;Feature Discrimination Alignment&#xff0c;特征判别对齐&#xff09;论文和源码原理介绍 总结 前言 本文…

USB3.2 摘录(11)

系列文章目录 USB3.2 摘录&#xff08;一&#xff09; USB3.2 摘录&#xff08;二&#xff09; USB3.2 摘录&#xff08;三&#xff09; USB3.2 摘录&#xff08;四&#xff09; USB3.2 摘录&#xff08;五&#xff09; USB3.2 摘录&#xff08;六&#xff09; USB3.2 摘录&…

IO进程day01(标准IO、缓存区)

目录 【1】标准IO 1》概念&#xff1a; 2》特点 【2】缓存区 1》全缓存&#xff1a;和文件相关 2》行缓存&#xff1a;和终端有关 3》不缓存&#xff1a;也就是没有缓存区&#xff0c;标准错误。 【1】标准IO 1》概念&#xff1a; 标准IO&#xff1a; 是在C库中定义的一…

C++ | Leetcode C++题解之第355题设计推特

题目&#xff1a; 题解&#xff1a; class Twitter {struct Node {// 哈希表存储关注人的 Idunordered_set<int> followee;// 用链表存储 tweetIdlist<int> tweet;};// getNewsFeed 检索的推文的上限以及 tweetId 的时间戳int recentMax, time;// tweetId 对应发送…

香港站群服务器优势

香港站群服务器因其独特的地理位置和网络连接优势&#xff0c;在SEO优化、网站群管理和网络营销等方面受到广泛关注。其优势主要体现在以下几个方面&#xff0c;rak小编为您整理发布。 地理位置优越 连接亚洲国际市场&#xff1a;香港作为亚太地区的重要经济中心&#xff0c;具…

代码随想录 刷题记录-18 动态规划(2)01背包问题、习题

一、01背包理论基础 例题&#xff1a;46. 携带研究材料 01 背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 暴力解法&#xff1a…

SpringBoot实现Word转PDF/TXT

背景 研发工作中难免会遇到一些奇奇怪怪的需求&#xff0c;就比如最近&#xff0c;客户提了个新需求&#xff1a;上传一个WORD文档&#xff0c;要求通过系统把该文档转换成PDF和TXT。客户的需求是没得商量的&#xff0c;必须实现&#xff01;承载着客户的期望&#xff0c;我开始…