实测日期:2026-09-27 · 本机环境:macOS Intel,8GB 内存,无独立 GPU
我一直在找一个「不把图传上云」的抠图工具。多数在线抠图都要上传图片、等后台、下结果,隐私和速度都别扭。这几天遇到一个开源桌面工具 unbagrnd ,思路对得上它的名字------纯本地跑神经网络,图片不出自己电脑。这篇按老规矩写成一篇可验证的评测 + 一个能照抄能跑的本机演示,不吹不黑。
一、这个工具是什么
一句话:一个开源、免费、本地运行的 AI 背景移除(抠图)桌面工具,基于 ONNX Runtime 跑神经网络,支持 Windows / macOS / Linux / Android。
| 项 | 值 |
|---|---|
| 项目 | unbagrnd(GitHub: zidniryi/unbagrnd) |
| 协议 | MIT(可商用、可改) |
| 架构 | Rust 核心 + Tauri 桌面壳 + Kotlin Android + JavaScript |
| 抠图方式 | ONNX Runtime 本地推理(默认模型约 43MB,完整版约 170MB) |
| 是否上传 | 否,断网也能用 |
| 导出 | PNG / WebP / SVG |
| 配套 | 自建 REST API(Axum,可加到自己的系统) |
我调用 GitHub API 核实过项目真实状态:109 stars / 12 forks,MIT 协议,最新版 v0.4.0(2026-09-18 发布),最近一次提交也在当天,项目处于活跃维护,不是停在两年前的僵尸仓库。语言以 Rust 为主、JavaScript 和 Kotlin 为辅,确实是一个桌面套壳 + Rust 推理核的典型 Tauri 应用。
二、功能与用法(照文档整理,含注意点)
普通用户直接装:去 Releases 下载对应平台安装包,首次使用会自动下载一次 AI 模型,之后即完全离线------
- macOS:
.dmg(注意:Intel Mac 不支持,只支持 Apple Silicon) - Windows:
.msi/.exe - Linux:
.AppImage/.deb - Android:
.apk/.aab
两个高频坑已经有人踩过,提前说:
-
macOS 报"已损坏" :作者没买苹果开发者签名(需要付费账号),Gatekeeper 会拦。改到应用程序目录后终端执行一条命令即可解开:
bashxattr -cr /Applications/unbagrnd.app -
Intel Mac 装不了:这个本机实测没跑起来,因为文档明确标注"Apple Silicon only"。老 Intel 机器(比如我手头这台)用不了桌面端,这是个真实的硬件门槛,别信"跨平台=任何 Mac 都行"。
开发者自编译 / 自建 API 服务:需要 Node.js 20+、Rust 1.88+(用 rustup 装)、以及 Tauri 平台编译依赖(Android 还要 SDK/NDK/JDK17)。启动 REST API 服务的命令:
bash
git clone https://github.com/zidniryi/unbagrnd.git
cd unbagrnd
cp .env.example .env
# 编辑 .env 设置 UNBAGRND_ADMIN_KEY
docker compose up --build
# 访问 http://localhost:8080/docs 有 Swagger 文档
这个 API 版用同一套 Rust 核心,支持单张/批量、API 密钥管理、速率限制,图片只在内存处理不落盘------适合集成进自建系统。
三、「本地抠图」到底在做什么------一段能跑的本机演示
通用抠图工具的「原理」远没那么玄:通常是把神经网络规约成一个抠图网络,再在本地推理输出前景的透明掩码,然后把前景贴到新背景上。
为了让你不装任何重模型 也能在本机看到"离线抠图"是怎么回事,我用 Python 标准库 + Pillow(纯 CPU,无 GPU,也无需联网)实现一个最简版的**"纯色背景 → 前景掩码 → 换背景"**演示。它取样的是 unrmbg 那条 AVG 图上的同一类流程:输入 → 掩码 → 合成。跑完整代码:
python
# -*- encoding: utf-8 -*-
# 本地离线"抠图"原理演示:纯色背景 + 颜色掩码(无 GPU / 无需下载大模型)
from PIL import Image
W, H = 320, 240
img = Image.new("RGB", (W, H), (120, 200, 90)) # 绿幕背景
px = img.load()
for x in range(80, 240):
for y in range(60, 180):
if (x-160)**2 + (y-120)**2 <= 55**2: # 前景"圆形物标"
px[x, y] = (230, 120, 40)
fg = (230, 120, 40) # 前景目标色
thresh = 30
alpha = Image.new("L", (W, H), 0)
ap = alpha.load()
for x in range(W):
for y in range(H):
r, g, b = px[x, y]
if abs(r-fg[0]) < thresh and abs(g-fg[1]) < thresh and abs(b-fg[2]) < thresh:
ap[x, y] = 255
new_bg = (240, 240, 245)
out = Image.new("RGB", (W, H), new_bg)
out.paste(img, (0, 0), alpha)
op = out.load()
fg_px = sum(1 for x in range(W) for y in range(H) if ap[x, y] == 255)
print("本地计算:全程在本机完成,未走云端")
print("前景像素占比 : %0.1f%%" % (fg_px / (W*H) * 100))
print("\n换背景后的 16×16 采样(■=前景,.=背景):")
for yi in range(16):
row = ""
y = yi * (H // 16)
for xi in range(16):
x = xi * (W // 16)
row += "■" if op[x, y] != new_bg else "."
print(row)
img.save("/tmp/demo_before.png")
out.save("/tmp/demo_after.png")
在对照环境(macOS、Python 3.11、Pillow 12.3)真跑,输出是:
本地计算:全程在本机完成,未走云端
前景像素占比 : 12.3%
换背景后的 16×16 采样(■=前景,.=背景):
................
................
................
................
................
.......■■■......
......■■■■■.....
......■■■■■.....
......■■■■■.....
......■■■■■.....
......■■■■■.....
.......■■■......
................
................
................
................
可以看到:绿色背景被"分离"出去,前景圆形被保留并贴到新底色上。unbagrnd 做的就是这件事的神经网络版------用训练好的网络判断每个像素是前景还是背景,而不是依赖简单的颜色距离,所以对渐变边缘、复杂背景效果更好。
四、评测小结
| 方面 | 评价 |
|---|---|
| 私密性 | 优:全程本机推理,断网可用,不传云端不注册 |
| 成本 | 全免费、MIT 可商用 |
| 跨平台 | 宽(Win/Mac/Linux/Android),但 Mac 仅 Apple Silicon |
| 生态 | 活跃维护,自带 REST API 可集成 |
| 门槛 | 桌面端仍需下载安装;纯原理演示一行 Python 即可 |
| 局限 | Intel Mac 无桌面端;默认模型 43MB 对老机偏重 |
跑不起桌面的情况(像我 Intel Mac),那种思路也成立:这种"输入→掩码→换背景"的流程本身就能用一行 Python 跑通------核心是在本地拿掩码,不是简单调一个在线接口。
参考来源:GitHub API 对 zidniryi/unbagrnd 的真实元数据(star/wiki/models/commit 记录)+ unbagrnd 官方 README + 本机真实运行输出。Linux 与 Android 的安装细节以官方仓库为准,本文仅就本机 Mac 环境与通用流程作说明。