最近做 wk-pet-sticker,要讓 AI 把寵物照片背景去掉變成透明 PNG 貼圖。選了 Google Gemini 2.5 flash image(俗稱 Nano Banana),文件寫支援 PNG 輸出,看起來該能做。
結果反覆改了幾十次 prompt,沒有一次出來是真透明。
動機很單純
用戶上傳寵物照,AI 自動去背輸出可貼在 LINE 對話的透明 PNG 貼圖。這是核心功能。
選 Gemini 是因為它便宜、有官方 image generation API、文件寫支援 PNG 格式輸出。表面條件都符合。
我當時的判斷鏈,每一步都錯
第一次出來不透明。我以為是 prompt 不夠精準。加了「transparent background」。
還是不透明。加「pure transparent background, alpha channel, no fill, isolated subject on transparent」。
還是不透明。換 model,從 Nano Banana 換到 Gemini 2.5 flash image preview 版。
還是不透明。N 次後我才停下來問一個本來就該先問的問題:這 model 到底支不支援 RGBA 輸出?
答案很乾脆
WebSearch 一下,加上自己實際下載輸出檔用 PIL 檢查 alpha channel:
from PIL import Image
img = Image.open("output.png")
print(img.mode) # RGB,不是 RGBA
Gemini 任何 model 都不會吐 RGBA 真透明 PNG。輸出檔案是 PNG 格式沒錯,但 alpha channel 永遠是 255(不透明),實際上就是 RGB 套個 PNG 容器。
PNG 是容器,RGBA 是內容。容器支援 alpha 不代表 model 會實際輸出 alpha 像素值。這個區分我之前沒搞清楚,所以一直在改 prompt,根本是用錯方法解錯類型的問題。
解法:放棄硬要 Gemini 出透明
改成 chroma key pipeline。
第一步,prompt 讓 Gemini 出純綠色(#00FF00)背景的圖。純色背景它能做得很好,沒有能力天花板問題。
第二步,後製用 HSV 色彩空間 + Floodfill 演算法在 server 端把綠色去掉換成透明。HSV 比 RGB threshold 可靠,因為陰影和反光的綠色在 HSV 裡仍然是綠色色相,但 RGB 值會差很多。
第三步,做 spill 處理(去除主體邊緣的綠色滲色)+ feathering(邊緣抗鋸齒)。
結果可用,bug 修完。但花的時間比預期多三倍。
我事後整理的根因:prompt-first bias
我有一個系統性偏見:預設所有 AI 輸出問題都是 prompt 問題。動手就改 prompt。
實際上 AI 輸出問題有三類,動手改 prompt 之前必須先分類:
-
Prompt 不清楚 → 改 prompt 症狀:輸出有時對有時錯、隨機性高、不同 phrasing 結果差很多。 解法:iterate prompt phrasing。
-
Model 能力上限 → 換 model 或換做法 症狀:永遠輸出同一類錯誤、不管 prompt 怎麼改方向都一致。 解法:WebSearch model capability matrix,換 model 或改用其他工具(像我這次的 chroma key)。
-
API config 設錯 → 檢查設定 症狀:完全沒輸出、輸出格式錯、報錯訊息提到 parameter。 解法:檢查 endpoint、auth、param 名稱、版本。
我這次踩的是第 2 類,但用第 1 類的方法解,所以怎麼試都沒用。
下次的剎車條件
我給自己設了三條剎車條件,下次這類問題出現時強制觸發:
A. 動手前 5 分鐘 capability sanity check 用最簡單的 prompt 跑一次,把輸出存成檔案,看 output bytes / metadata,確認 model 真的能做。
B. 同類失敗連續 2 次必須停下來重新分類 不能繼續第三次加 prompt 詞。連續 2 次同類失敗本身就是訊號,告訴我這不是 prompt 隨機性問題,是能力上限或 config 問題。
C. 新 model(剛發布幾個月內)預設可能缺常見能力 Gemini 2.5 flash image / Nano Banana 是 2024 末才出來的 model。新 model 容易踩坑因為功能 matrix 還在演進,不能假設跟其他 image gen API(DALL-E、Replicate 等)parity。先 WebSearch capability matrix 再動手。
學到的一件事
AI 輸出問題的第一個動作不是改 prompt,是分類。