雖然 Android 有很多不同的背景移除工具,但這些工具普遍都不是免費,即使是免費,通常都是有限功能
而且由於這些工具通常都是網絡服務,部分還需要註冊帳戶才能使用服務,非常不方便
因此在下希望找到一些免費、能夠獨立運作的背景移除工具
安裝 PRoot-Distro
Termux 由 2022年12月 發佈的更新,將常見的 Linux發行版 整合到其套件庫
而且還提供 proot-distro 指令,讓使用者更簡單地下載及運作 Linux發行版
在 Termux 輸入
pkg install proot-distro
便會更新及安裝 proot-distro 到 Termux
安裝 Linux 發行版
輸入
proot-distro install debian
便會下載及安裝 Debian (約 41 MB) 到 Termux
除了 Debain ,閣下亦可以輸入
proot-distro list
列出所有其他已經整合到 Termux 的 Linux發行版 ,在下不詳細列舉
登入 Linux 發行版
安裝 Debian 後,輸入
proot-distro login debian
便會以 root 登入 Debian
以 root 登入 Debian 後,輸入
apt update apt upgrade
更新 Debian 套件至最新版本
安裝 Python3 及 PIP
更新後,輸入
apt install python3-full python3-pip
安裝最新、完整版本的 Python3 及 PIP
安裝 RemBg
安裝 最新、完整版本的 Python3 及 PIP 後,輸入
pip install rembg[cli]
安裝 rembg[cli]
但卻出現 externally-managed-environment 錯誤而無法安裝 rembg
在下估計是因為 Termux 預設的安裝環境不能安裝 PIP套件
因此在下嘗試建立 Python虛擬環境 (Python Virtual Environment) 並將 PIP套件安裝到 Python虛擬環境,輸入
python3 -m venv .venv
(Python虛擬環境 不一定使用 .venv ,只是方便顯示用途)
輸入
.venv/bin/pip install rembg[cli]
終於能夠安裝 rembg (約 300 MB)
RemBg 網頁伺服器
由於 rembg 安裝在 Python虛擬環境 ,因此需要指定 Python虛擬環境 的 路徑才能正確執行 rembg
在下打算使用 網頁伺服器 功能,方便 Android 能在 網頁瀏覽器 以互動操作,輸入
.venv/bin/rembg s
(rembg 預設使用 連接埠 7000 ,可以使用參數 --port <port> 來更改 連接埠)
網頁伺服器運作後,開啟網頁瀏覽器,前往 http://127.0.0.1:7000/ 便會顯示 rembg 的頁面
在 Android 除了能夠在 網頁瀏覽器 中 選擇系統中的檔案 , 還能夠 直接使用鏡頭拍攝相片
暫時不設定其他選項, 選取檔案 或 拍攝相片 後 按 Submit , rembg 便會開始分析圖像並將背景移除
由於第一次分析沒有圖像模型參考, rembg 需要下載圖像模型才能分析圖像
亦即是 rembg 能夠將模型下載到本機,以離線方式運作,不需要依賴網上服務
分析圖像時離開頁面有機會中斷分析
如果發生沒有運作的情況,需要重新整理,再拍 選取檔案 或 拍攝相片 及 提交即可
分析圖像時, Output 的背景會顯示分析進度(但執行時間不一定完全匹配預計時間)
分析完成後, Output 會顯示背景移除的圖片
(由於 JPEG 沒有透明通道,因此圖片會強制轉換為 PNG)
- Model - 分析圖片時使用的模型,可以選擇:
- isnet-anime 用於區分動漫角色 (約 176 MB)
- isnet-general-use 通用模型 (約 179 MB)
- sam 通用模型,需要設定過濾器 (約 359 MB)
- silueta 效果與 u2net 相似,能較減少輸出圖像的體積 (約 44 MB)
- u2net_cloth_seg 用於區分人物與衣物 (約 176 MB)
- u2net_custom 自訂區分目標 (在下無法下載模型)
- u2net_human_seg 用於區分人物 (約 176 MB)
- u2net 通用模型,適合真實照片 (約 176 MB)
- u2netp 分析速度較快的 u2net (約 5 MB)
- Foreground threshold - 設定資源分析影像屬於前景內容,數值越高越準確
- Background threshold - 設定資源分析影像屬於背景內容,數值越高越準確
- Erosion size - 分析影像侵蝕的範圍,數值越高侵蝕越高,前景圖像與背景圖像的模糊邊緣越少
- Only mask - 啟動時會提高準確度,但需要較多時間
- Post process mask - 後期處理分析後的影像,可以作某程度上的美化,但需要較多時間
- Arguments - 額外參數,不非所有模型都支援
RemBg 指令
RemBg 除了能以網頁伺服器方便基本使用者以互動方式操作外,亦可以使用指令方式操作批次處理
rembg d
下載所有 RemBg 模型
rembg i [options] <input-image> <output-image>
將指定圖像的背景移除並輸出到指定位置
rembg p [options] <input-directory> <output-directory>
將指定目錄中的圖像的背景移除並輸出到指定位置
指令亦可以加入參數
- -m model-name - 指定模型,預設 u2net
- -a alpha-matter - 使用 Alpha遮罩
- -af integer - 設定 Foreground threshold
- -ab integer - 設定 Background threshold
- -ae integer - 設定 Erosion size
- -om - 使用 Only Mask
- -ppm - 使用 Post Process Mask
- -w - 顯示進度,只支援目錄指令
- -d - 刪除原圖,只支援目錄指令(不建議使用)
- -bgc red green blue alpha - 設定背景顏色,以 RGBA 順序設定數值
- -x argument - 額外參數
- --host ip - 設定網頁伺服器的 IP ,預設(及通常)使用 0.0.0.0 ,只支援網頁伺服器指令
- --port port - 設定網頁伺服器的 連接埠 ,預設使用 7000 ,只支援網頁伺服器指令
總結
以往通常都是需要在電腦上使用圖像編輯軟件,將需要保留的圖像內容選取
再將選取的圖像內容複製並貼上到空白畫板,或將反向選取後移除不需要的內容
如果需要選取的圖像的內容非常複雜,便需要花費大量時間選取圖像內容的邊緣
稍一不慎取消選取的圖像內容,便需要重新選取,是非常花時間的人手操作
現在有大量網上服務及應用程式可以方便移除背景比過去方便得多,使用手提裝置便可以完成
然而這些服務普遍都需要付款,而且這些服務都需要依賴互聯網服務才能使用,因此無法獨立運作
而 RemBg 卻是能夠獨立運作的應用服務,克服必須連接互聯網才能使用的限制
RemBg 是其中一套 Python 函式庫,由於 Android 可以在 Termux 上運行 Linux 環境
配合 Android 能在網頁瀏覽器中直接開啟 鏡頭拍攝 或 選擇相片 亦非常方便
沒有留言 :
張貼留言