去背後有白邊、毛邊怎麼辦?AI 去背的原理、邊緣處理與存檔格式
約 7 分鐘艾迪爾工作室
把商品照或人像去背之後,放到白色的網頁上看起來很完美;換到深藍或黑色的背景,主體周圍卻浮出一圈淡淡的白邊。頭髮的地方更明顯,像是被一層霧包住。很多人第一個反應是「去背沒去乾淨」,於是用橡皮擦一圈一圈修,修到頭髮變成剪紙。
其實白邊大多不是「多留了背景」,而是邊緣那一圈半透明的像素,顏色裡本來就混著原來的背景色。這篇從透明度怎麼存開始,說明 AI 去背實際在做什麼、白邊與毛邊的成因、各種情況該怎麼處理,以及最常見的存檔錯誤。
去背其實是在算一張「透明度地圖」
一張去背後的圖,每個像素除了紅、綠、藍三個顏色之外,還多了一個 alpha(不透明度)數值:0 是完全透明,最大值是完全不透明,中間的數值就是半透明。AI 去背模型做的事情,就是對每一個像素猜出這個數值,產生一張黑白的「遮罩」,白的地方留下、黑的地方挖掉、灰的地方半透明。
關鍵在那些灰色的像素。主體的輪廓、頭髮、毛衣的絨毛、玻璃杯的邊緣,在原始照片裡本來就是前景與背景「混在同一個像素裡」:一根髮絲比一個像素還細,那個像素拍到的顏色就是一部分頭髮、一部分背景牆。理想的遮罩會給它一個介於中間的 alpha,而不是硬切成 0 或 1。
站上的去背工具用的是 BiRefNet,一個專門做「高解析度二分影像分割」的開源模型(MIT 授權)。它的特點是同時參考整張圖的大範圍資訊與局部的細節,對髮絲、鏤空、細長的物體比傳統的分割模型準。模型內部把圖統一縮到 1024 × 1024 計算遮罩,再放大貼回原尺寸,所以輸出的圖仍是原本的解析度。
白邊、綠邊是從哪裡來的
照片裡邊緣像素的顏色,可以想成「前景色 × 不透明度 + 背景色 × (1 − 不透明度)」。例如在白牆前拍的黑髮,髮梢某個像素是 40% 頭髮、60% 白牆,拍到的就是一個偏淺的灰色。
去背時,模型正確地把這個像素的 alpha 設成 40%,但顏色仍然是那個「混了白牆」的淺灰。等你把它放到黑色背景上,合成出來是 40% 淺灰 + 60% 黑色,比真正的黑髮亮很多——一整圈這樣的像素,就是你看到的白邊。綠幕拍攝時同樣的道理會變成綠邊,這在影視後製叫做「溢色」(color spill)。
各種邊緣問題的處理方式
| 症狀 | 原因 | 處理方式 |
|---|---|---|
| 深色底上出現一圈淺色光暈 | 邊緣半透明像素混到原本的淺色背景 | 開「邊緣去色」,把邊緣顏色推回主體色 |
| 綠幕拍的人邊緣發綠 | 綠色溢色 | 同上;拍攝時讓人離綠幕遠一點,溢色會少很多 |
| 頭髮變成一塊硬邊、髮絲不見 | 模型把髮絲區域判成全有或全無 | 改用「高品質」模型;原圖解析度太低時髮絲本來就分不出來 |
| 主體缺一角、手指被切掉 | 主體與背景顏色太接近,或主體不明確 | 換模型再試;或換一張背景對比較大的照片 |
| 背景的一部分被留下來 | 模型把背景物件當成主體的一部分 | 先把圖裁切到只剩主體,再去背 |
| 玻璃杯、婚紗、煙霧變成實心或整個不見 | 真正的半透明物體,遮罩很難估 | AI 去背的弱項;需要的話用影像軟體手動調整 |
「邊緣去色」的原理是反推:既然知道這個像素的 alpha 和原本背景的顏色,就能把背景的貢獻扣掉,估出比較接近主體本身的顏色。站上的工具可以調整強度,處理過後換任何底色都比較乾淨。它不會改變遮罩,所以不會把髮絲削掉。
不建議用「收縮選取範圍」或橡皮擦把邊緣整圈削掉。這樣白邊確實不見了,但主體也瘦了一圈,頭髮與毛料的柔軟感完全消失,放在任何背景上都像貼紙。
拍的時候就能讓去背更乾淨
模型再強,輸入的照片還是決定了上限。如果照片是自己拍的,下面幾點可以讓去背一次到位:
- 背景單純、跟主體顏色差距大。白色商品用深色背景,深色商品用淺色背景。
- 主體與背景之間留一點距離,減少背景反光打到主體上(溢色就是這樣來的)。
- 對焦在主體上,邊緣清楚。景深太淺導致邊緣糊掉的話,模型只能把糊的部分一起切成半透明。
- 解析度夠。髮絲在原圖裡至少要看得出一根一根,模型才有東西可以分。
- 避免主體被畫面邊緣切到一半,模型比較容易判斷哪一個是主角。
存檔格式:為什麼存成 JPG 背景又變白了
JPG 格式本身沒有透明度的欄位。透明背景的圖存成 JPG 時,軟體只能把透明的地方填上一個顏色(通常是白或黑),透明就這樣消失了。這是去背後最常見的錯誤,而且常常發生在「另存新檔」或上傳到某些會自動轉檔的平台時。
| 格式 | 支援透明 | 適合用途 |
|---|---|---|
| PNG | 支援,每個像素都有自己的不透明度 | 去背成品、要再編輯的素材、簡報、貼圖 |
| WebP | 支援 | 網頁上用,檔案比 PNG 小 |
| JPG | 不支援 | 已經換好底色、不需要透明的成品 |
| GIF | 只有「全透明或不透明」兩種 | 不適合,半透明的邊緣會變成鋸齒 |
PNG 的壓縮是無損的,加上多了一個透明度通道,所以去背後的 PNG 常常比原本的 JPG 大好幾倍,這是正常的。如果最後的用途其實不需要透明(例如電商主圖本來就要白底),直接選白色底再輸出,檔案會小一些,邊緣也已經合成好了,不怕到了別的平台又被轉壞。
一個實際的流程
- 先把照片裁到主體佔畫面的大部分,背景雜物越少越好。
- 用標準模型去背,換到黑底和白底各看一次。
- 髮絲或毛料不滿意,換高品質模型再跑一次。
- 深色底上有白邊,打開邊緣去色,強度從中間開始調。
- 要透明就下載 PNG;不需要透明,直接選好底色再下載。
- 放到最後要用的地方(簡報、網頁、拍賣平台)實際看一次,確認沒有被轉成 JPG。
站上的圖片去背在你的瀏覽器裡執行,照片不會上傳,換底色不用重算。商品照、證件照換底、貼圖素材都可以直接用;處理別人的圖片時,請先確認你有使用的權利。
常見問題
- 去背後頭髮一團霧霧的,是模型不好嗎?
- 不一定。髮絲區域本來就應該是半透明的,霧霧的感覺多半是邊緣混到了原本的背景色。先試「邊緣去色」;如果髮絲根本沒被分出來(整塊被切掉或整塊留著),才是換高品質模型的時機。
- 可以只用白底,不要透明嗎?
- 可以。選白色底後下載,邊緣會直接和白色合成好。電商主圖、證件照這類本來就要特定底色的用途,直接輸出底色反而比較不會出錯。
- 為什麼同一張圖換個模型結果差很多?
- 兩個模型的大小與訓練程度不同,對「哪一個是主體」的判斷也會不同。主體明確的照片差別不大;背景複雜、主體不明確的照片,差別就會很明顯,值得兩個都試。
- 去背後放大會不會讓邊緣變糊?
- 會。遮罩是照原圖尺寸產生的,事後再放大,半透明的邊緣也會跟著被拉寬。需要大圖的話,建議先把原圖放大,再去背。
參考資料
- BiRefNet:Bilateral Reference for High-Resolution Dichotomous Image Segmentation(GitHub)
- W3C:Portable Network Graphics (PNG) Specification(透明度與無損壓縮)
法規與平台規定可能調整,實際以官方最新公告為準。內容有錯誤歡迎寫信告訴我們。