Technology公開: October 7, 2026執筆: Thibault Mathian

バーチャル試着向けセーフティ分類モデル:コンテンツモデレーション用オープンモデル

商品画像からバーチャル試着後の結果を予測する「Virtual Try-On Safety Classifier」をApache-2.0でオープンソース化しました。既存のNSFW検出では対応できない理由から、構築方法、評価スコアまで解説します。

目次

本日、Hugging FaceにてVirtual Try-On Safety ClassifierをApache-2.0ライセンスのもとで公開しました。これは商品画像を解析し、「ユーザーがこれを試着したら、生成される画像はどんなものになるか?」という1つの問いに答えるモデルです。

私たちは、このモデルをバーチャル試着モデルに商品データを渡す前のフィルタリング機能として構築しました。任意の画像を扱うあらゆる試着サービスが同様の課題に直面しているため、モデル本体、ラベル付けのポリシー、そして評価結果をすべて公開することにしました。

Genlookのデモカタログから抽出した8つの商品画像と分類結果。スポーツブラ、ボードショーツ、クロップドジャケットはok。水着3点はrevealing。犬用ハーネスはokかつpetタグ。ウィッグはokかつnot clothingタグ。
Genlookのデモカタログから抽出した8つの商品画像と分類結果。スポーツブラ、ボードショーツ、クロップドジャケットはok。水着3点はrevealing。犬用ハーネスはokかつpetタグ。ウィッグはokかつnot clothingタグ。

既存のNSFW検出がバーチャル試着で機能しない理由

バーチャル試着は、人物の写真と商品の写真を入力とし、その人物が商品を着用した画像を返します。リスクが生じるのは出力結果ですが、生成前に確認できるのは「商品の写真」だけです。

一般的なNSFW(職場閲覧注意)検出器は、与えられた画像のピクセルを判定します。しかし、商品画像に対してそのアプローチは適切ではありません。

  • ランジェリーの平置き画像にヌードは含まれない。 しかし、試着後の画像にはランジェリー姿のユーザーが写ります。
  • 白背景のニップレスは数センチの布切れにすぎない。 しかし、試着後の画像はトップレス状態になります。
  • マネキンが被るフェティッシュフードに露骨な描写はない。 しかし、依然としてアダルト商品です。
  • ネックレスのみを身につけたヌードモデルの写真は露骨である。 しかし、ネックレス自体は通常の商品です。

3つの人気オープンNSFW画像分類モデル(NudeNet、nsfw-vit、Falconsai)を、ラベル付け済みの初期データ141点でテストしたところ、私たちが定義したラベルとの一致率はわずか48〜62%でした。一方、GoogleのShieldGemma 2にこの課題に特化したカスタムポリシーを与えた結果、71.6%に達しました。モデル自体は正常に機能しているのですが、「問われている内容が違う」のです。

モデルが予測する内容

各商品は、深刻度順に以下のレベルに分類されます。

レベルバーチャル試着の出力結果例
ok通常の服装普段着、スポーツウェア、ウェットスーツ、服と同じ露出度のコスプレ、アクセサリー
revealing水着レベルの露出ビキニ、水着、メンズ下着、補正下着、マイクロショーツ、大半のフェス用ウェア
lingerie女性用下着(親密な部分が見えない)ブラ、パンティー、ランジェリーセット、ボディスーツ、ガーター、ランジェリーとして着用するコルセット
adult親密な部分が露出している、または性的な商品マイクロ水着、ニップレス、シースルー、オープンカップ、BDSMやフェティッシュウェア、セクシーなロールプレイ衣装

レベルに加えて、以下の3つの追加出力が提供されます。

  • subject:human_clothing、pet、またはnot_clothing。商品画像だけでは犬用ハーネスとボンデージハーネスは似て見えます。ウィッグ、化粧品、日用品は衣類ではない(not clothing)と判定されます。
  • swimwear:regular、near_micro、またはmicro。regularとnear microはrevealing、microはadultになります。商品名にある「マイクロキニ」という言葉は決定打にならず、写真で判断されます。
  • ravewear:true または false(フェス用衣装向け)。レベルには影響しませんが、フェス用ウェアはモデルが最も迷いやすいカテゴリであるため、判断材料として役立ちます。

これらのレベルは、商品や店舗ではなく「出力結果」を説明するものです。どのレベルを許可するかはターゲット層によって異なります。ランジェリーブランドならlingerieを許可しますが、子供向けマーケットプレイスならrevealingをブロックするかもしれません。また、このモデルはblockedフラグ(adultになる確率が0.3以上)も返します。わずかな誤判定の増加と引き換えに、トップレベル判定単独よりも多くのアダルト商品をブロックできます。

判断が難しいケース

大半の商品は簡単に分類できます。ポリシーが存在するのは判断に迷うケースのためであり、すべてのルールは実際の商品の判定から生まれたものです。

商品レベル理由
ジムウェアとして販売されているスポーツブラok公の場でトップスとして着用される
ランジェリーのブラレットとして販売されている同じカッティングのものlingerie女性用下着
写真で乳首がはっきり見えるレースのブラadult乳首部分が透けている
メンズボクサーパンツrevealing水着レベルの露出
ウェットスーツ、ラッシュガード、ブルキニok全身を覆っている
レザーパンツ、ラテックス風ドレスokファッションアイテム
フェティッシュウェアとして販売されているレザーやラテックスのキャットスーツadultフェティッシュスーツ
シャツの上に着用するレザーのチェストハーネスok服の上のアクセサリー
素肌に着用するストラップハーネスadultフェティッシュアイテム
ハロウィンの動物マスクokコスチューム
パッププレイ用マスクadultフェティッシュマスク
ドレスの上から着用するボディチェーンok服の上のジュエリー
素肌の胴体に着用するボディチェーンadult何も着ていない上に着用
服と同じ露出度のコスプレokコスチューム
ランジェリー風のアニメ衣装adult性的対象化されたコスプレ

各レベルやタグのルールを網羅した完全なポリシーは、重みファイルとともにLABELLING_POLICY.mdとして公開しています。

この記事の冒頭にある例は、私たちのデモカタログで公開モデルを実行した結果です。長袖の水着は良い例です。長袖でフロントジッパーが付いていますが、ボトムスがワンピースのようなカッティングになっているため、試着結果は水着レベルの露出となり、モデルはrevealingと判定しました。カタログでその隣にあるホルターネックのスポーツブラは、0.97の確率でokのままです。

構築プロセス

データ。 判定が難しいケース(ランジェリー、マイクロ水着、フェティッシュウェア、フェス用ウェア、コスプレ、ペットウェア)をカバーするため、オンラインショップのカタログから約2,600点(約5,000枚の写真)を厳選しました。モデルが過剰にブロックしないよう、日常的なファッションも多く含めています。使用するのは商品の写真のみで、ユーザーの写真は一切使用していません。未成年者が露出の高い、あるいは性的な文脈で表示される可能性のある商品は、データから完全に除外しました。

ラベル付け。 ポリシーに基づき、Claudeにすべての写真、タイトル、説明文を読み込ませて全商品にラベル付けを行いました。その後、人間のレビュアーが各レベルのキャリブレーション用サンプルを確認し、境界事例を修正。その結果をポリシーにフィードバックしました。ポリシーは何度も改訂されました。例えば、大半の下着は露骨ではないことが明確になったため、lingerieレベルはadultから分離されました。

モデル。 ベースモデルはGoogleのSigLIP 2(so400m、パッチ16、384px、Apache-2.0)です。2つのバリアントを提供しています。

バリアントサイズ内容
finetuned(デフォルト)約0.9GB最後の6つのTransformerブロックとプーリングヘッドをエンドツーエンドで学習。4つの線形ヘッド付き
frozenSigLIP 2の上に約120KB元のビジョンタワー。写真の埋め込みの平均と最大値に対するロジスティックヘッド

背面画像や生地のアップなど、1枚の写真では見えない情報が別の写真に隠されていることが多いため、1つの商品に対してすべての写真を使ってスコアリングします。

同じポリシーをプロンプトとして最先端のLLMにも試しました。精度は近かったものの、1回の呼び出しに約1.6秒かかり、タイムアウト時のフォールバックも必要でした。ビジョン分類モデルなら、GPU上で写真1枚あたり数十ミリ秒で実行でき、常に同じ回答を返し、ポリシー変更時の再学習も可能です。

精度評価

2,596件の商品データを用いた5分割交差検証を実施。各商品は、学習時に一度も見たことのないモデルによってスコアリングされました。

finetunedfrozen
4レベルの精度94.6%94.2%
blockedフラグにおけるアダルト商品の見逃し534件中34件534件中39件
blockedフラグにおけるアダルトの誤判定52件55件
ランジェリーの再現率90%89%
subjectタグの精度99.2%
swimwearタグの精度90.0%

商品カテゴリ別(finetuned、トップレベル):

カテゴリ商品数精度
日常ファッションのカタログ1,03297.5%
ロープおよびボンデージ75100%
水着ブランド23095.2%
ランジェリーブランド12094.2%
アニメ・コスプレ6393.7%
フェティッシュ、ランジェリー、ペット用カタログ63192.6%
エキゾチック・マイクロ水着33091.8%
フェス・レイブウェア11585.2%

真のマイクロ水着:95件中91件を検出。

このテストセットは意図的に難易度を上げています。多くの店舗が扱うような日常ファッションのカタログでは、97.5%の精度を達成しています。

制限事項

  • 透け感のあるランジェリーが最も難しい境界線です。 乳首や性器がはっきりと見えるかどうかがlingerieとadultの分かれ目となりますが、よく似た商品が両方に存在します。残るエラーのほとんどがここに集中しています。
  • フェス・レイブウェアが最も苦手なカテゴリです。 フィッシュネット、メッシュ、ラインストーンなどは、モデルをadult判定に傾かせます。
  • 主に欧米のEC写真に基づいています。 写真のスタイルが大きく異なる場合、精度が低下する可能性があります。
  • 人物ではなく商品を分類するものです。 個人の特定や、個人に関する意思決定には使用しないでください。

使い方

# 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"])  # 1つの商品のすべての写真
print(pred.level, pred.blocked, pred.subject, pred.swimwear, pred.ravewear)

予期せぬアップデートによる結果の変動を防ぐため、revision="v1.0"を固定してください。推論に必要なのはopen_clipとtorchのみで、重みはsafetensorsフォーマットです。

誤検知、検知漏れ、次期バージョンへのアイデアなどがありましたら、モデルリポジトリのDiscussionsタブまでお気軽にお寄せください。

Genlookのサービスへの適用

Genlook Try-On APIではすでに、バーチャル試着結果を返す前にすべての商品をチェックしています。アダルトおよびフェティッシュ商品は拒否され、水着や下着、ランジェリーは有料アカウントが必要です。拒否されたバーチャル試着はCONTENT_POLICY_VIOLATIONとして失敗し、クレジットは返還されます(エラーリファレンス)。この分類モデルは、まさにそのチェックのために私たちが構築したものです。

開発者にとっては、安全性への対応がAPIの一部として組み込まれていることを意味し、自前で構築する必要がなくなります。1つのエンドポイントであらゆる商品タイプをカバーし、有料プランでは1回のバーチャル試着あたり0.02ドル(大口の場合は0.015ドルまで低下)、従量課金では0.04ドルで利用可能です。新規アカウントには無料クレジットが付与されます。

まとめ

  • 今回のリリース: 商品画像からバーチャル試着結果を予測する、SigLIP 2ベースのApache-2.0分類モデル。
  • 開発の背景: 一般的なNSFW検出は商品画像のピクセルを判定するため、バーチャル試着には適していません。既存の3モデルでテストしたところ、私たちの一致率は48〜62%にとどまりました。
  • 出力: 4つのレベル(ok、revealing、lingerie、adult)に加え、subject、swimwear、ravewearのタグを出力します。
  • 精度: 意図的に難易度を上げたデータセットにおいて、4レベル全体で94.6%。日常ファッションでは97.5%、ロープやボンデージでは100%の精度。
  • オープンソース: 重み、推論コード、ラベル付けポリシーを公開しています。学習データは非公開です。

Hugging Faceでモデルを入手する|platform.genlook.appでAPIキーを取得する|ストアにバーチャル試着を追加する

FAQ

疑問にお答えします。

Virtual Try-On Safety Classifierとは何ですか?↓
バーチャル試着にNSFW検出モデルを使わないのはなぜですか?↓
精度はどのくらいですか?↓
商用利用は可能ですか?↓
Genlookのバーチャル試着APIにはセーフティチェックが含まれていますか?↓

返品を削減し、コンバージョンを向上させる準備はできましたか?

数分でShopifyストアにGenlookをインストールできます。まずは無料プランから始めましょう。

関連記事