资讯动态

一键移除图片背景:用 rembg 三行代码拿到透明底图

发布时间:2026/9/24 17:20:53 来源:尧图企业网站定制
一键移除图片背景用 rembg 三行代码拿到透明底图【免费下载链接】rembgRembg is a tool to remove images background项目地址: https://gitcode.com/GitHub_Trending/re/rembg一张图手动抠 15 分钟1000 张怎么消化rembg 就是为此准备的 Python 背景移除工具。输入一张图它自己找主体、自己出掩码、自己合成最后给你一张透明底 PNG。模型加载、边缘处理、底色合成全链路自动。你只做两件事选模型、调参数。Python 库、CLI、HTTP 服务、Docker 四种姿势都有。为什么选 rembg 做背景移除它省掉的是整条抠图流水线。不用手写掩码不用自己叠 alpha不用手动垫底色。适合谁电商商品图批量换底、证件照改底色、素材库整理一切需要主体透明层的活儿。产出很明确一张 PNG。主体留下背景透明叠到任何底上都不费劲。仓库自带对比素材先看一张动物原图同一张图跑完后的透明底结果抠图核心逻辑在 rembg/bg.py各模型会话实现在 rembg/sessions/。安装并跑通第一张透明图Python 要 3.11 及以上。没有独显就装 CPU 版pip install rembg[cpu,cli]有 NVIDIA 显卡就装 GPU 版需要 CUDA 和 cudnn-develpip install rembg[gpu,cli]系统是否支持 onnxruntime-gpu可以对照仓库里这张兼容表装完写三行代码from rembg import remove from PIL import Image img Image.open(examples/car-2.jpg) out remove(img) out.save(car-2.out.png)跑完目录里多出 car-2.out.png主体完整背景没了。默认模型是 bria-rmbg想换就在后面几节里看怎么选。整个文件夹批量处理每张商品图出对应 PNG几百张商品图一次跑完关键就一条模型只加载一次。session 建一次循环里反复传from pathlib import Path from rembg import remove, new_session session new_session(u2net) src, dst Path(input_dir), Path(output_dir) dst.mkdir(exist_okTrue) for p in src.glob(*.jpg): out remove(p.read_bytes(), sessionsession) (dst / (p.stem .png)).write_bytes(out)注意 remove 传 bytes 会返回 bytes直接落盘最省事。跑完 output_dir 里每个输入对应一张 PNG文件名一一对应。不想写代码CLI 一行也行rembg p input_dir output_dir -m u2net加-w进入监听模式新图丢进去就自动处理实现见 rembg/commands/p_command.py。证件照换底色bgcolor 一次出片改底色的需求很常见红底、蓝底、白底。bgcolor参数在 remove 内部做完抠图合成不用自己 alpha_compositefrom rembg import remove, new_session from PIL import Image session new_session(birefnet-portrait) img Image.open(photo.jpg) out remove(img, sessionsession, bgcolor(255, 255, 255, 255)) out.save(photo-white.png)白底传 (255, 255, 255, 255)蓝底传 (67, 142, 219, 255)。合成逻辑在 rembg/bg.py 的 apply_background_color 里。如果只想要前景轮廓、不要图mask remove(img, only_maskTrue)白前景黑背景的灰度掩码方便二次编辑。毛发精修alpha matting 三个参数宠物毛发、发丝是半透明的普通掩码切出来是硬边。打开 alpha matting由 pymatting 估算软边缘out remove(img, alpha_mattingTrue, alpha_matting_foreground_threshold240, alpha_matting_background_threshold10, alpha_matting_erode_size10)参数都是人话foreground_threshold 默认 240掩码值高于它才算前景background_threshold 默认 10低于它算背景erode_size 默认 10trimap 腐蚀尺寸越大边缘越保守代价是明显变慢。只给需要精修的图开别全局默认。按主体选模型选对了精度直接翻倍默认模型能干活但专用模型效果差距肉眼可见。模型适用说明u2net通用精度和速度平衡u2netp / silueta大批量43MB 级速度快birefnet-portrait人像发丝细节好isnet-anime动漫针对二次元角色birefnet-general高精度通用精度优先选它birefnet-general-lite大图轻量版省内存sam任意主体支持点提示交互分割切换只改一个字符串session new_session(birefnet-portrait) out remove(img, sessionsession)仓库里的动漫样例可以直观对比原图isnet-anime 模型的抠图结果SAM 还能点指定位置分割。参数名必须是sam_prompt写错就静默不生效out remove(img, sam_prompt[{type: point, data: [724, 740], label: 1}])提速与工程化六条实战技巧会话复用new_session()只建一次循环里传session。加载模型是最慢的一步别每张图重复。实现在 rembg/session_factory.py。线程控制设环境变量OMP_NUM_THREADS8。防止 ONNX Runtime 抢满所有核多进程部署时尤其重要。模型目录默认在~/.u2net/用U2NET_HOME可以指到共享盘。多台机器不用各自下载一遍。模型预下载rembg d -m u2net提前把模型拉下来。离线环境不会在首跑时卡住。服务化rembg s --port 7000起 HTTP 服务默认监听 0.0.0.0。别的系统直接发请求不用装模型。见 rembg/commands/s_command.py。视频流ffmpeg ... | rembg b 1280 720 -o out-%03u.png逐帧处理。见 rembg/commands/b_command.py。Docker 部署Dockerfile 配 docker-compose.yml。环境一致依赖不炸。排错速查五个高频问题import 能过一调用就报缺 onnxruntime原因只装了裸rembg没带推理后端。 解法改装rembg[cpu,cli]或rembg[gpu,cli]。装了 GPU 版却还走 CPU速度没变化原因缺 CUDA 或 cudnn-devel。 解法nvidia-smi确认驱动补装cudnn-devel。搞不定就退回 CPU 版先保交付。首次运行卡住很久像死了原因正在往~/.u2net自动下载模型。 解法看终端进度条等它下完离线环境按 README.md 里的链接手动放文件。SAM 点提示完全没反应原因参数名写错了。 解法用sam_prompt格式[{type: point, data: [x, y], label: 1}]见 rembg/sessions/sam.py。大图一抠就内存爆原因onnxruntime 一次性推理大尺寸。 解法换u2netp或birefnet-general-lite或者先把长边缩到 2048 再抠。立即上手30 秒出第一张透明图装好之后敲一行就行rembg i examples/car-2.jpg out.pngout.png 出来背景已经没了。批量流程、模型选择、参数细节继续看CLI 与库完整用法README.md、USAGE.md抠图核心逻辑rembg/bg.py模型会话实现rembg/sessions/单图命令参数rembg/commands/i_command.py【免费下载链接】rembgRembg is a tool to remove images background项目地址: https://gitcode.com/GitHub_Trending/re/rembg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价