【ComfyUI】IPAdapterで画像スタイル転送が失敗する時の原因と解決策完全ガイド

問題の概要:IPAdapterを使ったスタイル転送で発生する典型的なエラー

ComfyUIでIPAdapterを使用し、参照画像のスタイルをターゲット画像に転送しようとすると、初心者から中級者までが頻繁に遭遇するエラーがいくつか存在します。具体的には、以下のようなエラーメッセージが表示され、ワークフローの実行が中断されることがあります。

Error occurred when executing IPAdapterApply:
RuntimeError: The size of tensor a (256) must match the size of tensor b (768) at non-singleton dimension 1
Error: mat1 and mat2 shapes cannot be multiplied (1x320 and 768x320)
WARNING: The number of tokens 257 exceeds the context length 256.
Some tokens will be truncated.

これらのエラーは、IPAdapterのモデル(ip-adapter_sd15.binip-adapter-plus_sd15.bin など)と使用するStable Diffusionの基盤モデル(SD1.5, SDXL)、またはCLIP Vision Encoderの設定が不整合を起こしている場合に発生します。結果として、期待したような芸術的なスタイル転送が行われず、画像が崩れたり、スタイルが反映されなかったりします。

原因の解説:なぜエラーが起こるのか?

IPAdapterは、参照画像をCLIP Vision Encoderでエンコードし、その埋め込み(Embedding)をStable DiffusionのUNet内のCross-Attention層に注入することでスタイルや構図を転送します。ここで発生するエラーの根本原因は主に以下の3つです。

1. モデルとエンコーダーの次元不一致

最も多いエラー「size of tensor a must match size of tensor b」は、IPAdapterモデルが期待する埋め込みの次元(例えば768次元)と、実際にCLIP Vision Encoderが生成する埋め込みの次元(例えば256次元)が異なるために発生します。SD1.5用のIPAdapterは通常768次元を期待しますが、誤ってSDXL用のCLIP Vision Encoder(出力次元が異なる)を接続してしまうとこのエラーになります。

2. モデルタイプの不一致

ip-adapter-plusip-adapter-full などの「Plus」系モデルは、通常のモデルとはアーキテクチャが異なり、より多くの画像情報を注入します。これらのモデルを使用する際に、ワークフローの他のノード(特に「IPAdapterApply」ノードの設定)がそれに対応していないと、形状エラーが発生します。

3. コンテキスト長の超過

CLIP Vision Encoderは入力できる画像の解像度と、そこから生成されるトークン数に制限があります。高解像度の参照画像を投入すると、トークン数が限界(例:256)を超え、警告が表示され、情報が切り捨てられます。これがスタイル転送の精度低下を招きます。

解決方法:ステップバイステップで問題を修正する

ステップ1:モデルとエンコーダーの整合性を確認する

まず、使用するStable Diffusionのバージョン(SD1.5 か SDXL)を決定し、それに合ったIPAdapterモデルとCLIP Vision Encoderを選択します。これが全ての基礎です。

SD1.5を使用する場合の推奨組み合わせ:

  • Base Model: v1-5-pruned-emaonly.safetensors など
  • IPAdapter Model: ip-adapter_sd15.bin (または plus, full バージョン)
  • CLIP Vision Encoder: CLIP-ViT-H-14-laion2B-s32B-b79K のモデルファイル(model.safetensors)を読み込むノードを使用。

SDXLを使用する場合の推奨組み合わせ:

  • Base Model: sd_xl_base_1.0.safetensors
  • IPAdapter Model: ip-adapter_sdxl.bin
  • CLIP Vision Encoder: SDXL用に設計されたものを使用(ComfyUIマネージャーで「CLIP Vision SDXL」を検索)。

ステップ2:正しいワークフローを構築する

以下は、SD1.5で基本的なIPAdapterスタイル転送を行うための最小限の正しいノード接続例です。ComfyUIの画面で、これらのノードを配置・接続してください。

1. Load Checkpoint (Base Model) -> UNet, CLIP, VAE を出力
2. CLIP Vision Loader -> CLIP Vision を出力
3. Load IPAdapter Model -> IPAdapter モデルを出力
4. Load Image (スタイル参照画像) -> Image を出力
5. CLIP Vision Encode (CLIP Vision と Image を接続) -> CLIP Vision Output を出力
6. IPAdapterApply (以下を接続):
   - ipadapter: Load IPAdapter Model の出力
   - clip_vision: CLIP Vision Encode の出力
   - model: Load Checkpoint の UNet 出力
   - image: Load Image の出力 (オプション、強度調整用)
   - weight: 1.0 (スタイルの強度)
7. KSampler (以下を接続):
   - model: IPAdapterApply の出力 (UNet)
   - positive/negative: Load Checkpoint の CLIP出力をCLIP Text Encodeでエンコードしたもの
   - latent_image: Empty Latent Image の出力
8. VAE Decode -> Save Image

ステップ3:「IPAdapterApply」ノードの詳細設定を調整する

「IPAdapterApply」ノードをダブルクリックし、隠された詳細設定を表示します。ここで重要なパラメータは以下の通りです。

  • weight: スタイルの影響度。1.0が標準。強すぎると画像が崩れるので0.6〜0.9から試す。
  • noise: スタイルにノイズを加える度合い。デフォルト0.0。
  • start_at / end_at: スタイルを注入するDenoisingプロセスの開始/終了タイミング。0.0から1.0。全体に注入する場合は0.0と1.0。
  • モデルタイプの選択: 「Plus」系モデル(ip-adapter-plus_sd15.bin)を使う場合は、ドロップダウンメニューから「IP-Adapter Plus」を選択する必要があります。これが設定ミスの多いポイントです。

ステップ4:参照画像の前処理を行う

コンテキスト長超過の警告を防ぎ、効果を安定させるために、参照画像はあらかじめ適切なサイズにリサイズしましょう。512×512や768×768など、Base Modelが訓練された解像度に近いサイズが安全です。ComfyUI内では「Load Image」ノードの後に「Image Scale」ノードを挿入してリサイズできます。

コード例・コマンド例:エラー発生時の確認ポイント

ComfyUIはGUIツールですが、コンソールログやエラーメッセージから原因を特定できます。以下は、エラーメッセージとその対処法の対応表です。

【エラー例1】
Error: mat1 and mat2 shapes cannot be multiplied (1x320 and 768x320)
→ 原因:IPAdapterモデルとBase Modelの互換性なし。
→ 解決:SD1.5用IPAdapterにSDXL Base Modelを使っていないか、その逆を確認。

【エラー例2】
RuntimeError: Expected all tensors to be on the same device...
→ 原因:モデルがGPUメモリに正しく読み込まれていない。
→ 解決:ComfyUIを再起動し、他のメモリ消費の大きいアプリを終了する。

【コンソールでのモデルロード確認】
起動時のログに以下のような行があれば、モデルは正しく読み込まれています。
Loaded clip_vision: file_pathmodelsclip_visionViT-H-14.safetensors
Loaded ipadapter: file_pathmodelsipadapterip-adapter_sd15.bin

まとめ・補足情報

ComfyUIでIPAdapterを成功させる鍵は、「整合性」に尽きます。Base Model、IPAdapterモデルファイル、CLIP Vision Encoderの3点セットが同じ「世代」(SD1.5系 or SDXL系)に揃っていることを最初に確認しましょう。エラーのほとんどはこの不一致から発生しています。

また、ip-adapter-plus は顔や詳細な構造の保持に優れ、ip-adapter-full はより強力なスタイル転送が可能ですが、その分設定が複雑です。まずは標準の ip-adapter_sd15.bin で基本のワークフローを確立し、成功させてからより高度なモデルに進むことを強くお勧めします。

パラメータ調整では、weight (強度) と start_at/end_at (注入タイミング) が画像の品質を大きく左右します。構図を大きく変えずに色味やテクスチャだけを転送したい場合は、weightを低く(0.3-0.6)、start_atを0.2-0.4以降に設定すると良い結果が得られることがあります。IPAdapterは強力なツールですが、魔法ではなく「条件付き画像生成」の一種です。参照画像と生成したい画像のドメインが大きく離れている場合(例:風景画を人物画に適用)は、期待通りの結果を得るのが難しいことも覚えておきましょう。

この記事は役に立ちましたか?