快轉到主要內容

「Rembg」開源AI圖片去背軟體 支援Linux / Windows / macOS

分類   開源AI應用 AI影像處理
標籤   Background Remover Object Detection GIMP Stable Diffusion WebUI
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

FOSS AI image background removal software.

去背功能,從GIMP這類修圖軟體誕生以來便存在的操作,是許多修圖者必學的基本功。過去要慢慢用工具圈選背景修圖,如果背景很複雜那真的會修到想死。現今,在AI模型的幫助下,已經可以做一鍵去背操作。

很多軟體都有AI協助去背,比方說GIMP可以安裝 remove.bg的插件,透過線上API去背

不過,本文我的重點將專注在離線運算的AI去背軟體。

GitHub上有很多去背軟體的開源專案和函式庫,我選擇星星最多的「rembg」。

經實測,給複雜的背景去背,rembg效果良好,速度也非常快。

rembg軟體本身也提供了豐富的API介面,可以輕鬆整合到其他專案使用。如果你不想要打指令,可以跳到本文最後一段看「搭配圖形軟體使用rembg」的方法。

1. 安裝rembg
#

rembg軟體由Daniel Gatis開發,主程式用Python寫成,原始碼位於 Github,可於Linux/Windows/macOS安裝。

此處安裝使用Ubuntu Linux做示範。

  1. (選擇性)rembg可以使用Nvidia GPU加速演算,請安裝 CUDA

  2. (選擇性)用 Anaconda建立Python虛擬環境

conda create -n rembg python=3.11.7
conda activate rembg
  1. 用pip安裝rembg套件
# 純CPU版
pip install rembg[cli]

# 或是裝GPU加速版
pip install rembg[gpu,cli]
  1. rembg支援多種模型,預設載入的是處理通用圖像的u2net。若要採用其他特化用途的模型,請在指令中指定,rembg會自動下載,並將其放到~/.u2net目錄。

rembg提供的模型如下:

  • u2net:基於Qin Xue Bin等人發表的 U2-Net所訓練的通用模型。個人認為比較適合真實照片。
  • u2netp:輕量版u2net模型。
  • u2net_human_seg:專為分割人物訓練的模型。
  • u2net_cloth_seg:從人像分割衣服的模型。衣服種類分為上半身、下半身、全身。
  • silueta:功能跟u2net一樣,檔案大小縮減到43MB。
  • isnet-general-use:基於Qin Xue Bin等人發表的 DIS所訓練的通用模型,效果比u2net更好。
  • isnet-anime:專為動漫角色訓練的高精確度分割模型。
  • sam:基於 Meta的Segment Anything訓練的通用模型,檔案更大,且需要額外輸入提示詞。

2. rembg命令行使用方式
#

例如我要將/home/user/Downloads/input.png圖片去背,並輸出為/home/user/Downloads/output.png

注意要去背的圖片主體不可以跟背景顏色太接近,否則AI還是會誤判。

指定參數i,給單個檔案去背。輸出為png的話,去背的部份就會變成透明圖層。

rembg i /home/user/Downloads/input.png /home/user/Downloads/output.png

p可以給整個目錄的圖片去背,例如處理input目錄下的所有圖片,並輸出到output

rembg p /home/user/Downloads/input /home/user/Downloads/output

om僅回傳遮罩,方便在修圖軟體做後續處理

rembg i -om /home/user/Downloads/input.png /home/user/Downloads/output.png

m使用特定模型去背

rembg i -m isnet-anime /home/user/Downloads/input.png /home/user/Downloads/output.png

不過sam模型比較特殊,需要使用以下格式的指令,提供精確的圖片主體座標,SAM才能分割出物件。圖片座標請開GIMP看。

# 座標選取,處理圖片中(390,350)座標的物件
rembg i -m sam -x '{ "sam_prompt": [{"type": "point", "data": [390, 350], "label": 1}] }' /home/user/Downloads/input.png /home/user/Downloads/output.png

# 正方形選取,從圖片左上角(0,30)座標為基準,畫出744x980長寬的選取區域。
rembg i -m sam -x '{ "sam_prompt": [{"type": "rectangle", "data": [0, 30, 744, 980], "label": 1}] }' /home/user/Downloads/input.png /home/user/Downloads/output.png

3. rembg搭配圖形界面軟體使用
#

GIMP
#

你可以在GIMP使用rembg,這裡使用的是 James Huang製作的RemoveBG.py外掛

  1. Linux的話先透過 Flatpak安裝GIMP

  2. 接著下載作者提供的 RemoveBG-Flatpak.zip,解壓縮,編輯裡面的RemoveBG.py,將aiExe =指向rembg執行檔所在路徑。

aiExe = "/home/user/.local/bin/rembg"
  1. 賦予RemoveBG.py執行權限,並移動到GIMP的plug-ins目錄
chmod +x RemoveBG.py

mv ~/Downloads/RemoveBG.py ~/.var/app/org.gimp.GIMP/config/GIMP/2.10/plug-ins
  1. 開放GIMP存取session bus
flatpak --user override --socket=session-bus org.gimp.GIMP
  1. 之後RemoveBG的選單就會出現在GIMP的濾鏡 → Python-fu

  2. 點選後勾選啟用遮罩,並選取要使用的模型(如果沒有你要的模型,請修改RemoveBG.py,在陣列加入模型名字)

  3. 這樣程式會將目前的圖層複製,再加上遮罩。對其按右鍵「套用遮罩」,再按檔案 → 匯出PNG。

Stable Diffusion
#

Stable Diiffusion WebUI的作者有開發rembg的擴充功能: stable-diffusion-webui-rembg

  1. 透過網頁安裝擴充功能,重新啟動WebUI。

  2. 進入Extra頁面,上傳圖片

  3. 勾選下方的Remove Background,再選取模型,其他都不要勾,

  4. 點選Generate就會完成去背。

4. 延伸閱讀:AI影片去背
#

BackgroundRemover by Johnathan Nader:影片版的Rembg,這個程式的問題就是輸出的mov檔案太巨大了。

Transparent Background by Taehun Kim使用教學:影片去背並生成綠幕,我覺得這個效果比較好。

相關文章

Stable-Gimpfusion,Stable Diffusion WebUI搭配修圖軟體GIMP使用
分類   開源AI應用 AI繪圖教學
標籤   Stable Diffusion WebUI GIMP
ControlNet 讓AI按照骨架動作繪圖!Stable Diffusion WebUI擴充功能使用教學
分類   開源AI應用 AI繪圖教學
標籤   ControlNet Stable Diffusion WebUI Depth Estimation Object Detection
Civitai Extension,自動從CivitAI下載模型和縮圖
分類   開源AI應用 AI繪圖教學
標籤   Stable Diffusion WebUI GIMP

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。