【ローカルAI画像編集】Qwen-Image-Editのインペイントで四苦八苦した話【部分編集】
はじめに
Qwen-Image-Editは、ChatGPTやFLUX.1 Kontext、Googleのnano-bananaのように、テキスト指示や入力画像を利用した画像編集が可能になるAIモデルです。
さらにFLUX.1-dev Kontextと同じくオープンAIモデルとして公開されているため、(無料で)ローカルで実行可能です。
最近はQwen-ImageのControlNetやインペイントが可能になっていますが、Qwen-Image-Editでインペイント利用すると、なかなか難しかったという話です。
※ AI画像生成では、一部のみをimg2imgとして再生成する技術をインペイントと言います。
※ ComfyUIでの作業です
ComfyUIインペイントの基本
インペイントはAI画像生成において基本(必須)機能の一つとして位置づけられているため、多くのAIモデルにおいて共通の手法で利用可能になっています。





しかし上記手法は、Qwen-Image-Editのモデルはエラーで利用できません。
Qwen-Image-Editモデルの場合
そもそも画像編集AIモデルにおいて、インペイント手法が必要になる理由は、画像の劣化や変更を最小限にしたいからです。
画像全体に対して生成すると、(他の編集モデルも同じですが)画像全体やサイズまで微妙に変更してしまうため、レイヤー編集が困難になります。そこで、人間判断で変更すべき箇所を限定してやります。
※ ComyUIのプリインワークフローを利用します


※ 軽量化としてCLIPLoader(GGUF)を利用する場合は、ちょっとした変更が必要です。
インペイント用のVAEノードが利用できないため、単にLatent空間でマスクを設定するという指定をします。「Set Latent Noise Mask」を利用します。



しかし、複雑なものは上手くいかない

Make her a peace sign (V shape) while keeping the person's face and original pose exactly the same.

主原因は、①マスク・クリッピングにおけるサイズ不一致と、②単純なマスクなので、文脈を考慮しないクソコラ貼り付けだと思います。
①は工夫によってある程度緩和できるのですが、②はどうしても解決できませんでした。
そこで、仕方なく下記の高度な手法(LanPaint)に頼る事にしました。
インペイント生成する際に、何度か生成して上手く文脈を一致させるという手法です。

品質は上がりますが、デメリットは何度も生成するため激遅になります。
上記githubのREADMEから、LanPaintサンプルワークフロー(Masked Qwen Edit Workflow)をダウンロードできます。※ pngファイルをComfyUIへドラッグします

モデル変更はプリインワークフローと同じです。LanPaintKSamplerの設定を「Prompt First(プロンプト優先)」にします。



まとめ
単にピースサインをさせたいだけならば、全体に対してQwen-Image-Editを利用するだけで終了です。また、単に一部を変更するだけなら、通常のQwen-Imageのインペイントで事足ります。
しかし、複雑な指示かつ顔や背景など1ピクセルも変えたくない場合には、範囲を限定してEditモデルのインペイントをする必要があります。
以下、関連する記事等の【PR】です。
