0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qwen-Image-Edit で絵柄が抜けるのは denoise ではなくポーズの変え方のせい — 白黒の絵ほど崩れる

0
Last updated at Posted at 2026-10-12

はじめに

📝 この記事は note ・ Zenn にも投稿しています。

2026-08-07、LINE スタンプ用に、1人のキャラクターから表情とポーズの差分を量産する仕組みを試した。

  • ベースの絵: Z-Image-Turbo(8bit 量子化)
  • 差分の生成: Qwen-Image-Edit-2511(元画像を渡して部分的に描き換える画像編集モデル)
  • ライセンス: どちらも Apache 2.0

同じキャラクター設定を3つの絵柄で描いて比べた。

絵柄 特徴
アニメ 塗りのある、色の多い絵
漫画 白黒の線画。色を使わない
落書き 手描き風の、色のある絵

差分は、9マスのグリッドに9種類を並べた1枚の画像として、まとめて描き換える。描き換えの強さ(denoise)は 0.80。

表情だけなら、白黒は保たれた

最初は表情の差分9種類を9マスに入れた。体の形は変えず、顔だけを描き換える差分になる。

漫画の絵柄で表情の差分を作った一覧。ベースと表情9種類は白黒のまま。右端のバンザイ(1枚ずつ試した分)だけ上着が赤い

漫画の絵柄で、画像の平均彩度(HSV の S を 0〜100 で平均したもの)を測った。

画像 平均彩度
ベース 2.9
表情9マス(各マス) 1.6〜2.4

ほぼ動いていない。髪型、服、小物といったキャラクターの特徴も、3つの絵柄とも崩れなかった。

ポーズを変えると、白黒が崩れた

次にポーズの差分9種類を、同じ 9マス・denoise 0.80 で描き換えた。

漫画の絵柄が崩れた。白い上着に赤が乗り、白黒の絵ではなくなった。

漫画の絵柄でポーズの差分を9マスで作った一覧。P1〜P8 は上着が赤くなり、指を1本立てる P9 だけ白黒のまま

平均彩度に加えて、画像のうち「色が付いている画素」と「赤い画素」の割合も数えた(彩度 0.35 超かつ明度 0.25 超を色付き、そのうち色相が 340〜20度を赤とした)。

画像 平均彩度 色付き画素 赤い画素
ベース 2.9 1.17% 0%
表情9マス 1.6〜2.4 0.82〜1.68% 0%
ポーズ P1〜P8 4.4〜5.8 6.26〜8.78% 5.21〜7.54%
ポーズ P9 1.9 1.17% 0%

ポーズを変えた8枚は、すべてに赤が乗った。

denoise を下げても変わらなかった

最初に立てた見立ては「描き換えが強すぎる」だった。1枚ずつポーズを変えたときにも同じように色が乗っていたので、グリッドにまとめて denoise 0.80 に抑えれば、絵柄の拘束が効くはずだと考えた。

結果は上の表のとおりで、グリッドに入れても改善しなかった。原因は denoise ではなかった。

1枚だけ白黒を保ったポーズ

崩れなかった P9 は「指を1本立てる」ポーズ。体はほぼそのままで、手先だけが動く。

1枚ずつ試したときに色が乗ったのはバンザイで、両腕ごと体の輪郭が変わる。

表情の差分も、顔の中だけの小さな描き換えで済む。動かす面積が小さいほど、絵柄は残る。 体の形を大きく描き換えるほど、モデルは絵柄の拘束も一緒に外していた、と読める。

色のある絵柄では露見しない

同じポーズの差分を、アニメと落書きの絵柄でも測った。

絵柄 ベース ポーズ9マス
アニメ 9.7 8.2〜10.9
落書き 11.4 9.9〜12.0

もともと色のある絵柄では、彩度はベースの前後に収まる。色が少し動いても、絵柄が抜けたとは見えない。白黒や限られた色の絵柄だけで、この問題は表に出る。

対策は、生成のあとで色を落とすこと

プロンプトに no colour と書く方法は効かなかった。ベースを生成する時点でも、白黒の指定にもかかわらずマフラーに黄色が残っていた。

効く順に並べるとこうなる。

  1. 白黒・限定色の絵柄は、生成のあとで決定論的に変換する。 グレースケール化や減色は、モデルの気分に左右されない
  2. 色のある絵柄を選ぶ。 アニメと落書きでは、この問題は起きていない
  3. 大きなポーズがどうしても要るなら、絵柄を戻す工程を後段に置く(ネガティブプロンプトの強化は未検証)

測定に使ったのは次のコード。

from PIL import Image
import numpy as np

def color_stats(path):
    a = np.asarray(Image.open(path).convert("HSV")).astype(float)
    h, s, v = a[..., 0] * 360 / 255, a[..., 1] / 255, a[..., 2] / 255
    colored = (s > 0.35) & (v > 0.25)
    red = colored & ((h < 20) | (h > 340))
    return round(s.mean() * 100, 1), round(colored.mean() * 100, 2), round(red.mean() * 100, 2)

平均彩度は絵柄が抜けたかの検出には使える。ただ、差分として採用できる絵かどうかの判定には使えない。構図や表情の出来は、この数値には出てこない。

時間は、3絵柄×10種類の30枚で68分かかった(ベース約58秒/枚、9マス1枚で約13分)。ポーズのグリッドを足した分が41分。


描き換えが強すぎるから色が乗る、と思っていた。
弱めても変わらなかった8枚の横で、指を1本立てた1枚だけが白黒のままだった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?