属性リーク検証 — 色と対象をカンマで区切ると色が漏れるか

属性リーク検証 — 色と対象をカンマで区切ると色が漏れるか

結論

属性リーク(色の漏れ)は発生しなかった

3パターン x 3seed = 9ペアのすべてで、色が意図しないオブジェクトに漏れる現象は確認されませんでした。赤い目、青いドレス、緑の髪、金色のセーターといったリークは0件です。

代わりに「色の迷子」が発生する

パターン1(red, dress, blue, eyes)で観察された問題は、色の「漏れ」ではなく**色の「消失」**でした。

現象説明
色の漏れ(予想していた問題)blueがドレスに適用される → 発生せず
色の迷子(実際に起きた問題)blueがどのオブジェクトにも適用されず消失 → 分離版で2/3ペアで発生

分離形式でblueeyesがカンマで切れていると、CLIPがblueをどの対象に結びつけるか曖昧になり、結果として色の指定が無視される方向に失敗します。

実用上の推奨

状況推奨
色と対象が対応する場合隣接させるred dress, blue eyes
一般的な組み合わせ(白シャツ+黒スカート等)分離しても問題ないが、隣接が安全

色と対象は隣接させて書くのがベストプラクティスです。リークは起きませんが、分離すると色の指定が消失するリスクがあります。

疑問

プロンプトの書き方として、よく「色と対象は隣接させるべき」と言われます。

  • 分離: red, dress, blue, eyes — 色と対象がカンマで分かれている
  • 隣接: red dress, blue eyes — 色と対象がひとまとまり

分離すると redeyes に、bluedress に漏れてしまう(属性リーク)のか? seed固定で検証します。

実験条件

項目
モデルz-image-turbo(6B、写実特化蒸留モデル)
ステップ8
サンプラーeuler / ddim_uniform
CFG1.0
画像サイズ1024×1024
seed100, 200, 300(固定)

テストパターン

パターン分離版隣接版
1red, dress, blue, eyesred dress, blue eyes
2white, shirt, black, skirtwhite shirt, black skirt
3blonde, hair, green, sweaterblonde hair, green sweater

パターン3は「金髪の日本人女性」+「緑のセーター」という非典型的な組み合わせで、リークが起きやすいと想定しました。

パターン1: 赤いドレス + 青い目

分離版
1girl, 22yo japanese woman, red, dress, blue, eyes, standing, park, sunny day
隣接版
1girl, 22yo japanese woman, red dress, blue eyes, standing, park, sunny day
seed分離版隣接版
100sepadj
200sepadj
300sepadj

パターン1の結果

seed分離版のドレス色分離版の目の色隣接版のドレス色隣接版の目の色
100茶色(blue未反映)
200茶色(blue未反映)青緑
300緑がかった曖昧な色

ドレスが青くなる、目が赤くなるような「色の漏れ」は0件。 しかし重要な発見があります。

分離版ではblueが目に適用されないケースが多発(3ペア中2ペアで目が茶色〜曖昧な色)。 一方、隣接版では3ペア中2ペアで明確に青い目が再現されました。

色は「別のオブジェクトに漏れる」のではなく、「どのオブジェクトにも結びつかずに消失する」 という失敗パターンでした。

ラボ長コメント: 「漏れる」じゃなくて「消える」なの、予想と全然違う。色が迷子になるって表現がしっくりくる。

パターン2: 白シャツ + 黒スカート

分離版
1girl, 22yo japanese woman, white, shirt, black, skirt, office, standing
隣接版
1girl, 22yo japanese woman, white shirt, black skirt, office, standing
seed分離版隣接版
100sepadj
200sepadj
300sepadj

パターン2の結果

seed分離版シャツ分離版スカート隣接版シャツ隣接版スカート
100
200
300

6枚すべてで完全に意図通り。分離/隣接の差なし。

「白シャツ+黒スカート」はオフィスウェアの典型として学習データに大量に含まれているため、モデルが色-対象の対応を正確に推定できていると考えられます。

パターン3: 金髪 + 緑セーター

分離版
1girl, 22yo japanese woman, blonde, hair, green, sweater, cafe, sitting
隣接版
1girl, 22yo japanese woman, blonde hair, green sweater, cafe, sitting
seed分離版隣接版
100sepadj
200sepadj
300sepadj

パターン3の結果

seed分離版の髪色分離版のセーター色隣接版の髪色隣接版のセーター色
100金髪金髪
200金髪金髪
300金髪金髪

6枚すべてで完全に意図通り。 「金髪の日本人女性」という非典型的な組み合わせでも、緑がかった髪や金色のセーターといった属性リークは発生しませんでした。

ラボ長コメント: 色の属性リークって都市伝説だったんですね。実際にはリークじゃなくて消失で、しかも隣接させれば解決する。「色と対象は隣接で書く」はベストプラクティスとして確定かなと思います。白シャツ+黒スカートみたいな典型的な組み合わせは分離しても平気なのも面白いです。

関連記事