scoring_rubric は画像“生成”用であってアップロード画像のVLM採点には使えない(最大の誤解ポイント)。CC3の3AIスクリプトは「Grok最優先→拒否したモデルは自動スキップ」のアンサンブルに作り替えるのが最短。
① クラウドでR18画像の数値採点を安定して通せるのは Grok 系のみ(grok-4.3 / grok-2-vision-1212)。Gemini・Qwen・Llama はビジョンNSFWで拒否が出やすく主力に据えられない[3]。
② ローカル保険は ToriiGate-v0.4-7B。「any kind of NSFW activities without any borders or censorship」を公式に明記する唯一級のアート特化VLM[5]。Apache 2.0で商用可・VRAM 8〜16GBで動く。
③ 役割分担が最短:点数化=Grok / 属性・タグ検出=ToriiGate / 婉曲なしの詳細キャプション=JoyCaption。1モデルに全部やらせない。
CC3の体感(Grok以外は拒否・タイムアウト頻発)は構造的な理由がある。Gemini / Qwen / Llama はいずれもAPI側 or モデル側に強い安全レイヤを持ち、性的に露骨な画像入力に対して「私はこの画像を説明できません」系のrefusalを返す。OpenRouterの :beta(self-moderated)エンドポイントを使っても、これはOpenRouter側のモデレーションを外すだけで、モデル内部のガードは残る[8]。一方Grokは画像“生成”は厳しい(後述)が、画像“入力の説明・採点”は相対的に通りやすいという実運用報告が複数ある[3]。CC3が「Grokだけ安定」に行き着いたのは正しい観測。
| 層 | 採用 | 用途 | 拒否耐性 |
|---|---|---|---|
| 主力(クラウド) | grok-4.3(xAI直 or OpenRouter) | 0-100の数値採点+批評文 | 高 |
| 主力2 | grok-2-vision-1212 | 採点のセカンドオピニオン(安価枠) | 高 |
| ローカル保険 | ToriiGate-v0.4-7B | 無検閲タグ/属性/シーン把握・オフライン | 最高(無検閲明記) |
| 補助 | JoyCaption Beta One | 婉曲なし詳細キャプション(プロンプト改善材料) | 中(稀にrefusal) |
| 条件付き | DeepInfra Qwen2.5-VL-72B | プロバイダ次第で通る時のみ第3票 | プロバイダ依存 |
「クラウド拒否しない3-4モデル」をCC3が望む形に落とすと、現実はGrok 2系統(4.3 と 2-vision)+ ToriiGate + JoyCaption の4本立てが2026年6月の最適解。Gemini/Qwen/Llamaは“通ったら加点票”扱いに格下げする。
「画像をLLMに見せて点数を付けさせる」VLM-as-Judge は2025〜2026で実用域に入った。一般画像の理解は Qwen2.5-VL-72B が MMBench-EN 88.6、文書理解で Claude 4.7 に匹敵しつつ30〜40分の1のコストという水準[9]。問題は性能ではなく「R18を見せた瞬間に拒否されるか」。採点品質はどのモデルも十分高く、ボトルネックは100%「refusalとタイムアウト」に集約される。これはCC3の現場感と完全に一致する。
| 系統 | 得意 | 代表 | NSFW |
|---|---|---|---|
| 汎用VLM採点(数値+批評) | 構図/エロ度/破綻/写植の総合点と日本語講評 | Grok-4.3 | 通る |
| 専用キャプション/タガー | 露出・体位・タグ網羅・属性の機械的抽出 | ToriiGate / JoyCaption / WD-Tagger | 無検閲 |
重要な区別:ToriiGate / JoyCaption は「点数を出すモデル」ではない。これらは「この画像には fellatio, cum, blush, school uniform が写っている」と客観タグ/キャプションを吐くのが本職[4][5]。点数化したいなら(a)別途プロンプトで「以下の観点で0-100」と指示するか、(b)タグ抽出はToriiGate・点数化はGrok、と役割分担する。後者が安定。
R18 AI同人の量産が一般化し、「生成した数百枚から売れる絵を機械選別したい」需要は同人クリエイター全体に存在する(既存DR17/06-09でも繰り返し論点化)。だが大手クラウドVLMは軒並みNSFW入力を拒否するため、「拒否しない採点AI」は供給が薄い=ノウハウ自体に希少価値がある。本DRの組み合わせはそのまま量産QAゲートの中核になる。
「R18画像を見せて拒否せず採点/記述できるか」を最重視した実用ランキング。各値は脚注の一次情報に基づき、未確認は明記。
| # | モデル/API | Vision | NSFW入力許容 | 経路 | 料金(目安) | Context |
|---|---|---|---|---|---|---|
| 1 | Grok-4.3 | ○ | 採点◎ | xAI / OpenRouter | 入$1.25/出$2.50 per 1M[1] | 1M |
| 2 | ToriiGate-v0.4-7B | ○ | 無検閲明記◎ | ローカル(HF) | 無料(自前GPU)[5] | — |
| 3 | grok-2-vision-1212 | ○ | 記述○ | xAI / OpenRouter | 入$2/出$10 per 1M[2] | 33K |
| 4 | JoyCaption Beta One | ○ | 無検閲だが稀にrefusal | ローカル(HF) | 無料(VRAM17GB)[4] | — |
| 5 | ToriiGate-v0.4-2B / 0.5 | ○ | 無検閲 | ローカル | 無料(軽量)[6] | — |
| 6 | Pixtral Large (124B) | ○ | safe_prompt省略で薄め | Mistral / OpenRouter | 要確認[11] | 128K |
| 7 | DeepInfra Qwen2.5-VL-72B | ○ | プロバイダ依存 | DeepInfra / OpenRouter | 要確認[10] | 131K |
| 8 | InternVL3.5-20B-A4B (MoE) | ○ | NSFW挙動 要確認 | ローカル / API | 無料/要確認[9] | — |
| 9 | MiniCPM-V 2.6 | ○ | 軽量・要確認 | ローカル | 無料(エッジ可)[12] | — |
| 10 | Gemini-2.5-flash / Qwen2.5-VL-72B素 / Llama-3.2-Vision | ○ | 採点で頻繁に拒否 | OpenRouter等 | — | — |
表の「要確認」は誠実に未検証だと明記する。導入前に必ず自前のR18テスト画像3枚で実測すること。特に (a)DeepInfra経由Qwen2.5-VL-72B、(b)Pixtral Large(safe_prompt無し)、(c)Mistral系は「日によって/プロバイダによって」挙動が揺れる。Grok・ToriiGateは安定が確認できているので、この3つは“通ったらラッキー”の第3票扱いにする。
OpenRouter・xAI ともOpenAI互換。/v1/chat/completions に content配列で text → image_url の順で送る。ローカルのR18画像は公開URLに置けないのでbase64データURL一択。対応形式は png/jpeg/webp/gif[7]。
{
"model": "x-ai/grok-4", // OpenRouter slug 例。xAI直なら "grok-4.3"
"messages": [{
"role": "user",
"content": [
{ "type": "text",
"text": "あなたはR18同人CGの審査員。次の9軸を各0-10で採点しJSONで返す: 抜ける度/構図/エロ表現/解剖学(手指)/写植可読性/顔の魅力/色/塗り/全体。減点理由も短く。" },
{ "type": "image_url",
"image_url": { "url": "data:image/jpeg;base64,/9j/4AAQ..." } }
]
}],
"temperature": 0.2,
"max_tokens": 1200
}
base=Qwen2-VL、90万枚のアート学習。Apache 2.0で商用可。booruタグgrounding(<tags>...</tags>)とJSON出力に対応し、複数キャラ名も扱える[5]。7B(実体8Bパラ)・2B版・exllamav2量子化(8/6/4bpw)があり、4bpwなら8GB VRAMでも動く。RTX 3090(24GB)ならbf16でも余裕。
# transformers + qwen_vl_utils(公式手順)。JSON採点プロンプト例: prompt = ( "Describe the picture in structured json-like format. " "Also rate: exposure(0-10), anatomy_ok(0-10), composition(0-10), " "appeal(0-10). Output JSON only.\n" "<tags>1girl, solo</tags>" # groundingで精度UP(任意) ) # exllamav2量子化で高速化したい場合は 4bpw/6bpw 重みを使用
HFモデル名 fancyfeast/llama-joycaption-beta-one-hf-llava。「open, free, uncensored」を掲げSFW/NSFWを等量カバー、婉曲表現をしないのが最大の価値[4]。bf16でVRAM約17GB(24GB GPUで快適)、8bit/4bit量子化可。vLLMが最速。
vllm serve fancyfeast/llama-joycaption-beta-one-hf-llava --max-model-len 4096 # OpenAI互換APIが立つ → base_url を localhost に向けて既存コードを流用
| 項目 | 導入前(手動) | 導入後(Grok+ToriiGate) |
|---|---|---|
| 1枚の品質判定 | 目視 約20-40秒 | 自動 数秒・無人 |
| 500枚バッチ選別 | 人手 3-5時間 | ~15分(API)+目視は上位のみ |
| refusalで止まる確率 | —(Gemini/Qwenだと中断多発) | ローカルToriiGateで必ず1票確保→ゼロ |
| 月額API費用 | 0(だが人件・時間) | ~¥240-500(推定) |
本質的価値はコスト削減より「止まらないこと」。Gemini/Qwen依存だとバッチの途中でrefusalが出て無人運用が崩れる。ローカルToriiGateを1票として常時確保すれば、クラウドが全拒否してもパイプラインは止まらない。歩留まり改善の具体数値は作品依存のため要実測(推定明記)。
| 期間 | やること | 完了条件 |
|---|---|---|
| Day 1-3 | grok-4.3採点プロンプト確定(9軸JSON)・自前R18テスト10枚でGrok通過率を実測 | 10枚中9枚以上で数値JSONが返る |
| Day 4-7 | ToriiGate-v0.4-7B(まず4bpw exllamav2)をローカル導入・ComfyUIとVRAM共存確認 | オフラインでタグ+JSONが出る |
| Day 8-12 | アンサンブル実装:Grok主票+grok-2-vision+ToriiGate常時票。refusal検出→自動スキップ・指数バックオフ | クラウド全拒否でも1票で完走 |
| Day 13-18 | DeepInfra Qwen-VL / Pixtralを「通ったら加点票」として実測投入・通る組合せを記録 | 第3票の可否が確定 |
| Day 19-24 | 既存 r18_quality_gate / gate.json と接続・Killスイッチ(決定論)を前段に | 量産ドライバのpreflightがスコアで分岐 |
| Day 25-30 | 500枚バッチ実運用・採点とトフィー目視の一致率を測定・閾値調整 | 上位選別が目視と概ね一致 |
scoring_rubric/scoring_prompt は画像“生成”用(Sourceful Riverflow V2.5)であり、アップロードしたR18画像をVLMで採点する用途には使えない[14]。ここを混同すると沼る。採点は普通の chat/completions+自前プロンプトでやる。:beta(self-moderated)はOpenRouter側モデレーションを外すだけ。モデル内部のNSFWガードは残るので、Geminiが拒否するものは:betaでも拒否[8]。--max-model-len を小さくしすぎると長文採点が途中で切れる。採点だけなら4096で足りるが、長講評を求めるなら拡大。現状の「grok / gemini / qwen を等しく叩いて多数決」は、Gemini/Qwenが拒否するとその票が欠落し合議が崩れる。「Grok最優先+拒否は自動スキップ+ローカル常時票」へ作り替える。擬似コード:
def ensemble_score(image_b64):
votes = []
# 主力:Grok系(拒否されにくい)
for m in ["grok-4.3", "grok-2-vision-1212"]:
r = call_with_retry(m, image_b64, max_retry=3) # 指数バックオフ
if r and not is_refusal(r):
votes.append(parse_scores(r))
# 任意:通れば加点票(拒否は即スキップ・リトライしない)
for m in ["deepinfra/qwen2.5-vl-72b", "pixtral-large"]:
r = call_once(m, image_b64, timeout=40)
if r and not is_refusal(r):
votes.append(parse_scores(r))
# ローカル保険:必ず1票(オフライン・拒否ゼロ)
votes.append(toriigate_local(image_b64)) # exllamav2 4bpw
return aggregate(votes) # 中央値+外れ値除去+Killスイッチ
REFUSAL_MARKERS = ["できません","I can't","I'm unable","cannot assist",
"policy","適切でない","お答えできません"]
def is_refusal(text):
t = text.lower()
return any(k.lower() in t for k in REFUSAL_MARKERS) or len(text) < 20
grok_router_costs.jsonl)。既存 D:\projects\fanza3_mass\scripts\grok_router.py はテキスト用。vision採点用に ask_vision(prompt, image_b64, kind) を追加するのが綺麗。content配列(text+image_url)に組み替えるだけで、コストログ機構(grok_router_costs.jsonl)・モデル切替プロファイルをそのまま流用できる。grok-4.3は既にプロファイルにあるので kind="dr_world_top" のmodelを採点に再利用可。
curl 8188/queue で他CCの稼働確認 ③ComfyUIと別GPUに割当 or 採点はComfyUIアイドル時にバッチ実行 ④メモリ番人(_mem_guard)常駐。JoyCaption bf16(17GB)とComfyUIの同時常駐は避ける。| 軸 | 点 | 根拠 |
|---|---|---|
| 網羅性 | 23/25 | クラウド(Grok/Gemini/Qwen/Pixtral)+ローカル(ToriiGate/JoyCaption/MiniCPM/InternVL/WD-Tagger)を実名で網羅。OpenRouter挙動・xAI許容・アンサンブル・VRAM・規約まで12章で被覆。CogVLM/Molmo/QVQは情報が薄く深掘りせず触れる程度に留めた点で-2。 |
| 実用性 | 25/25 | 送信JSON・vLLM起動・アンサンブル擬似コード・refusal検出マーカー・CC3スクリプト改修方針・ComfyUI同居VRAM注意まで、明日コピペで動かせる粒度。 |
| 裏取り | 24/25 | 14脚注すべて実在URL(公式GitHub/HF/xAI/OpenRouterドキュメント中心)。未確認は「要確認」と明示。scoring_rubric誤解を一次ドキュメントで是正。Pixtral/DeepInfra/MiniCPMのNSFW実許容を未実測と正直に明記した分-1。 |
| 最新性 | 23/25 | 2026-06時点のGrok-4.3価格・ToriiGate-0.4/0.5・JoyCaption Beta One・OpenRouter scoring_rubric等を反映。一部finetune版(AiCloser等)のNSFWビジョン実挙動は未検証-2。 |
合計 95/100。さらに上げるには:CC3が自前R18画像3枚で「DeepInfra Qwen-VL / Pixtral / MiniCPM の実拒否率」を実測し本DRに追記すれば 98+ に到達。