結論
属性リーク(色の漏れ)は発生しなかった
3パターン x 3seed = 9ペアのすべてで、色が意図しないオブジェクトに漏れる現象は確認されませんでした。赤い目、青いドレス、緑の髪、金色のセーターといったリークは0件です。
代わりに「色の迷子」が発生する
パターン1(red, dress, blue, eyes)で観察された問題は、色の「漏れ」ではなく**色の「消失」**でした。
| 現象 | 説明 |
|---|---|
| 色の漏れ(予想していた問題) | blueがドレスに適用される → 発生せず |
| 色の迷子(実際に起きた問題) | blueがどのオブジェクトにも適用されず消失 → 分離版で2/3ペアで発生 |
分離形式でblueとeyesがカンマで切れていると、CLIPがblueをどの対象に結びつけるか曖昧になり、結果として色の指定が無視される方向に失敗します。
実用上の推奨
| 状況 | 推奨 |
|---|---|
| 色と対象が対応する場合 | 隣接させる(red dress, blue eyes) |
| 一般的な組み合わせ(白シャツ+黒スカート等) | 分離しても問題ないが、隣接が安全 |
色と対象は隣接させて書くのがベストプラクティスです。リークは起きませんが、分離すると色の指定が消失するリスクがあります。
疑問
プロンプトの書き方として、よく「色と対象は隣接させるべき」と言われます。
- 分離:
red, dress, blue, eyes— 色と対象がカンマで分かれている - 隣接:
red dress, blue eyes— 色と対象がひとまとまり
分離すると red が eyes に、blue が dress に漏れてしまう(属性リーク)のか? seed固定で検証します。
実験条件
| 項目 | 値 |
|---|---|
| モデル | z-image-turbo(6B、写実特化蒸留モデル) |
| ステップ | 8 |
| サンプラー | euler / ddim_uniform |
| CFG | 1.0 |
| 画像サイズ | 1024×1024 |
| seed | 100, 200, 300(固定) |
テストパターン
| パターン | 分離版 | 隣接版 |
|---|---|---|
| 1 | red, dress, blue, eyes | red dress, blue eyes |
| 2 | white, shirt, black, skirt | white shirt, black skirt |
| 3 | blonde, hair, green, sweater | blonde hair, green sweater |
パターン3は「金髪の日本人女性」+「緑のセーター」という非典型的な組み合わせで、リークが起きやすいと想定しました。
パターン1: 赤いドレス + 青い目
| seed | 分離版 | 隣接版 |
|---|---|---|
| 100 | ![]() | ![]() |
| 200 | ![]() | ![]() |
| 300 | ![]() | ![]() |
パターン1の結果
| seed | 分離版のドレス色 | 分離版の目の色 | 隣接版のドレス色 | 隣接版の目の色 |
|---|---|---|---|---|
| 100 | 赤 | 青 | 赤 | 茶色(blue未反映) |
| 200 | 赤 | 茶色(blue未反映) | 赤 | 青緑 |
| 300 | 赤 | 緑がかった曖昧な色 | 赤 | 青 |
ドレスが青くなる、目が赤くなるような「色の漏れ」は0件。 しかし重要な発見があります。
分離版ではblueが目に適用されないケースが多発(3ペア中2ペアで目が茶色〜曖昧な色)。 一方、隣接版では3ペア中2ペアで明確に青い目が再現されました。
色は「別のオブジェクトに漏れる」のではなく、「どのオブジェクトにも結びつかずに消失する」 という失敗パターンでした。
ラボ長コメント: 「漏れる」じゃなくて「消える」なの、予想と全然違う。色が迷子になるって表現がしっくりくる。
パターン2: 白シャツ + 黒スカート
| seed | 分離版 | 隣接版 |
|---|---|---|
| 100 | ![]() | ![]() |
| 200 | ![]() | ![]() |
| 300 | ![]() | ![]() |
パターン2の結果
| seed | 分離版シャツ | 分離版スカート | 隣接版シャツ | 隣接版スカート |
|---|---|---|---|---|
| 100 | 白 | 黒 | 白 | 黒 |
| 200 | 白 | 黒 | 白 | 黒 |
| 300 | 白 | 黒 | 白 | 黒 |
6枚すべてで完全に意図通り。分離/隣接の差なし。
「白シャツ+黒スカート」はオフィスウェアの典型として学習データに大量に含まれているため、モデルが色-対象の対応を正確に推定できていると考えられます。
パターン3: 金髪 + 緑セーター
| seed | 分離版 | 隣接版 |
|---|---|---|
| 100 | ![]() | ![]() |
| 200 | ![]() | ![]() |
| 300 | ![]() | ![]() |
パターン3の結果
| seed | 分離版の髪色 | 分離版のセーター色 | 隣接版の髪色 | 隣接版のセーター色 |
|---|---|---|---|---|
| 100 | 金髪 | 緑 | 金髪 | 緑 |
| 200 | 金髪 | 緑 | 金髪 | 緑 |
| 300 | 金髪 | 緑 | 金髪 | 緑 |
6枚すべてで完全に意図通り。 「金髪の日本人女性」という非典型的な組み合わせでも、緑がかった髪や金色のセーターといった属性リークは発生しませんでした。
ラボ長コメント: 色の属性リークって都市伝説だったんですね。実際にはリークじゃなくて消失で、しかも隣接させれば解決する。「色と対象は隣接で書く」はベストプラクティスとして確定かなと思います。白シャツ+黒スカートみたいな典型的な組み合わせは分離しても平気なのも面白いです。



















