# Hiromaru Background Remover

這是可直接部署的靜態網站，沒有編譯步驟、API Key 或伺服器推論。
`app/*.js`、`index.html`、`style.css`、`editor.css` 即目前版本的完整應用程式原始碼。
整合程式沿用既有 AGPL-3.0-only 授權；各第三方元件依 `licenses/` 個別授權。

## 推論與邊緣

- U²-NetP：原始 rembg ONNX 檔，4,574,861 bytes，Apache-2.0。
  SHA-256：`309c8469258dda742793dce0ebea8e6dd393174f89934733ecc8b14c76f4ddd8`。
  [模型來源](https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2netp.onnx)、[原作者](https://github.com/xuebinqin/U-2-Net)。
- 320×320 判斷沿用最早版本的 ImageNet 正規化與輸出 min-max 正規化。
  實測直接提高到 512／640，部分動漫主體明顯被誤刪，因此沒有出貨這兩種配置。
  原作者也提醒預訓練模型以 320×320 使用以維持原表現。
- 原圖導引圖最長邊上限 1024，建立 RGB 局部線性係數，再用每個原圖像素的 RGB 算出原尺寸 Alpha。
  這不是 1024 模型推論，也不會憑空找回模型完全漏掉的主體。
  [Guided Image Filtering](https://people.csail.mit.edu/kaiming/eccv10/index.html)。
- 邊界確定為同一底色時，額外清理與邊界連通的殘留和混色邊緣；不跨越輪廓清除封閉細節，且不改動高信心前景。
- 原始 RGB 和 Alpha 永久保留；只編輯原尺寸 Alpha Mask。PNG 保留隱藏 RGB 與逐像素 Alpha。
- ONNX Runtime Web `1.21.0-dev.20250206-d981b153d3`，MIT。
  [對應上游來源](https://github.com/microsoft/onnxruntime/tree/d981b153d3)。
  `vendor/ort/ort.mjs` 為該套件 `dist/ort.wasm.min.mjs` 的本機副本，搭配同版本 loader/WASM。
- fflate `0.8.2` 的 `gunzipSync` 僅用於公開模型／引擎解壓縮，MIT；沒有 IMG.LY 程式或模型。

## 部署與快取

將整個資料夾內容上傳 Cloudflare Pages；首頁 `index.html`，不需 build command。
保留 `_headers`、`models/`、`vendor/`、`app/`、`licenses/`、`source/`。
只使用同站靜態資源，沒有上傳使用者圖片的網路請求。
模型與 WASM 以 gzip 檔按需載入，解壓後驗證 SHA-256，再存於 Cache Storage；損壞時重新下載單個檔案。
兩個壓縮資源總計 7,369,818 bytes，不包含小型 JS 與頁面；原始碼和公開模型均隨資料夾提供。
只清除已退役的 IMG.LY 模型快取，不清除其他應用或使用者資料。
有跨來源隔離標頭時最多四條 CPU 執行緒，普通靜態伺服器也可單執行緒執行，不需要 WebGPU。
觸控裝置完成推論後釋放 AI worker；模型下載、快取或 AI 失敗時仍可手動編輯。
首次一分鐘目標取決於裝置、圖片和網路；實體手機與 Safari／Firefox 尚未驗證。

## 本機核對

以 HTTP 伺服器開啟資料夾。不要用 `file://` 直接開啟。
可選：在本資料夾執行 `node source/verify-assets.mjs` 核對壓縮模型與 WASM 的實際資料。
不用安裝 npm 套件。測試紀錄見根目錄 `測試結果.txt`。
