問題の概要: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.bin や ip-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-plus や ip-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は強力なツールですが、魔法ではなく「条件付き画像生成」の一種です。参照画像と生成したい画像のドメインが大きく離れている場合(例:風景画を人物画に適用)は、期待通りの結果を得るのが難しいことも覚えておきましょう。