=つまり「プロンプトの書き方」では本質的に解けない。後段の構造的ガイド(depth/keypoint)と再生成でしか根治しないことを最初に腹落ちさせるのが重要。
| # | パターン | 見た目 | 主因 | 有効な対策(章) |
|---|---|---|---|---|
| P1 | 多指/欠指 | 6本指・4本指・親指消失 | 指本数の制約欠如 | MediaPipe指本数判定→再生成(3,4,5) |
| P2 | 癒着指(fused) | 指が水かき状にくっつく | 高denoise解像度不足 | 手領域だけ高解像度inpaint(4,5) |
| P3 | 関節破綻 | 指が逆関節・捻れ・余分な節 | 3D構造の理解欠如 | MeshGraphormer depth拘束(5) |
| P4 | 融合手(mutated) | 手とモノ/別の手が融合 | 遮蔽データの学習不良 | 手bbox分離→個別inpaint(4) |
| P5 | サイズ異常 | 手だけ巨大/極小 | 遠近の学習不良 | ※MeshGraphormerはサイズ補正不可→手描き(6) |
| P6 | 背景溶け込み | 手の輪郭が消える/塗り潰れ | 手が小さく60px未満 | 低解像度時は2-passで拡大(4) |
| P7 | 足/つま先破綻 | 6本指足・甲の捻れ・踵欠損 | 足も希少データ | foot bbox + foot inpaint(8) |
| P8 | 複数人混線 | 誰の手か不明/腕が他人に接続 | 2人以上で領域曖昧 | 領域指定+OpenPose hand(7) |
この8分類をそのまま品質ゲートのチェック項目(9章)に落とすと、検出→修正の自動化が破綻パターン単位で設計できる。
| embedding | 対象モデル | 使い方 | 注意 |
|---|---|---|---|
| badhandv4 | SD1.5(SDXL変換版あり) | NEGに badhandv4 と書くだけ。embeddingsフォルダに .pt を配置[8] | CFG≧11で本領。低CFG運用(6.0)では効果が薄い点に注意 |
| lazyhand / lazyneg | Illustrious / NoobAI / Pony | Illustrious系で唯一手向けに最適化されたembedding。NEGに lazyhand[10] | 当方のwaiIllustrious_v160に最適。まずこれを採用 |
| BadHands SDXL (LyCORIS) | SDXL | 負の重みで適用し壊れた手を除去[8] | LyCORIS。掛けすぎると手が単調化 |
当方の量産設定(cfg6.0 dpmpp_2m karras)への推奨:NEG末尾に lazyhand を1つ追加するだけ。badhandv4は高CFG前提なので低CFG運用では過信しない。シンプルNEG(14タグ程度)+lazyhandが現実解。
「生成前から正しい手の構造を与える」予防策。手が主役の構図(ピース・握り・挿入の手など)で特に有効。
def hand_break_score(img, hand_bbox):
# 0.0(完璧)〜1.0(破綻) を返す。0.45以上で要修正→修正ループへ
score = 0.0
# (a) YOLO confidence が低い = 手と認識できない
if hand_bbox.conf < 0.50: score += 0.30
# (b) MediaPipe で 21 ランドマークが安定取得できない
lm = mediapipe_hands(crop(img, hand_bbox), min_detection_confidence=0.30)
if lm is None: score += 0.40 # そもそも手として読めない=重症
else:
# (c) 指先5点の間隔・角度の幾何チェック(癒着/多指)
if finger_count(lm) != 5: score += 0.35
if has_self_intersection(lm): score += 0.20 # 指の交差=逆関節
# (d) 手が小さすぎ(60px未満)は MeshGraphormer 不可 → 拡大2-passへ回す
if min(hand_bbox.w, hand_bbox.h) < 60: score += 0.10
return min(score, 1.0)
閾値はトフィーさんの目視と突き合わせてキャリブレーション。当面は0.45以上=自動修正、0.70以上=手描き候補としてフラグ。MediaPipeの min_detection_confidence=0.3 は破綻手も拾えるよう低めに設定[11]。
| 項目 | 推奨値 | 根拠/コメント |
|---|---|---|
| 検出モデル | hand_yolov8n.pt | 軽量。検出困難なら hand_yolov8s.pt に切替[3] |
| Detection confidence | 0.3(低め) | 破綻手も拾えるよう低く。誤検出が多いなら0.5〜0.64に上げる[5] |
| Inpaint denoise | 0.4〜0.5 | 0.8だと周囲のライティングから浮く。手の作り直しは0.4-0.5が安全圏[3][6] |
| Mask blur | 4〜8px | 境界をなじませる |
| Mask dilation | +4〜+8px | 手首の付け根まで含めて自然に |
| Inpaint幅×高 | 512×512 以上 | 手領域を高解像度で作り直す=指の解像度が10倍に[6] |
| モデル多重掛け | face → hand の順でタブを分ける | 1タブ1モデル。顔の後に手を実行[5] |
既存の量産コードは KSamplerのみで FaceDetailer/手Detailerが未接続=手ガビガビの主因。Impact Packの FaceDetailer ノードをhand_yolov8n指定で2個目を直列接続するのが最速改善[7](顔Detailerと同じ要領)。
原理:MeshGraphormer(FreiHANDベンチSOTAの手メッシュ復元)で正しい指本数・形の3Dメッシュを再構築→depthマップ生成→手領域マスク生成。これを control_sd15_inpaint_depth_hand(手特化のfinetune済ControlNet)に与えて手だけ作り直す。手以外は一切触らない[4][5]。
| 要素 | 名称 | 入手/配置 |
|---|---|---|
| 前処理ノード | MeshGraphormer-DepthMapPreprocessor(=MeshGraphormer Hand Refiner) | カスタムノード comfyui_controlnet_aux に同梱[5] |
| ControlNet | control_sd15_inpaint_depth_hand | HuggingFace(hr16/ControlNet-HandRefiner-pruned 等)→ models/controlnet[4] |
| 出力 | depthマップ + 手だけのマスク | 1ノードで両方出る |
LoadImage(崩れた画像) ├─→ MeshGraphormer-DepthMapPreprocessor │ ├─ DEPTH_MAP ─┐ │ └─ MASK ───────┼─→ (手領域だけのマスク) │ │ ControlNetApply(control_sd15_inpaint_depth_hand, image=DEPTH_MAP) │ │ VAEEncodeForInpaint(pixels=元画像, mask=MASK) │ │ KSampler(denoise=0.40〜0.55, cfg=6.0, dpmpp_2m karras, steps=25〜30) │ VAEDecode → 手だけ差し替わった画像
D:\projects\fanza3_mass\hand_bank\ に蓄積を推奨。| 状況 | 処理 |
|---|---|
| 形は手・指本数だけズレ・60px以上 | → MeshGraphormer(5章)で全自動 |
| 癒着・小さい・潰れ気味 | → 2-pass拡大 inpaint(4章) |
| サイズ異常・判別不能・複数人混線の手 | → CLIP STUDIO 手描き/移植(本章) |
| 商品の表紙・サムネの主役の手 | → コストかけてでも手描き仕上げ(売上直結) |
2人以上=「誰の手か」が曖昧になり、腕が他人に接続・手が増殖・絡む指がグチャる。さらに拘束(手錠・縛り)や挿入の手は遮蔽が重なる=学習データが最も希少な領域。当方の 2girls/group破綻の既知問題[既]と同根。
現実解:複数人の絡みは1枚絵で全部入れず、手元アップは別カットに分ける構図設計が、量産品質を最も上げる(=9章の「構図簡素化」と接続)。
extra toes, fused toes, malformed feet, deformed ankle。足フェチ需要のあるR18では特に品質が売上に直結。personbbox下部1/4を足領域として切り出す簡易ロジックで代替→MediaPipe Poseで足首・つま先の幾何を検証。当方の品質ゲート(r18_quality_gate.html / gate.json / preflight() が sys.exit(2) でブロック)に、手足チェックを物理強制項目として追加する。これが本DRの最終アウトプット。
| # | チェック項目 | 判定 | NG時 |
|---|---|---|---|
| H1 | 全ての手で指=5本か(MediaPipe) | 自動 | 修正ループ |
| H2 | 癒着指/水かきが無いか | 自動+目視 | 2-pass inpaint |
| H3 | 逆関節/捻れが無いか | 目視 | MeshGraphormer or 手描き |
| H4 | 手のサイズが体に対し自然か | 目視 | 手描き(P5) |
| H5 | 手の増殖/腕の誤接続が無いか(複数人) | 自動(bbox数)+目視 | 領域分離 or 手描き |
| F1 | 足の指=5本・甲が自然か | 目視 | 足inpaint/手描き |
| F2 | 関節(肘膝手首)が逆/捻れていないか | 目視 | OpenPose再生成 |
| K1 | 破綻スコア(3章)全手 < 0.45 か | 自動 | 0.45以上=自動修正、0.70以上=手描きフラグ |
| K2 | 絡み/拘束の手の前後関係が正しいか | 目視 | 手描き |
"hand_foot_gate": {
"auto": {
"yolo_hand_model": "hand_yolov8n.pt",
"yolo_conf_min": 0.30,
"mediapipe_min_detection_confidence": 0.30,
"break_score_threshold_fix": 0.45,
"break_score_threshold_manual": 0.70,
"require_finger_count": 5
},
"visual_checklist": ["H3","H4","H5","F1","F2","K2"],
"on_fail": "route_to_repair_pipeline",
"block_if": "any hand break_score >= 0.45 unresolved"
}
既存の9軸加重ゲート(抜ける度/一貫性/エロ等)に「手足整合」を10軸目として加重15で追加するのが落とし所。手破綻はクレーム/低評価レビュー直結のため重みを高めに。
[1] txt2img生成 (waiIllustrious_v160, cfg6.0)
NEG末尾に lazyhand を1つ追加
手主役カットは OpenPose(hand)/Depth CN で予防
│
[2] FaceDetailer (face_yolov8s.pt) ─ 既存
│
[3] HandDetailer (hand_yolov8n.pt, denoise0.4-0.5) ★新規直列追加 ← 7割ここで解決
│
[4] 破綻スコア判定 (YOLO conf + MediaPipe 指本数)
├ score < 0.45 → 合格 → 出力
├ 0.45〜0.70 → MeshGraphormer Refiner (depth inpaint denoise0.45)
│ └ 60px未満なら 2-pass拡大inpaint
└ score ≧ 0.70 → 手描きフラグ立て → CLIP STUDIO行きキュー
│
[5] 品質ゲート hand_foot_gate (gate.json)
block_if break_score≧0.45 未解決 → sys.exit(2)
│
[6] 合格画像のみ量産フォルダへ
lazyhand 追加(コスト0・効果中)| DR | 関係 | 役割分担 |
|---|---|---|
| DR_手指解剖崩れ防止_最適NEG_2026-05-23.html | 前身 | あちらはNEG設計に特化。本DRは予防〜検出〜修正〜手描き〜ゲートの全工程版(superset)。NEG詳細はあちらを参照 |
| DR_AI線画クリスタ手描き仕上げハイブリッド_2026-05-30.html | 上位 | クリスタ仕上げ全般。本DRは「手足」特化の手描き手順を提供 |
| DR_R18品質ドリフト根本原因_..._2026-05-30.html | 並列 | 顔/肌/体型/小物のドリフト。手足は本DRが担当(軸分担) |
| DR_ControlNet_R18応用_領域指定複数キャラ後修正_2026-05-30.html | 並列 | 複数人領域指定。本DRの7章はそれを手足整合に応用 |
| DR_R18_CG品質指標化_科学的管理_2026-05-26.html / DR_R18販売品質チェックリスト完全版_2026-05-29.html | 受け皿 | 本DRの9章チェック項目を統合先ゲートへ反映 |
| DR_キャラLoRA学習_三面図データセット_R18一貫性_2026-05-30.html | 並列 | 手LoRAの学習手順はLoRA学習DRの方法論を流用可 |
重複判定:新規作成OK。既存「手指崩れ防止NEG」DRは予防(NEG)のみで本DRの2-1に内包される一部分。検出・自動修正・手描き・複数人・足・品質ゲート化は本DRが初出のため、更新ではなく新規が適切。
相互リンク(社内DR・[既]=前身/[相]=関連):[既]手指解剖崩れ防止NEG_2026-05-23 / [相]AI線画クリスタ手描き仕上げ_2026-05-30 / [相]R18品質ドリフト根本原因_2026-05-30 / [相]ControlNet_R18応用_領域指定複数キャラ後修正_2026-05-30 / R18_CG品質指標化_2026-05-26 / R18販売品質チェックリスト完全版_2026-05-29(いずれも D:\市場調査資料\ 内)
著者:にゃんちゅ~Lab Deep Research / 2026-05-30 / 個人情報(健康・家族・本名・婚姻状況)は一切記載していません。