你手上有同一個角色的正面照、側面照與材質細節照,想把它們做成貼圖、商品卡或遊戲素材。第一張去背很漂亮,換到髮絲、馬鬃、柵欄或相近色背景,邊緣卻立刻露餡。這正是這篇 MultiMatte 本機教學要解決的問題:重點不只是一鍵輸出 PNG,而是建立一套每張圖都過得了關的驗收流程。
這篇專為第一次在本機跑影像模型的讀者寫。你會從環境安裝、文字選物、輸出 Alpha Matte(每個像素的透明度),一路做到單圖與多圖測試、黑白換底檢查和四欄盲評。本文不把官方精選圖當成你的答案;跑完後,你會得到一組可判斷是否能交付的輸出檔,也知道失敗究竟發生在哪一層。
先記住這條驗收式:可交付去背=選對主體 × 邊緣可信 × 換底不露餡 × Alpha 可編輯。四項是乘法,不是加分題:選錯人、髮絲硬切、舊背景滲色,或只剩不可修改的預覽圖,任何一項歸零都不算完成。
MultiMatte 本機教學先說結論:它是文字選物去背,不是角色生成器
⚡ 三句話版:
一、MultiMatte 接收既有圖片與短文字提示,輸出 RGBA 去背圖或連續透明度 Alpha Matte。
二、截至 2026 年 9 月 13 日,NoBg 0.3.1 公開介面的處理單位是單張圖片;批次模式只是把多張圖各自推論,不會把前一張當成後一張的角色參考。
三、本文建議的較保守做法,是固定版本與原圖,比較「預設主體」和「明確名詞」兩組結果,再用黑、白、飽和色三種背景驗邊。
Feyn 將 MultiMatte 描述為以 SAM 3 為基礎、可用文字指定主體的影像 matting 模型;目前的官方模型卡與 NoBg 0.3.1 原始碼展示的呼叫形狀都是 圖片+可選文字/框選座標 → cutout 或 alpha。因此,如果你準備了多張同一角色照片,正確做法是把它們當成一組獨立案例,檢查每張的去背穩定度。

先懂 Alpha Matte:它和黑白遮罩差在哪?
傳統二值遮罩只有「留」和「丟」兩種答案;Alpha Matte 則讓每個像素取 0 到 1 之間的透明度。影像合成常用的關係是 I=αF+(1−α)B:眼前像素 I,由前景 F、背景 B與透明度 α混合而成。髮絲、毛邊、玻璃和動態模糊之所以難,就是它們需要中間值,不能只靠剪刀式硬切。這也是影像 matting 研究長期處理的核心問題;想看技術脈絡可讀 Deep Image Matting 原始論文。
白話比喻:文字提示像在團體照上說「我要那匹馬」,Alpha Matte 則像一支能調整力道的橡皮擦。前者決定目標,後者決定輪廓是否自然。若你更想處理生成圖片裡的局部修改,可延伸看 ChatGPT Images 2.5 受控改圖教學;那是生成與編輯工作流,和本文從既有照片抽出前景的任務不同。
MultiMatte 本機教學前置檢查:版本、容量與圖片權利
- Python:NoBg 0.3.1 套件設定要求 Python 3.10 以上。
- PyTorch:NoBg 安裝文件明確要求自行安裝
torch與torchvision;先到 PyTorch 官方安裝選擇器取得符合 CPU、CUDA 或 ROCm 的指令。 - 儲存空間:目前
model.safetensors檔案約 3.36 GB;本機尚未快取這些檔案時,首次載入才會下載權重、設定與 tokenizer,請先保留額外空間。 - 素材權利:只用自己拍攝、已獲授權或條款允許處理的圖片;真人臉部與私人場景要先取得同意。
- 版本紀錄:本文固定
nobg==0.3.1,並把模型 revision 寫進程式,避免同一組 A/B 在更新後悄悄換了權重。
別被「LoRA 只訓練少量參數」誤導成小模型。官方模型卡顯示,發布的是已合併的完整 FP32 權重;LoRA 描述的是訓練方式,不等於下載檔只剩 adapter。Feyn 公布的資料量、訓練步數與 benchmark都屬發布方自報;不同硬體、圖片與版本不可直接外推成你的速度或成功率。
7 步完成 MultiMatte 本機文字選物與 A/B 驗收
步驟 1:建立乾淨環境,先裝對 PyTorch
痛點:只執行 pip install nobg,乾淨環境仍可能在 import 時找不到 PyTorch。做法:先建立虛擬環境,再依自己的硬體裝 PyTorch。以下啟用環境的語法適用 macOS/Linux;若你使用 NVIDIA 或 AMD GPU,請把 python -m pip install torch torchvision整行換成官方選擇器給你的版本。
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install torch torchvision
python -m pip install nobg==0.3.1
Windows PowerShell 的啟用指令是 .\.venv\Scripts\Activate.ps1。安裝後執行 python -c "import torch, nobg; print(torch.__version__); print(nobg.__version__)";你要看到兩個版本值,而不是立刻開始下載圖片或模型。這一步像出門前先試車:環境錯誤在這裡處理,比跑到一半才發現快得多。
步驟 2:準備 reference bank,但把每張圖當獨立案例
痛點:只挑一張簡單正面照,很容易高估模型。做法:建立 refs/ 資料夾,至少放正面、側面、困難場景與細節各一張;檔名只用英數與連字號,例如 01-front.jpg、02-side.jpg、03-horse-fence.jpg、04-detail.jpg。這裡的 reference bank 是驗收資料集,不是角色身分條件。
- 相近色:淺色毛髮配淺牆,測主體與背景是否黏在一起。
- 細線:柵欄、眼鏡、車輪輻條或鬚毛,測輪廓是否斷裂。
- 半透明/模糊:薄紗、反光、快速移動的手,測 Alpha 是否仍有漸層。
- 多物件:兩個人、動物與道具同框,測文字能否選中指定目標。
步驟 3:先用官方 Demo 看懂輸入與輸出
Feyn 的 MultiMatte 官方 Demo把介面拆得很清楚:上傳圖片、在 Prompt 欄用幾個字命名要保留的物件,再比較原圖與透明輸出。它適合確認心智模型,但正式驗收仍要回到你自己的圖片、固定版本和輸出檔。

步驟 4:跑第一張圖,保留 RGBA 與 Alpha 兩種檔案
痛點:只存透明 PNG,日後很難判斷問題來自選物、邊緣或合成。做法:同時輸出可直接使用的 RGBA 與灰階 Alpha。把下面程式存成 run_multimatte.py,將馬與柵欄測試圖放在 refs/03-horse-fence.jpg,並把 PROMPT改成圖片裡真正存在的短名詞。
from pathlib import Path
from PIL import Image
from nobg import AutoModel, AutoProcessor
MODEL_ID = "feyninc/multimatte"
REVISION = "748169829565838e710d21d136364ec94dd2094f"
IMAGE = "refs/03-horse-fence.jpg"
PROMPT = "the horse"
out = Path("output")
out.mkdir(exist_ok=True)
model = AutoModel.from_pretrained(MODEL_ID, revision=REVISION)
processor = AutoProcessor.from_pretrained(MODEL_ID, revision=REVISION)
cutout = model.predict(processor, IMAGE, PROMPT)
cutout.save(out / "named-cutout.png")
alpha = model.predict(processor, IMAGE, PROMPT, return_type="alpha")
alpha_u8 = alpha.clamp(0, 1).mul(255).round().to("cpu").byte().numpy()
Image.fromarray(alpha_u8, mode="L").save(out / "named-alpha.png")
權重尚未快取時,第一次執行會先下載檔案,所以等待時間和後續執行不同。上面這段程式預設在 CPU 執行;安裝 CUDA 版 PyTorch 不會自動移動模型,NVIDIA 使用者要依 NoBg GPU 指南,在載入後明確加上 model = model.to("cuda")。另外,官方 0.3.1 程式碼接受的 return_type是 "cutout"或 "alpha";官方部落格曾出現的 "tensor"與現行介面不一致,照抄會觸發 ValueError。
步驟 5:做預設 prompt vs 明確名詞的受控 A/B
痛點:每次換圖又換提示,就無法知道改善來自哪裡。做法:固定同一原圖與版本,只改一個變因。A 組省略提示,模型設定會補上 the main foreground subject;B 組填入簡短、具體的名詞,例如 the horse,而不是一長串構圖描述。
a = model.predict(processor, IMAGE)
b = model.predict(processor, IMAGE, "the horse")
a.save(out / "A-default.png")
b.save(out / "B-horse.png")
若文字仍指錯目標,可把框選當成輔助診斷。NoBg 0.3.1 接受原圖像素座標 [[x1, y1, x2, y2]],例如 model.predict(processor, IMAGE, None, [[120, 80, 460, 720]]);這組數字只是格式示例,請換成自己原圖的左、上、右、下座標。發布者在 2026 年 9 月 10 日的發布討論表示這一版尚未針對 boxes 最佳化,所以 C 組未必優於文字提示。把它另列 C 組,不要偷偷取代失敗的 B 組;否則你會失去對文字選物能力的判斷。
步驟 6:在黑、白、飽和色背景上抓出 bleed 與 halo
痛點:透明棋盤格會藏住白邊、黑邊與舊背景顏色。做法:把同一張 cutout 分別合成到白、黑與高飽和背景。若已安裝 ImageMagick,可直接執行:
magick output/B-horse.png -background white -alpha remove -alpha off output/check-white.png
magick output/B-horse.png -background black -alpha remove -alpha off output/check-black.png
magick output/B-horse.png -background '#00B7FF' -alpha remove -alpha off output/check-cyan.png
白底容易揭露暗色殘邊,黑底容易揭露亮色毛邊,飽和底則讓舊背景滲色更醒目。若軟邊仍混著原背景顏色,NoBg 還提供前景顏色估計:先執行 from loadimg import load_img,再以 image = load_img(IMAGE).convert("RGB")載入原圖,最後執行 processor.cutout(image, alpha, refine=True).save(out / "B-horse-refined.png")。把它當成另一個明確變因,保留原版與 refine 版一起比較。
步驟 7:用四欄盲評決定能不能交付
把檔名暫時改成隨機代號,評分者不要先知道 A 或 B。每欄用 0、1、2 分:0=明顯失敗,1=可修但要返工,2=可直接進下一道製作。先在看結果前寫下門檻;一個嚴格起點是四欄都拿 2 分,任何 0 分都退回重做。這是你的交付規則,不是 MultiMatte 的官方 benchmark。

多張同角色圖片怎麼批次跑?
當單張流程跑通後,再把 reference bank 全部送入同一組設定。官方介面會把同一個 prompt 套用到每張圖片;batch_size=1會逐張送入 forward,讓裝置端每次推論的峰值記憶體較平穩。不過 helper 仍會先載入清單中的所有圖片,輸出也會留在主機記憶體;大量素材請拆成數個資料夾分批跑。以下程式會把每張結果另存,不會把不同照片融合成一個角色表示。
paths = sorted(Path("refs").glob("*.jpg"))
cuts = model.predict(
processor,
[str(path) for path in paths],
"the mascot",
batch_size=1,
)
for path, cut in zip(paths, cuts):
cut.save(out / f"{path.stem}-cutout.png")
這種批次的「一致」是製作規格一致:同一 prompt、同一權重、同一檢查背景、同一評分表。角色在不同角度的身分一致性,仍由原始照片本身提供。若你的上游任務是先生成角色再局部修改,可把本文接到 Grok Imagine Image 2 圖像生成教學;先產圖,再用 MultiMatte 把通過驗收的前景交給排版或動畫流程。
4 個最容易誤判的失敗
- Prompt 指向不存在的物件:NoBg 的 SAM3 wrapper明確說 matte 不會是空的;即使概念不在圖裡也會回傳某個結果。正式管線要直接讀
presence_logits,不能把「有 PNG」當成「找到了」。 - 只看透明棋盤格:棋盤格適合預覽透明度,不足以暴露所有 halo;三色換底才是交付檢查。
- 把 batch 當成多圖參考:批次是多張獨立輸入共享 prompt。它解決吞吐與一致的處理設定,不替你建立角色記憶。
- 看到官方分數就跳過自己的難圖:發布方的 benchmark 能說明其測試設定,不能代替你的髮絲、柵欄、多人與相近色場景。保留 A、B、C 全部檔案,失敗才可追。
MultiMatte 本機教學 FAQ
1. MultiMatte 可以用多張參考圖生成同一角色嗎?
就本文鎖定的 NoBg 0.3.1 公開介面而言,不是這個任務。它讀取既有圖片並輸出前景 Alpha/RGBA;多張輸入會分別產生多張結果。本文的多圖流程是在檢查同一角色素材的去背品質,不是生成新角色。
2. 不填 prompt 也能跑嗎?
可以。目前模型設定會補上 the main foreground subject。但多人或多物件場景更值得做 A/B,因為明確名詞才是在測「你指定誰」。
3. return_type="tensor" 為什麼報錯?
因為 0.3.1 原始碼列出的值是 cutout與 alpha。要取得 H×W、0 到 1 的 tensor,請用 return_type="alpha"。這裡以套件原始碼與模型卡的現行範例為準。
4. 有輸出就代表 prompt 找對物件嗎?
不代表。官方 wrapper 說明輸出 matte 不會為空。若你的自動化流程必須拒絕不存在的概念,要改走 forward並檢查 presence_logits;人工流程則至少要把主體選擇列為第一欄。
5. Alpha 越銳利越好嗎?
不一定。產品硬邊需要乾淨輪廓,髮絲、毛髮與動態模糊則需要合理中間值。請看換底後是否自然,而不是只追求黑白分明。
6. 應該把 batch_size調大嗎?
先不要。官方預設 1 是為了讓峰值記憶體較平穩。先完成一張圖、記錄時間與記憶體,再逐步增加;吞吐量提高不值得用 OOM 換。
7. 可以直接把輸出拿去商用嗎?
先分開檢查素材、程式與權重三層權利。Hugging Face metadata 與 NoBg 程式庫標示 Apache-2.0,但模型卡同時描述它源自 SAM 3;Meta 另有 SAM License。商用或再散布權重前,應依你的用法核對完整條款,必要時向發布方確認,不要只讀頁面上的單一 license 標籤。
8. 這篇為什麼不列一個「最低硬體」?
因為下載大小不等於實際峰值記憶體。裝置、PyTorch build、精度與圖片流程都會改變結果。目前 processor 設定會把核心推論輸入處理為固定的 1008×1008,因此把來源圖先縮小,不等於按比例降低模型的 activation 記憶體。較保守的起點是 batch_size=1,先在一張已授權的測試圖完成整條流程,再決定是否移到 CUDA 或調整精度。
給新手的 5 個重點
- 把 MultiMatte 記成「圖片+名詞 → 連續 Alpha」,不要把它和角色生成混在一起。
- 先安裝符合硬體的 PyTorch,再固定
nobg==0.3.1與模型 revision。 - 同一原圖只改 prompt,A/B 才能回答文字指定是否真的改善選物。
- 每張結果都看 Alpha,並在黑、白、飽和色背景上檢查輪廓與 bleed。
- 多張角色照是獨立的困難案例;用同一四欄規格驗收,才會得到可重複的製作流程。
想把這套流程接到更完整的 AI 創作管線,可以先逛 AlphaLab AI 專區;若你希望從工具操作一路建立可交付作品,也可查看 AlphaLab 線上課程。
接著閱讀
左右滑動查看更多推薦
結語:不要只收藏透明 PNG,要收藏可重跑的判斷
MultiMatte 真正有用的地方,不是讓你少按一次去背按鈕,而是讓「保留哪個物件」成為可寫進流程的文字條件。但文字選對只是第一關;回到開頭的乘法式,選對主體、邊緣可信、換底不露餡、Alpha 可編輯四項都成立,素材才算完成。
你的下一步很具體:今天先選一張自己有權使用、同時含細線與相近色背景的圖片,固定版本跑出 A-default 與 B-named,再把兩張都放上黑、白、青三色背景。別先問「哪張看起來比較厲害」;照四欄逐項打分,你就會得到第一個能重複、能交接、也能推翻自己的 MultiMatte 驗收紀錄。





