rembg 是一個圖片背景移除工具,可以作為命令列工具、Python 函式庫、HTTP 服務或 Docker 容器使用。它的定位很直接:輸入一張圖,輸出帶透明通道的前景圖,適合產品圖、頭像、素材批次處理和自動化圖片處理流程。
這類工具最大的好處是可以本地跑。對於不想把原圖上傳到線上去背服務、需要批次處理圖片,或者想把背景移除接進腳本和業務系統的人來說,rembg 比網頁工具更容易自動化。
01 安裝方式
目前版本要求 Python >=3.11,<3.14。安裝時需要按硬體選擇後端:
|
|
如果需要命令列工具,加上 cli:
|
|
NVIDIA CUDA 環境可以安裝 GPU 版本:
|
|
AMD ROCm 環境則需要先按 ROCm 官方方式裝好 onnxruntime-rocm,再安裝:
|
|
GPU 版本的坑通常不在 rembg 本身,而在 onnxruntime-gpu、CUDA、cuDNN 和驅動版本是否匹配。裝不起來時,先用 CPU 版本確認流程可用,再處理 GPU 環境,會少走很多彎路。
02 CLI 子命令
安裝 CLI 後,終端機裡可以直接使用 rembg。它主要有 4 個子命令:
i:處理單個檔案。p:處理整個資料夾。s:啟動 HTTP 服務。b:處理 RGB24 像素二進位流,常用於配合 FFmpeg。
查看說明:
|
|
處理單張本地圖片:
|
|
從遠端圖片管道輸入:
|
|
指定模型:
|
|
只輸出 mask:
|
|
開啟 alpha matting:
|
|
-a 對頭髮、毛邊、半透明邊緣有時更自然,但速度會慢一些,也不是所有圖片都能明顯改善。
03 批次處理資料夾
批次處理是 rembg 很實用的地方。把原圖放到一個目錄,輸出到另一個目錄:
|
|
監聽目錄變化,自動處理新增或修改的圖片:
|
|
這個模式適合和下載腳本、商品圖整理、素材資料夾配合使用。比如把待處理圖片丟進 input,由 rembg 自動產生透明 PNG 到 output。
04 作為 Python 函式庫呼叫
如果要接入自己的腳本,最簡單的方式是用 remove:
|
|
也可以直接處理 PIL 圖片:
|
|
批次處理時建議複用 session,避免每張圖片都重新初始化模型:
|
|
如果你要做一個長期執行的圖片處理服務,session 複用比反覆呼叫命令列更合適。
05 啟動 HTTP 服務
rembg 也可以直接啟動 HTTP 服務:
|
|
啟動後可以存取:
|
|
透過 URL 移除背景:
|
|
上傳本地圖片:
|
|
如果只需要 API,不需要 Gradio UI,可以關閉 UI 以降低空閒 CPU 佔用:
|
|
服務模式適合給內網工具、自動化流程或其他應用呼叫。但它不是完整的圖片資產管理系統,鑑權、限流、佇列、檔案清理這些仍然需要自己在外層補。
06 Docker 執行
CPU 版本可以直接用官方映像:
|
|
CUDA 加速需要主機安裝 NVIDIA Container Toolkit,並且通常需要自己基於專案裡的 Dockerfile_nvidia_cuda_cudnn_gpu 建構映像:
|
|
執行範例:
|
|
官方 README 提醒,GPU 映像體積會明顯大於 CPU 映像,而且模型檔案不包含在映像裡。為了避免重複下載模型,可以把模型目錄掛載出來:
|
|
07 模型選擇
rembg 首次使用模型時,會自動下載到 ~/.u2net/。常見模型包括:
u2net:通用模型,適合一般場景。u2netp:輕量版本,速度和體積更友好。u2net_human_seg:偏人物分割。u2net_cloth_seg:偏服裝解析。silueta:類似u2net,但體積更小。isnet-general-use:通用場景的新模型。isnet-anime:偏動漫角色分割。birefnet-general:README 範例中用於通用圖片的模型。sam:可配合提示點等額外參數使用。
實際使用時,不建議只看模型名字。產品圖、人物、二次元圖、複雜背景、透明物體,對模型的要求都不一樣。比較穩的做法是選一批代表性圖片,用幾個模型跑一輪,看邊緣、漏摳、誤摳和速度,再決定預設模型。
如果要使用自訂 .onnx 模型,可以把檔案放到預設模型目錄 ~/.u2net/,並在需要時設定:
|
|
這樣可以避免 rembg 因校驗邏輯覆蓋你放進去的模型檔案。
08 適合哪些場景
rembg 很適合這些任務:
- 批次產生透明背景產品圖。
- 給頭像、證件照、素材圖做前景提取。
- 把去背接入 Python 腳本或後端服務。
- 在內網部署一個簡單的背景移除 API。
- 用 FFmpeg 管道處理影片幀或序列幀。
- 對隱私或素材版權敏感,不想上傳到第三方線上服務。
它不太適合這些情況:
- 需要人工級精修邊緣和複雜透明材質。
- 對每張圖都要穩定商業攝影級品質。
- 想要完整線上設計工具,而不是去背能力。
- 沒有 Python / Docker 環境維護能力。
- GPU 驅動、CUDA、ROCm 環境已經很混亂,又急著上線。
09 使用建議
如果只是偶爾處理圖片,CPU 版本就夠了:
|
|
如果要批次處理幾千張圖,優先考慮:
- 複用 Python session。
- 固定模型目錄,避免重複下載。
- 用 SSD 存放輸入輸出和模型檔案。
- 先小批次測試模型效果。
- 再決定是否折騰 GPU 加速。
GPU 的價值主要在批次吞吐。單張圖片偶爾處理時,環境安裝成本可能比省下的時間更貴。尤其是 Windows、CUDA、cuDNN、onnxruntime-gpu 版本不匹配時,CPU 版本反而更省心。
10 簡短判斷
rembg 的優點是簡單、開源、形態靈活:命令列能跑,Python 能接,HTTP 能調,Docker 能封裝。它很適合做「本地自動去背」的基礎元件。
但它不是魔法橡皮擦。背景複雜、主體邊緣細碎、透明材質、陰影保留、商業級精修,都可能需要人工或更專門的流程補充。把它放在批次自動化裡時,最好預留人工複檢或失敗樣本回收機制。
如果目標是快速給一批圖片去背景,並且希望流程留在本地,rembg 值得放進工具箱。
相關連結
- GitHub 專案:https://github.com/danielgatis/rembg
- README:https://github.com/danielgatis/rembg/blob/main/README.md
- Releases:https://github.com/danielgatis/rembg/releases
- ONNX Runtime 安裝矩陣:https://onnxruntime.ai/