# rembg 抠图教程：透明 PNG、耳机线与杯柄孔洞核对

用同一张原创耳机与杯子图片显式选择 u2netp，保存透明 PNG、独立 alpha 和细节检查记录。

本页 rembg/u2netp 已在 CPU 实际执行。本次杯柄孔洞去底，但耳机环线与末段有遗漏，保留失败区域。

## 逐步操作

### 1. 确认输入和需要保留的结构

打开 input.png。耳机线、杯柄内部与杯子之间的背景都要单独看；练习输入由 AI 生成，代表原创测试素材，不是商品实拍，也不是抠图结果。先运行 verify.py 核对输入尺寸与文件哈希。

```bash
python3 verify.py
```

### 2. 建立隔离环境并显式选择模型

使用 Python 3.11–3.13。本文固定 rembg 2.0.85；默认模型可能是另有商业许可的 BRIA RMBG，示例显式用 u2netp。工具代码许可和权重许可分别核对。模型首次使用需下载，后续推理可本地进行。

```bash
python3 -m venv .venv
.venv/bin/python -m pip install "rembg[cpu]==2.0.85" pillow
```

### 3. 运行单图并保留独立输出

run_cutout.py 复用明确的 CPUExecutionProvider，输出到 output/。不改 input.png；首次下载失败时先检查网络和权重来源，不能把空文件改成 .onnx 跳过校验。

```bash
.venv/bin/python run_cutout.py
```

### 4. 读取真正的 alpha 通道

PNG 扩展名不代表透明。检查 RGBA、与输入相同的画布、alpha 最小最大值，以及 0<alpha<255 的像素数。完整不透明或空白结果都应另记，而不是宣布抠图成功。

```bash
python3 verify.py --results output
```

### 5. 检查孔洞与细线，保留失败区

打开页面细节对照，把杯柄孔洞和耳机线放到同倍率。轻量 u2netp 可能漏细线、把杯柄孔洞填实或留有珊瑚色；这些是本输入实际需要验收的地方，不以输出有透明像素代替视觉质量。

### 6. 在深浅两种底色上检查

compose.py 只将实际 alpha 合成到两种确定底色，不再次生成主体。若出现碎边或错误的孔洞，保存该失败版本；模型调整应另起输出目录，保留原图可回退。

```bash
python3 compose.py output/cutout.png
```

### 7. 交付输入、模型名和检查记录

将 model、rembg_version、provider、源图 SHA256 和未通过区域一并保存。基础结构检查通过后，背景创作才进入独立步骤；本站创作工作台不托管这个本地 u2netp 服务。

```bash
python3 verify.py --results output
```

## 来源与边界

- [rembg v2.0.85：单图、模型选择与输出](https://github.com/danielgatis/rembg/blob/v2.0.85/README.md)
- [u2netp 会话与官方权重](https://github.com/danielgatis/rembg/blob/v2.0.85/rembg/sessions/u2netp.py)

素材：照片样式输入由 apizt 原创生成；几何商品、积木、文具、纹理、线稿和透明标尺由代码原创绘制。输入/标注/官方示例均不是未运行模型的输出。
官方代码/模型、第三方依赖各保留其独立许可；包内不含模型权重或API凭证。
