快轉到主要內容

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

· 民國113年甲辰年
·
切換繁體/簡體
分類   資訊科技 電腦軟體分享
標籤   Background Remover Object Detection GIMP Stable Diffusion WebUI
目錄

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使用教學:影片去背並生成綠幕,我覺得這個效果比較好。

相關文章

會說話的AI二次元老婆!「Digital Mate」3D桌面寵物使用教學
分類   資訊科技 電腦軟體分享
標籤   Desktop Mascot ChatGPT MikuMikuDance Live2D Text to Speech
yt-dlp指令使用教學,萬能Youtube影片命令行下載工具
分類   資訊科技 電腦軟體分享
標籤   Yt-Dlp Youtube Youtube Music
漫畫自動翻譯軟體 BallonsTranslator 使用教學,附贈修圖功能
分類   資訊科技 電腦軟體分享
標籤   Machine Translation ChatGPT LLM OCR

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

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