Technology發布於 October 7, 2026作者:Thibault Mathian

虛擬試穿安全分類器:專為內容審核打造的開源模型

我們開源了虛擬試穿安全分類器(採用 Apache-2.0 授權)。這款模型能分析商品照片,精準預測虛擬試穿的結果。了解為何傳統 NSFW 偵測器無法勝任,以及我們的開發過程與評分機制。

目錄

我們今天在 Hugging Face 上以 Apache-2.0 授權發布了 虛擬試穿安全分類器(Virtual Try-On Safety Classifier)。它能透過商品照片回答一個核心問題:如果顧客試穿這件商品,生成的照片會呈現什麼畫面?

我們開發此模型的初衷,是在商品進入 虛擬試穿 模型前進行把關。任何允許上傳任意商品圖片的試穿服務都會面臨相同挑戰,因此我們決定將模型、標註準則與評估結果一併公開。

Genlook 示範目錄中的八張商品照片及分類器輸出結果:運動內衣、衝浪褲和短版外套皆為 ok,三款泳衣為 revealing,狗胸背帶為 ok 並標記為 pet,假髮為 ok 並標記為 not clothing。
Genlook 示範目錄中的八張商品照片及分類器輸出結果:運動內衣、衝浪褲和短版外套皆為 ok,三款泳衣為 revealing,狗胸背帶為 ok 並標記為 pet,假髮為 ok 並標記為 not clothing。

為何 NSFW 偵測器不適用於虛擬試穿

虛擬試穿需要人物照片和商品照片,進而生成人物穿著該商品的畫面。風險存在於最終生成的結果,但在生成前,我們唯一能檢查的只有商品本身。

通用的 NSFW(工作場所不宜)偵測器是根據輸入圖片的像素進行判斷。但對於商品照片來說,這完全搞錯了重點:

  • 平放拍攝的內衣沒有裸露。 但虛擬試穿的結果會顯示顧客穿著內衣。
  • 白底上的胸貼只是一小塊布料。 但虛擬試穿的結果會是上空。
  • 穿在假人模特兒上的乳膠頭套並不暴露。 但它仍是情趣用品。
  • 裸體模特兒只戴著一條項鍊的照片很暴露。 但項鍊本身是正常的商品。

我們曾使用 141 件已標註的商品,對三款知名的開源 NSFW 影像分類器(NudeNet、nsfw-vit 和 Falconsai)進行早期測試,結果它們的判斷與我們的標籤一致率僅有 48% 到 62%。而針對此特定問題制定了自訂策略的 Google ShieldGemma 2,一致率則達到 71.6%。這些模型都正常運作,只是它們回答的是另一個問題。

分類器的預測內容

每件商品都會獲得一個分級,依嚴重程度排序:

分級虛擬試穿結果顯示內容範例
ok顧客正常穿著日常服飾、運動服、防寒衣、像一般衣服般包覆的 Cosplay 服裝、配件
revealing泳衣等級的包覆度比基尼與連身泳衣、男士內褲、塑身衣、超短褲、多數音樂節服飾
lingerie女士內衣,未露出私密部位胸罩、內褲、內衣套裝、連身衣、吊襪帶、作為內衣穿著的馬甲
adult露出私密部位,或為情趣用品迷你泳裝、胸貼、透視裝、開襠設計、BDSM 與戀物服飾、性愛角色扮演服裝

分級旁還有三個額外輸出標籤:

  • subject(主體):human_clothing、pet 或 not_clothing。狗胸背帶和綁縛胸帶在商品圖中看起來很像;假髮、化妝品和家居用品則會被標記為非服飾。
  • swimwear(泳裝):regular、near_micro 或 micro。普通(regular)和近乎迷你(near micro)屬於 revealing,迷你(micro)則屬於 adult。商品名稱中的「microkini」無關緊要,一切由照片決定。
  • ravewear(派對服飾):true 或 false,用於音樂節服飾。它不會改變分級,但這類服飾是模型最難確定的部分,因此這項資訊很有幫助。

這些分級描述的是輸出結果,而非商品或商店本身。合適的門檻取決於受眾:內衣品牌會允許 lingerie,而兒童購物平台可能連 revealing 都會阻擋。模型還會回傳一個 blocked 標籤(adult 機率大於等於 0.3),能比僅看最高分級攔截更多成人商品,且誤判率僅會微幅上升。

難以判定的案例

大多數商品都很容易判斷。我們的策略是為了處理那些困難的案例,每一條規則都源自於需要做出決定的真實商品:

商品分級原因
作為健身服銷售的運動內衣ok可在公共場合當作上衣穿著
剪裁相同但作為內衣銷售的無鋼圈內衣lingerie女士內衣
蕾絲胸罩,照片中明顯可見乳頭adult胸部透視
男士平口內褲revealing泳衣等級的包覆度
防寒衣、防磨衣、布基尼ok完整包覆
皮褲、仿乳膠洋裝ok時尚單品
作為情趣服飾銷售的皮革或乳膠連身衣adult情趣連身衣
穿在襯衫外的皮革胸背帶ok衣服上的配件
穿在裸露皮膚上的綁縛帶adult情趣用品
萬聖節動物面具ok變裝服飾
幼犬角色扮演面具adult情趣面具
穿在洋裝外的身體鍊ok衣服上的珠寶
穿在裸露上半身的身體鍊adult單穿
像一般衣服般包覆的 Cosplay 服裝ok變裝服飾
內衣風格的動漫服裝adult性感化 Cosplay

完整的策略(包含各分級與標籤的規則)已與權重一同發布為 LABELLING_POLICY.md。

本文開頭的範例是我們在自家示範目錄上運作發布模型的結果。長袖泳衣是個很好的例子:雖然是長袖且正面有拉鍊,但下半身剪裁如同連身泳衣,因此虛擬試穿會顯示泳衣等級的包覆度,模型判斷為 revealing。而旁邊的繞頸運動內衣則以 0.97 的機率保持 ok。

我們的開發過程

資料: 我們從網路商店目錄中挑選了約 2,600 件商品(約 5,000 張照片),涵蓋了困難案例:內衣、迷你泳裝、情趣服飾、派對服飾、Cosplay 與寵物服飾,並加入了大量日常時尚服飾,以免模型過度攔截。我們只使用商品照片,絕不使用顧客照片。任何可能顯示未成年人處於暴露或性感環境的商品,都已從資料中永久移除。

標註: Claude 遵循書面策略,在查看所有照片並閱讀標題與描述後,對每件商品進行標註。人工審查員針對每個分級檢查校準範例並修正邊界案例,這些決策隨後也被納入策略中。該策略經過多次修改;例如,當我們確認多數內衣並不露骨後,就將 lingerie 分級從 adult 中獨立出來。

模型: 底層模型為 Google 的 SigLIP 2(so400m,patch 16,384 px),採用 Apache-2.0 授權。我們提供兩種變體:

變體大小內容
微調版 (預設)約 0.9 GB最後 6 個 transformer 區塊和池化層進行端到端訓練,搭配四個線性層
凍結版在 SigLIP 2 基礎上增加約 120 KB原始視覺編碼器,在照片嵌入特徵的平均值與最大值上應用邏輯迴歸分類器

系統會針對商品的所有照片進行綜合評分,因為一張照片中隱藏的細節往往會在另一張照片(如背面圖、布料特寫)中顯露。

我們也曾嘗試使用輸入相同策略的頂尖 LLM。雖然準確率相近,但每次呼叫大約需要 1.6 秒,且仍需為超時情況設定備用方案。而視覺分類器在 GPU 上處理每張照片只需幾十毫秒,每次都會給出相同的答案,並且可以在策略改變時重新訓練。

模型表現

我們對 2,596 件商品進行了五折交叉驗證:每件商品都由在訓練期間從未見過它的模型進行評分。

微調版凍結版
準確率,4 個分級94.6%94.2%
遺漏的成人商品,blocked 標籤534 件中遺漏 34 件534 件中遺漏 39 件
誤判為成人商品,blocked 標籤5255
內衣召回率90%89%
主體準確率99.2%
泳裝標籤準確率90.0%

依商品類別劃分(微調版,最高分級):

類別商品數量準確率
日常時尚目錄1,03297.5%
繩索與綁縛75100%
泳裝品牌23095.2%
內衣品牌12094.2%
動漫與 Cosplay6393.7%
情趣、內衣與寵物目錄63192.6%
異國風與迷你泳裝33091.8%
音樂節與派對服飾11585.2%

真正的迷你泳裝:95 件中成功攔截 91 件。

測試集刻意設計得具有挑戰性。在多數商店販售的日常時尚目錄上,準確率高達 97.5%。

限制

  • 透視內衣是最難界定的邊界。 乳頭或生殖器是否清晰可見,決定了商品是 lingerie 還是 adult,而外觀相似的商品可能分屬兩側。大多數的剩餘錯誤都發生在此。
  • 音樂節與派對服飾表現最弱。 漁網、網眼和水鑽設計容易使模型偏向 adult。
  • 以西方電子商務攝影風格為主。 對於風格差異極大的照片,準確率可能會較低。
  • 它分類的是商品,不是人。 請勿使用此模型來辨識人物或對人物做出決策。

如何使用

# pip install torch open_clip_torch safetensors huggingface_hub pillow
from huggingface_hub import hf_hub_download
import importlib.util

spec = importlib.util.spec_from_file_location(
    "tryon_safety",
    hf_hub_download("Genlook/tryon-safety-classifier", "tryon_safety.py"),
)
tryon_safety = importlib.util.module_from_spec(spec)
spec.loader.exec_module(tryon_safety)

clf = tryon_safety.TryOnSafetyClassifier.from_pretrained(
    "Genlook/tryon-safety-classifier", revision="v1.0"
)
pred = clf.predict(["front.jpg", "back.jpg"])  # 一件商品的所有照片
print(pred.level, pred.blocked, pred.subject, pred.swimwear, pred.ravewear)

請固定版本 revision="v1.0",確保更新不會在未經您選擇的情況下改變結果。推論過程只需 open_clip 和 torch,且權重為 safetensors 格式。

歡迎在 模型儲存庫 的 Discussions 分頁回報誤判情況,或提供下一版本的建議。

這對 Genlook 意味著什麼

Genlook 試穿 API 已經會在回傳虛擬試穿結果前,對每件商品進行檢查:成人和情趣商品將被拒絕,而泳裝、內褲和內衣則需要付費帳號才能使用。被拒絕的虛擬試穿會顯示 CONTENT_POLICY_VIOLATION 錯誤,並會退還扣除的額度(錯誤參考)。此分類器正是我們為了該檢查流程所打造的模型。

對於開發者而言,這意味著安全性已內建於 API 中,無需再額外開發相關機制。單一端點即可涵蓋所有商品類型,方案用戶每次虛擬試穿僅需 $0.02,大量使用可降至 $0.015(按需付費為 $0.04),新帳號還可獲得免費額度。

總結

  • 本次發布: 基於 SigLIP 2 開發、採用 Apache-2.0 授權的分類器,能透過商品照片預測商品虛擬試穿後的結果畫面。
  • 存在意義: NSFW 偵測器根據商品照片的像素進行判斷,這在虛擬試穿中是錯誤的切入點。三款 NSFW 偵測器在我們的標籤測試中,準確率僅有 48% 到 62%。
  • 輸出結果: 四個分級(ok、revealing、lingerie、adult),以及主體、泳裝和派對服飾標籤。
  • 準確率: 在刻意設計的高難度資料集中,四個分級的綜合準確率為 94.6%;在日常時尚類別中為 97.5%;在繩索與綁縛類別中為 100%。
  • 開源政策: 權重、推論程式碼與標註策略均已公開。訓練資料則未公開。

在 Hugging Face 取得模型、在 platform.genlook.app 取得 API 金鑰,或是在您的商店加入虛擬試穿功能。

常見問答

為您解答疑問。

什麼是虛擬試穿安全分類器?↓
為什麼不能將 NSFW 偵測器用於虛擬試穿?↓
它的準確率有多高?↓
我可以將它用於商業用途嗎?↓
Genlook 虛擬試穿 API 包含安全檢查嗎?↓

準備好降低退貨率並提升轉換率了嗎?

只需幾分鐘即可將 Genlook 安裝至您的 Shopify 商店。從免費方案開始體驗。

相關文章