タグ: ComfyUI マスターガイド

  • [ComfyMaster37] SDXL+AnimateDiff+IPAdapterで参照画像から動画を生成しよう!

    前回のAnimateDiffによるtext-to-video(t2v)での生成方法に興味を持った方は、さらに一歩進んだ動画生成を試してみませんか?

    こんにちわ、AICU media編集部です。
    ComfyUI マスターガイド」第37回目になります。
    本記事では、AnimateDiffにIPAdapterを組み合わせることで、ただのテキストからの動画生成を超え、画像の特徴を反映させたより一貫性のあるアニメーションを作成する方法を紹介します。特定のビジュアルテーマやキャラクターを保持したまま、ダイナミックな動画を生成できるこの手法は、クリエイティブなプロジェクトにおいて強力なツールになるはずです。IPAdapterを活用して、これまでにない精度と表現力を持つ動画制作に挑戦してみましょう!

    本連載の初回はこちら。前回はこちら、目次はこちらです。

    [ComfyMaster36] 動画から新しい動画を生成しよう!  #ComfyUI

      1. 概要

      本記事では、AnimateDiffとIP Adapterを組み合わせて、text-to-video(t2v)での動画生成を行う方法を解説します。IP Adapterは、画像の特徴を抽出して生成プロセスに反映させる機能を持ち、これにより元の画像を参照しながら、一貫性のあるアニメーションを作成できます。従来のt2vでの生成に対して、IPAdapterを使うことで、より具体的で視覚的なテーマに沿った動画を作ることが可能です。

      このワークフローでは、複数のカスタムノードやモデルをインストールし、それらを適切に組み合わせて動画生成を行います。具体的には、RealVisXLやSDXL Motion Modelを使用してサンプリング効率を向上させ、CLIP Visionを通じて画像の特徴を抽出し、IP Adapterでそれらを動画生成に反映させます。

      2. カスタムノードのインストール

      以下のカスタムノードを使用するため、ComfyUI Managerからインストールしてください。

      ComfyUI-AnimateDiff-Evolved

      ComfyUI-AnimateDiff-Evolvedは、Stable Diffusionモデルを拡張して動画生成を可能にするカスタムノードです。元のAnimateDiffを進化させたバージョンで、動画生成のためのモーションモジュールと高度なサンプリング技術を組み込んでいます。

      https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved

      ComfyUI-VideoHelperSuite

      ComfyUI-VideoHelperSuiteは、動画生成を支援するためのカスタムノードです。動画の編集や加工を容易にする機能を提供します。今回は、一連の画像を動画にして保存するノードを使用するために必要となります。

      https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite

      ComfyUI IPAdapter plus

      ComfyUI IPAdapter Plusは、ComfyUI上でのIP Adapterの使用をサポートするカスタムノードで、画像をプロンプトとして使用する機能を提供します。キャラクター、スタイル、構図の転写や高度な一括処理が可能で、動画や漫画の生成時に一貫したビジュアルテーマを維持するために使用されます。

      https://github.com/cubiq/ComfyUI_IPAdapter_plus

      3. モデルのインストール

      RealVisXL V5.0 Lightning

      今回は、RealVisXLのLightningバージョンを使用します。Lightningバージョンでは、サンプリングのステップ数を4-6回に抑えることができます。生成量の多いAnimateDiffでは、TurboやLightningなどの数ステップで生成完了するモデルを選ぶと良いでしょう。
      以下のリンクよりモデルをダウンロードし、「ComfyUI/models/checkpoints」フォルダに格納してください。

      https://huggingface.co/SG161222/RealVisXL_V5.0_Lightning/blob/main/RealVisXL_V5.0_Lightning_fp16.safetensors

      SDXL Motion Model

      今回は、SDXLのモーションモジュールとして、「Hotshot-XL」を使用します。Hotshot-XLは、コンテクスト長が8フレームしかありませんが、AnimateDiff-SDXLより品質が良いためです。以下のモデルをダウンロードし、「ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models」フォルダに格納してください。

      https://huggingface.co/hotshotco/Hotshot-XL/blob/main/hsxl_temporal_layers.f16.safetensors

      CLIP Vision

      IP Adapterを使用するためにCLIP Visionを使用します。以下のリンクよりモデルをダウンロードし、「ComfyUI/models/clip_vision」フォルダに格納してください。

      CLIP Visionは画像を入力として受け取り、特徴を抽出してトークンに変換します。これらのトークンは、テキストプロンプトと組み合わせて画像生成に使用されます。

      https://huggingface.co/h94/IP-Adapter/blob/main/models/image_encoder/model.safetensors

      IP Adapter

      CLIP Visionで抽出した画像の特徴を画像生成モデルに組み込むためにIP Adapterのモデルが必要になります。以下のリンクよりモデルをダウンロードし、「ComfyUI/models/ipadapter」フォルダに格納してください。

      https://huggingface.co/h94/IP-Adapter/blob/main/sdxl_models/ip-adapter-plus_sdxl_vit-h.safetensors

      4. 使用素材

      今回は、女性の画像と風景の画像を使用します。それぞれ以下よりダウンロードしてください。

      女性の画像

      画像

      https://note.com/api/v2/attachments/download/6e510797a934edbe4ae95dd091d08571

      風景の画像

      画像

      https://note.com/api/v2/attachments/download/3608f75a8949f1124d304471accbed38

      5. ワークフローの解説

      以下がワークフローの全体像になります。このワークフローは、入力画像の特徴を活かしながらアニメーション動画を生成する高度な例です。IP-Adapterを使用することで、入力画像の視覚的特徴(この場合、若い日本人女性の外見)を生成プロセスに組み込みます。AnimateDiffとの組み合わせにより、入力画像に基づいた一貫性のあるアニメーション動画が生成されます。

      画像

      ワークフローは、文末のリンクよりダウンロード可能です。

      このワークフローの構造をフローチャートで表現すると、以下のようになります。

      画像

      以下に、このワークフローの主要な部分とその機能を詳細に説明します。

      1. 入力画像とモデルの準備
        • Load Imageノード: 「girl_01.jpg」という画像ファイルを読み込みます。
        • IPAdapterModelLoader ノード: 「ip-adapter-plus_sdxl_vit-h.safetensors」モデルを読み込みます。
        • CLIPVisionLoader ノード: 「CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors」を読み込み、画像の特徴を抽出します。
        • CheckpointLoaderSimple ノード: 「RealVisXL_V5.0_Lightning_fp16.safetensors」モデルを読み込みます。
      2. AnimateDiffの設定
        • ADE_AnimateDiffLoaderGen1 ノード: 「hsxl_temporal_layers.f16.safetensors」 AnimateDiffモデルを適用し、「autoselect」モードを使用します。
        • ADE_StandardUniformViewOptions ノード: AnimateDiffのビューオプションを設定します(16フレーム、2キーフレーム)。
        • ADE_ViewsOnlyContextOptions ノード: ビューオプションをコンテキストオプションに変換します。
      3. サンプリング設定
        • FreeInit Iteration Optionsノード: FreeInit samplingのパラメータを設定します。イテレーション回数が多いほど、生成される動画の詳細度や一貫性が高まります。今回は、最低回数の2回だけイテレーション処理を行います。
        • Sample Settingsノード: AnimateDiffのサンプリング設定を構成します(FreeNoiseモード)。
      4. IP-Adapter処理
        • IPAdapterAdvanced ノード: 入力画像の特徴を抽出し、生成プロセスに組み込みます。重み1.0、「ease in」ブレンドモード、「concat」適用方法を使用。
      5. プロンプト処理
        • ポジティブプロンプト: 「Japanese young girl, casual dress, black hair, bob cut, upper body, looking at view, green background」
        • ネガティブプロンプト: 「(worst quality, low quality, illustration, 3d, 2d, painting, cartoons, sketch), open mouth,」
      6. 画像生成
        • KSampler ノード
          • Seed: 118362085301702
          • Steps: 4
          • CFG Scale: 2.0
          • Sampler: dpmpp_sde
          • Scheduler: karras
          • Denoise: 1.0
      7. 出力処理
        • VAE Decode ノード: 生成された潜在表現を実際の画像にデコードします。
        • VHS_VideoCombine ノード: 生成された画像シーケンスを16fpsの動画に変換し、「AnimateDiff」というプレフィックスで保存します。

      6. ワークフローの実行

      それでは、ワークフローを実行してみましょう。女性の画像を参照した場合と、風景の画像を参照した場合、それぞれの結果を確認してみます。

      女性の画像を参照しての動画生成

      まずは、Load Imageノードに女性の画像を設定し、以下のプロンプトをポジティブプロンプトに入力し、実行してみます。

      Japanese young girl, casual dress, black hair, bob cut, upper body, looking at view, dynamic expressions, green background

      実行結果は以下になります。参照元画像の特徴を捉えて生成されていることが分かります。しかし、あくまで参照なので、参照元画像のままで生成されていません。また、参照により動きがあまり変化しない特徴があります。

      画像

      IPAdapterの強度を下げれば、動きの変化が強くなりますが、その分参照元画像に似なくなります。以下は、IPAdapterの強度を0.5に下げて生成した動画です。

      画像

      風景画像を参照しての動画生成

      次に風景の画像を参照し、そこから動画生成したいと思います。Load Imageノードに風景の画像を設定し、以下のプロンプトをポジティブプロンプトに入力し、実行してみます。

      wide landscape view, sunset, golden hour, large clouds, pink sky, ocean in background, water reflections, distant mountains, lush green trees, flowers in foreground, gentle breeze, glowing sunlight, ethereal atmosphere, serene, soft lighting, cinematic composition, high detail, vivid colors, dreamy, fantasy setting

      以下が生成結果です。参照元画像に近い状態で動画生成されています。先ほどの女性と同様、参照元画像に引っ張られるため、動きは小さいです。

      画像

      IPAdapterを使用しない場合は、以下のようにさらに躍動的な動画になります。

      画像

      7. まとめ

      今回の記事では、AnimateDiffとIPAdapterを組み合わせたtext-to-video生成の手法を解説しました。IPAdapterを活用することで、従来の動画生成におけるテキストプロンプトだけでなく、参照画像の特徴を反映した一貫性のあるアニメーション動画を作成することができます。これにより、キャラクターやスタイル、構図の再現が容易になり、より具体的で表現豊かな動画制作が可能になります。

      記事内で紹介した手順を参考に、カスタムノードのインストールやモデルの準備を行い、IPAdapterの設定を適切に調整することで、プロジェクトに合わせた多彩なアニメーションを生成することができるでしょう。今回の手法は、特にクリエイティブな作品や映像制作において、大きな可能性を秘めています。

      今後もこの技術を活用し、自分だけのユニークなアニメーション動画を作成してみてください。次のステップでは、さらに高度なカスタマイズや他のツールとの組み合わせを試して、より洗練された映像表現を目指していきましょう。

      次回は、AnimateDiffでvideo-to-video(v2v)をする方法を紹介します。乞うご期待!
      X(Twitter)@AICUai もフォローよろしくお願いいたします!

      画像生成AI「ComfyUI」マスターPlan

      画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

      • メンバー限定の会員証が発行されます
      • 活動期間に応じたバッジを表示
      • メンバー限定掲示板を閲覧できます
      • メンバー特典記事を閲覧できます
      • メンバー特典マガジンを閲覧できます
      • 動画資料やworkflowといった資料への優先アクセスも予定

      ゼロから学ぶ「ComfyUI」マガジン

      https://note.com/aicu/m/md2f2e57c0f3c

      マガジン単体の販売は1件あたり500円を予定しております。メンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になるだけでなく、さまざまな交流情報や、ComfyUIを学習するためのメンバー向け情報をお伝えしています。

      https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

      もちろん、初月は無料でお試しいただけます!
      毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
      退会率はとても低く、みなさまにご満足いただいております。
      ✨️オトクなメンバーシップについての詳細はこちら


      この記事の続きはこちらから https://note.com/aicu/n/na46215301e73

      Originally published at https://note.com on Dec 2, 2024.

    1. [ComfyMaster29] 参照画像でAIをコントロール!IPAdapterの使い方

      理想のビジュアルをAIに伝えたいのに、テキストだけでは限界を感じていませんか?
      IPAdapterなら、参照画像を使って視覚的に指示できます。

      こんにちわ、AICU media編集部です。
      ComfyUI マスターガイド」第29回目になります。
      本記事では、1枚の画像から高度に画風を適用できる「IPAdapter」(アイピーアダプター)の解説です。例えば、「劇画風のしらいはかせ」画像を使うとこんな画像がプロンプトだけで生成できます。

      画像

      本稿ではIPAdapterの仕組みとComfyUIでの活用方法をステップバイステップで解説し、参照画像に基づいた高品質な画像生成を行えるようになることを目指します。気になる倫理面についても配慮していきましょう。

      本連載の初回はこちら。前回はこちら、目次はこちらです。

      [ComfyMaster28] 落書きが画像に!ControlNet Scribble入門 #ComfyUI

        1. 概要

        IPAdapterは、テキストプロンプトに加えて参照画像を入力することで、AIによる画像生成をより精密に制御する技術です。画像のスタイル、特定の視覚要素、全体的な構図など、テキストでは表現しきれないニュアンスをAIに伝えることを可能にし、生成画像の品質、一貫性、再現性を向上させます。

        本記事では、IPAdapterの仕組み、ComfyUI上での具体的なワークフロー、そして生成結果を通して、その効果と活用方法を解説します。蝶の画像を参考に人物画像を生成する例を通して、IPAdapterの強度や適用方法による変化、linear、style transfer、ease_inといった異なる重みタイプの効果の違いを検証します。

        2. IPAdapterとは

        IPAdapterは、テキストベースのプロンプトと視覚的な参照画像を組み合わせることで、AIに対してより詳細で正確な指示を与えることを可能にする技術です。この手法により、生成される画像の品質、スタイルの一貫性、特定の視覚要素の再現性が大幅に向上します。

        技術的背景

        IPAdapterの核心は、画像エンコーダーとテキストエンコーダーの出力を効果的に統合する能力にあります。この過程は以下のように要約できます。

        1. 画像エンコーディング: 入力された参照画像は、畳み込みニューラルネットワーク(CNN)などの画像エンコーダーによって処理され、高次元の特徴ベクトルに変換されます。
        2. テキストエンコーディング: 同時に、テキストプロンプトは言語モデルによって処理され、同じく高次元の特徴ベクトルに変換されます。
        3. 特徴の融合: 画像とテキストから得られた特徴ベクトルは、複雑な方法で結合されます。この過程では、注意機構(Attention Mechanism)などの技術が用いられることがあります。
        4. 潜在空間への投影: 融合された特徴は、Stable Diffusionの潜在空間に投影されます。この空間内で、画像生成プロセスが行われます。
        5. 画像生成: 最後に、潜在表現から実際の画像ピクセルへのデコードが行われ、最終的な出力画像が生成されます。

        IPAdapterの利点

        1. 精密な視覚情報の伝達: テキストだけでは表現しきれない細かいニュアンスや視覚的特徴を、AIモデルに効果的に伝達できます。
        2. スタイルの一貫性: 特定のアーティストのスタイルや、製品デザインなどを高い一貫性で再現することが可能です。
        3. 学習効率の向上: 新しい視覚概念や複雑な構図を、画像を通じてAIモデルに効率的に「教える」ことができます。
        4. 創造性の拡張: 視覚的なインスピレーションを直接AIに伝えることで、より革新的で予想外の結果を得られる可能性が高まります。

        3. ワークフローの使用準備

        カスタムノード

        • ComfyUI IPAdapter plus: IPAdapterをComfyUI上で使用できるようにしたカスタムノードです。ComfyUI Managerからインストール可能です。このカスタムノードの詳細を知りたい方は、以下のリポジトリを参照してください。

        https://github.com/cubiq/ComfyUI_IPAdapter_plus

        モデル

        • RealVisXL V5.0: 実写系を得意とするモデルで、商用利用可能(画像の販売、サービスへの組み込み可能)になります。このモデルを以下のリンクよりダウンロードし、「ComfyUI/models/checkpoints」フォルダに格納してください。

        https://civitai.com/models/139562/realvisxl-v50?modelVersionId=789646

        画像素材

        今回は、以下の画像をIPAdapterで参照します。

        画像

        画像ファイルは、以下よりダウンロードしてください。

        4. ワークフロー解説

        以下がワークフローの全体構成になります。

        GPU不要でComfyUIを簡単に起動できる
        AICU特製Colabノートブック(ConrolNetつき)はこちら
        https://j.aicu.ai/ComfyCN

        画像

        今回作成したワークフローのファイルは、文末のリンクよりダウンロードください。
        以下に、このワークフローの主要な部分とその機能を図示し、詳細に説明します。

        画像
        1. 入力画像の読み込みと前処理
          • Load Image ノード: 「butterfly_01.png」という画像を読み込みます。
        2. モデルとIP-Adapterの読み込み
          • Load Checkpoint ノード: 「RealVisXl.safetensors」モデルを読み込みます。
          • IPAdapter Model Loader ノード: 「ip-adapter-plus_sdxl_vit-h.safetensors」を読み込みます。
          • Load CLIP Vision ノード: 「CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors」を読み込みます。
        3. プロンプト処理 (CLIP Text Encode ノード x2)
          • ポジティブプロンプト: 「realistic, photorealistic, 1girl, t-shirt, black_hair, long_hair,」
          • ネガティブプロンプト: 「bad hand, bad anatomy, worst quality, ai generated images, low quality, average quality, nsfw, nude, naked,」
        4. IP-Adapterの適用 (IPAdapter Advanced ノード)
          • 入力画像、IP-Adapter、CLIP Visionモデルを組み合わせて、元のStable Diffusionモデルを調整します。
          • 重み: 1.0 (IP-Adapterの最大影響力)
          • ノイズ追加方法: linear
          • モード: concat
          • 適用範囲: V only (Value embeddings only)
        5. 潜在画像の準備 (Empty Latent Image ノード)
          • サイズ: 1024×1024
          • バッチサイズ: 1
        6. 画像生成 (KSampler ノード)
          • Seed: 860227022998597
          • Steps: 20
          • CFG Scale: 8
          • Sampler: dpmpp_2m
          • Scheduler: karras
          • Denoise: 1.0 (完全に新しい画像を生成)
        7. 画像のデコードと保存
          • VAE Decode ノード: 生成された潜在表現を実際の画像にデコードします。
          • Save Image ノード: 最終的に生成された画像を “ipadapter” という名前で保存します。

        IPAdapter Model Loderと IPAdapter Advancedの拡大です。パラメーターの参考にどうぞ。

        画像

        5. 生成結果

        以下が生成結果になります。左がIPAdapter非適用の画像、右がIPAdapterの強度を0.50で適用した結果です。IPAdapterを適用することで、シャツに学習元である蝶の模様が浮かんだり、背景が自然の風景になっています。

        画像

        IPAdapter Advancedノードのweight_typeがlinearの場合の強度ごとの生成結果一覧です。0.80になると、蝶が全面に現れてしまい、人物がいなくなってしまいます。

        画像

        これをweght_typeをstyle transfer、強度を1.0に変更して生成してみました。style transferの場合は、蝶の形状自体は継承しないので、蝶が前面に現れることなく、蝶の模様のみが反映されています。参照元画像のスタイルだけを適用したい場合は、weght_typeをstyle transferにした方が効果的です。

        画像

        weght_typeがlinearやease_inなどのスタイルと形状の両方を参照させるタイプの用途は、例えば左のパーカーの画像を参照し、右の画像のように生成した人物に着せることが考えられます。しかし、あくまで参照なので、完全に左の洋服を再現することは難しいです。
        補足として、右の画像は、weght_typeをease_in、強度を9.5にして生成した画像です。ease_inにすることで、最初はIPAdapterの効きを弱くし、後から効果が上がるようにすることで、プロンプトを反映させつつ、IPAdapterの効果も効かせるようにしています。

        画像

        6. まとめと倫理面への配慮

        本記事では、ComfyUIとIPAdapterを用いて、参照画像に基づいた高品質な画像生成を行う方法を解説しました。IPAdapterは、テキストプロンプトだけでは難しい、微妙なニュアンスや視覚的特徴の再現を可能にします。特に、IPAdapterの強度調整とweight_typeの選択によって、参照画像の要素をどのように反映させるかを細かく制御できることを示しました。linearでは形状とスタイルの両方を、style transferではスタイルのみを、ease_inでは徐々にIPAdapterの効果を強めることで、プロンプトと参照画像のバランスを調整できることを実例を通して確認しました。

        これらの技術を活用することで、AIによる画像生成の可能性は大きく広がり、より創造的で自由な表現が可能になります。今後の展望として、更なるモデルの改良や新たなカスタムノードの登場によって、IPAdapterの適用範囲はますます拡大していくことが期待されます。より高度な活用方法の探求や、他のモデルとの組み合わせなど、更なる実験を通して、IPAdapterの潜在能力を引き出し、自身の創作活動に役立ててください。

        一方では、「IPAdapter」の名前からも、IP、すなわち知的財産やキャラクタービジネスにとっては、著作権法違反、つまり違法行為や迷惑行為の原因となる技術でもあります。「技術的に出来る/できない」といった視点とは別に、Load Imageにおいて利用する画像の権利や、客観的に見た「依拠性」や「類似性」についても評価を行っておく習慣は大切です。この解説の中でも、weightパラメーターが0.5以上であれば、それは元の画像と同じものに近くなっていきます。パラメータを0.5以上にすることは「原作に対する類似と依拠を同時に認めているという証拠」とも言えますので、画像生成を行う際には、その責任をしっかりと認識して利用してください。

        AICUでは画像生成AIクリエイター仕草(v.1.0)といった形で、モラル面も啓蒙活動を行っていますが、IPAdapterの使用についてはより高度な倫理観をもっていくことを推奨します。

        次はいよいよLoRA編がはじまります。
        そしてその前に、特別編が予定されています!
        X(Twitter)@AICUai もフォローよろしくお願いいたします!

        画像生成AI「ComfyUI」マスターPlan

        画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

        • メンバー限定の会員証が発行されます
        • 活動期間に応じたバッジを表示
        • メンバー限定掲示板を閲覧できます
        • メンバー特典記事を閲覧できます
        • メンバー特典マガジンを閲覧できます
        • 動画資料やworkflowといった資料への優先アクセスも予定

        ゼロから学ぶ「ComfyUI」マガジン

        https://note.com/aicu/m/md2f2e57c0f3c

        マガジン単体の販売は1件あたり500円を予定しております。
        2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

        https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

        もちろん、初月は無料でお試しいただけます!
        毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
        退会率はとても低く、みなさまにご満足いただいております。
        ✨️オトクなメンバーシップについての詳細はこちら

        動画で一気に学びたい方は、こちらのColoso講座もオススメです

        ボーナストラック

        有料・メンバーシップ向けのボーナストラックには今回解説したワークフローの完成品ダウンロードリンクに加えて、お楽しみ画像です。

        某有名漫画家のアシスタントさんに書いていただいた劇画風しらいはかせをIPAdapterに使ったら…!?生成画像を収録しています。

        画像

        この記事の続きはこちらから https://note.com/aicu/n/nc6164bdae138

        Originally published at https://note.com on Nov 4, 2024.

      1. [ComfyMaster25] 画像を自由自在に!ControlNetで完全制御

        求める画像を生成するために、プロンプトだけでは物足りないですよね?
        そんな時、ControlNetが助けになります!
        ControlNetは画像生成の制御性を大幅に向上させる革新的な技術として注目を集めています。特に、最新のSDXL(Stable Diffusion XL)モデルと組み合わせることで、その威力は一層増しています。

        こんにちわ、AICU media編集部です。
        ComfyUI マスターガイド」第25回目になります。
        本記事では、ComfyUIを使用してSDXLでControlNetを活用する方法を、初心者の方にも分かりやすく解説していきます。

        前回はこちら
        [ComfyMaster24] LoRAで表現をもっと自由に! スタイルを使いこなそう

        1. ControlNetとは何か?

        ControlNetは、既存の画像生成モデルに「制御」の要素を加える技術です。従来の画像生成AIは、プロンプト(テキストによる指示)のみをネットワークに画像を生成していました。そのため、言語で表現しきれない要素はランダム性が強く、ユーザーの意図通りにならないことも多々ありました。ControlNetは、この問題を解決するために開発されました。

        ControlNetを使用すると、プロンプトに加えて、追加の情報をAIに与えることができます。この追加情報には、画像の輪郭線、深度情報、ポーズ、セグメンテーションマップなど、様々な種類があります。AIはこれらの情報をもとに、よりユーザーの意図に合致した画像を生成することができるようになります。

        画像

        簡単に言えば、従来のモデルが「自由に絵を描くアーティスト」だとすれば、ControlNetは「具体的な指示を出せるアートディレクター」のような役割を果たします。

        2. 各種ControlNetの説明と用途

        ControlNetには、様々な種類があります。それぞれが異なる種類の条件に対応しており、用途も異なります。ここでは、代表的なControlNetの種類とその用途について解説します。

        Canny Edge(キャニーエッジ)

        入力画像からエッジ(輪郭線)を検出し、そのエッジを元に画像を生成します。エッジ検出には、Cannyアルゴリズムと呼ばれる手法が用いられます。Cannyアルゴリズムは、ノイズの影響を受けにくく、正確なエッジを検出することができるため、ControlNetで広く利用されています。

        画像

        主に以下のような用途で使用されます。

        • 特定の形状を維持したまま、スタイルやテクスチャを変更したい場合: 例えば、建物の写真からエッジを検出し、そのエッジを元に、建物のスタイルを和風や洋風に変更することができます。
        • スケッチや線画を元に、リアルな画像を生成したい場合: 手描きのスケッチや線画からエッジを検出し、そのエッジを元に、写真のようなリアルな画像を生成することができます。
        • ロゴやイラストのトレース: ロゴやイラストをスキャンしてエッジを検出し、そのエッジを元に、ベクター画像を作成することができます。
        画像

        Depth Map(深度マップ)

        入力画像の奥行き情報を利用して、立体感のある画像を生成します。奥行き情報は、画像中の各ピクセルがカメラからどれだけ離れているかを表す情報です。深度マップは、白黒画像で表現され、白い部分が近く、黒い部分が遠くを表します。

        画像

        主に以下のような用途で使用されます。

        • 3D的な表現や、奥行きを強調したい場合: 例えば、風景写真から深度マップを生成し、その深度マップを元に、より奥行き感のある風景画を生成することができます。
        • ミニチュア風写真: 通常の写真から深度マップを生成し、その深度マップを元に、ミニチュア模型のような写真を作成することができます。
        • 背景のぼかし: 深度マップを利用して、被写体以外をぼかした写真を作成することができます。
        画像

        Pose Estimation(ポーズ推定)

        入力画像から人間の骨格情報(ポーズ)を推定し、そのポーズを元に画像を生成します。ポーズ推定には、OpenPoseなどのAIモデルが用いられます。OpenPoseは、画像から人間の関節の位置を検出し、骨格を推定することができます。

        画像

        主に以下のような用途で使用されます。

        • キャラクターデザインやイラスト制作で、特定のポーズを表現したい場合: 例えば、人物の写真からポーズを推定し、そのポーズを元に、アニメキャラクターや漫画キャラクターを生成することができます。
        • ダンスやスポーツの動きを分析: ビデオからポーズを推定することで、ダンスやスポーツの動きを分析することができます。
        • モーションキャプチャ: 人間の動きを計測し、その動きを3DCGキャラクターに反映させることができます。
        画像

        Scribble(落書き)

        簡単な手描きの線画から、詳細な画像を生成します。Scribble ControlNetは、線画を元に、画像の内容を推定し、その内容に沿った画像を生成します。

        画像

        主に以下のような用途で使用されます。

        • アイデアのスケッチを元に、具体的なビジュアルを得たい場合: 例えば、新しい製品のアイデアをスケッチし、そのスケッチを元に、製品の完成イメージを生成することができます。
        • ラフ画からイラストを生成: 簡単なラフ画を元に、詳細なイラストを生成することができます。
        • ストーリーボード作成: 映画やアニメのストーリーボードを作成する際に、Scribble ControlNetを利用して、各シーンのイメージを生成することができます。
        画像

        Segmentation Map(セグメンテーションマップ)

        入力画像を複数の領域に分割し、各領域にラベルを付けたものです。セグメンテーションマップは、画像中のどの部分がどのオブジェクトに対応するかをAIに教えるために使用されます。

        画像

        主に以下のような用途で使用されます。

        • シーン全体の構成をコントロールしたい場合: 例えば、風景写真をセグメンテーションマップで分割し、「空」・「海」・「山」などのラベルを付けることで、それぞれの領域の色やテクスチャを個別に制御することができます。
        • 画像編集: セグメンテーションマップを利用して、特定のオブジェクトだけを切り抜いたり、色を変更したりすることができます。
        • 自動運転: 自動運転システムでは、セグメンテーションマップを利用して、道路、歩行者、信号機などを認識しています。
        画像

        HED boundary

        HED boundary(Holistically-Nested Edge Detection)は、画像からエッジ(境界線)を検出するControlNetです。Canny Edgeと同様に画像の輪郭を捉えますが、HED boundaryはより繊細で複雑なエッジを検出することに特化しています。これは、人物の髪の毛や衣服の細かい模様、自然風景の複雑な葉っぱの形状など、Canny Edgeでは捉えきれない微細なエッジを検出できることを意味します。

        画像

        主に以下のような用途で使用されます。

        • より写実的な画像生成: HED boundaryは、より詳細なエッジ情報を捉えるため、生成される画像のリアリティを高めるのに役立ちます。特に、人物のポートレートや自然風景など、細部まで描き込みたい場合に効果的です。
        • 複雑なテクスチャの再現: 衣服の織り目や木の葉の葉脈など、複雑なテクスチャをより忠実に再現したい場合に適しています。
        • アニメ・漫画風画像の生成: 線画の質感を重視するアニメや漫画風の画像を生成する場合にも、HED boundaryは有効です。
        画像

        Normal map (法線マップ)

        Normal map(法線マップ)は、画像の表面の向きを表す情報です。各ピクセルに、その地点における表面の法線ベクトル(表面に対して垂直なベクトル)の情報が格納されています。法線マップは、3Dグラフィックスで物体の表面の陰影や反射を表現するために広く使われています。

        画像

        ControlNetにおけるNormal mapは、この法線マップの情報を利用して、立体感や陰影をより精密に制御することができます。

        主に以下のような用途で使用されます。

        • 3Dモデルのような立体的な画像生成: 法線マップの情報を利用することで、光源の位置や強さを考慮した、リアルな陰影表現が可能になります。
        • 金属やガラスなどの質感表現: 法線マップは、金属の光沢やガラスの透明感など、材質感を表現するのにも役立ちます。
        • 彫刻やレリーフのような表現: 法線マップを利用することで、画像に彫刻やレリーフのような凹凸感を表現することもできます。
        画像

        Lineart

        Lineartは、画像から線画を抽出するControlNetです。Canny EdgeやHED boundaryも線画を検出できますが、Lineartは特にアニメや漫画のような線画スタイルの画像に特化しています。

        画像

        主に以下のような用途で使用されます。

        • アニメ・漫画風画像の生成・編集: 線画を強調したイラストを作成したり、既存の画像を線画化したりすることができます。
        • イラストの着色: 線画を抽出後、ControlNetと組み合わせて自動的に着色したり、手動で着色したりすることができます。
        • 線画のクリーンアップ: スキャンした線画のノイズ除去や線の補正など、線画の編集作業に利用できます。
        画像

        Pidi (Softedge)

        Pidi (Softedge) は、画像からソフトなエッジを検出するControlNetです。Canny EdgeやHED boundaryのようなシャープなエッジではなく、ぼかしのかかったような滑らかなエッジを抽出します。Pidiは、softedgeという別名でも知られています。

        画像

        主に以下のような用途で使用されます。

        • 水彩画やパステル画のような、柔らかいタッチの画像生成: ソフトなエッジは、水彩画やパステル画など、境界線がぼやけた表現に適しています。
        • 被写体の輪郭を強調しながら、自然な雰囲気を保ちたい場合: シャープなエッジでは硬すぎる印象になる場合に、Pidiを用いることで、より自然で優しい雰囲気の画像を生成できます。
        • 写真から絵画風に変換: 写真のエッジをPidiでソフトにすることで、絵画のような風合いを出すことができます。
        画像

        TEED

        TEEDは、Tiny and Efficient Edge Detector の略称で、軽量ながらも高精度なエッジ検出を行うControlNetです。わずか58Kのパラメータ数で、最先端モデルと比較してサイズが0.2%未満と非常に軽量なのが特徴です。

        ControlNetにおいては、TEEDは入力画像からソフトなエッジを抽出し、それを元に画像生成を行います。Canny Edgeなどとは異なり、境界線がぼやけた、より自然で滑らかなエッジ検出を得意としています。特にSDXLとの組み合わせに最適化されています。

        画像

        主に以下のような用途で使用されます。

        • SDXLを用いた、ソフトエッジを強調した画像生成: 水彩画、パステル画、印象派の絵画など、ソフトなタッチの画像を生成する際に効果的です。
        • 入力画像の雰囲気を維持した画像生成: 画像全体の構図や色調を維持しつつ、異なる要素を追加したり、スタイルを変更したりすることができます。
        • プロンプトエンジニアリングの負担軽減: プロンプトなしで、入力画像のエッジ情報を元に画像生成ができるため、プロンプト作成の手間を省くことができます。
        画像

        MLSD

        MLSD (Multi-Level Line Segment Detector) は、画像から直線を検出することに特化したControlNetです。建物や道路、家具など、直線的な要素が多い画像から、正確な直線情報を抽出することができます。

        画像

        主に以下のような用途で使用されます。

        • 建築物や都市景観の画像生成: 建物の輪郭や道路のラインなどを正確に捉え、リアルな都市景観を生成できます。
        • 幾何学模様のデザイン: 直線や多角形を組み合わせた幾何学模様のデザインを作成する際に役立ちます。
        • パースペクティブの修正: 写真の歪みを修正したり、パースペクティブを強調したりする際に利用できます。
        画像

        Tile

        Tile は、入力画像をタイル状に繰り返し配置して、シームレスなパターンを生成するControlNetです。元絵の構図や特徴を維持した状態で画像生成が可能なため、

        画像

        主に以下のような用途で使用されます。

        • 画像のアップスケール:低解像度の画像を高解像度に変換する際に使用されます。Tileモデルは、画像の細部を補正し、テクスチャを改善することで、より高品質な画像を生成します。
        • 細部の補正:生成された画像の細部を修正する際に使用されます。Stable Diffusionが細部の調整に苦手な場合、ControlNet Tileを使用して、画像の細部を微調整することができます。
        • 質感やテクスチャの変更:画像の質感やテクスチャを変更する際に使用されます。ControlNet Tileは、肌の質感を調整したり、アニメ風にしたり、自由度の高い変更が可能です。
        画像

        3. ControlNetの使用準備

        カスタムノードのインストール

        ControlNetを使用するために、「ComfyUI’s ControlNet Auxiliary Preprocessors」をインストールします。標準ノードだけでもControlNetを使用できますが、本記事で紹介したControlNetの一部しか実現できません。そのため、カスタムノードをインストールし、使用できるControlNetの幅を広げます。ComfyUI’s ControlNet Auxiliary Preprocessorsは、ComfyUI Managerからインストール可能です。

        画像

        以下がリポジトリになります。
        https://github.com/Fannovel16/comfyui_controlnet_aux

        https://cdn.iframe.ly/Q5NLoiy?v=1&app=1

        プリプロセッサーモデルのダウンロード

        ControlNetの使用には、プリプロセッサーモデルが必要になるため、そのモデルをダウンロードします。SDXLには、controlnet-union-sdxl-1.0という、これまでに紹介した各種ControlNetを1つに集約した便利なモデルがあります。今回は、このモデルを使用します。以下のリンクよりファイルをダウンロードし、Google Colabを使用しているDriveで「ComfyUI/models/controlnet」フォルダに格納してください。
        https://huggingface.co/xinsir/controlnet-union-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors

        参照元画像

        ControlNetの参照元画像として以下の画像を使用します。

        画像

        画像ファイルは、以下よりダウンロードください。

        https://note.com/api/v2/attachments/download/c6c1a646ad8faf1778658c65e1ccde89

        workflowは文末にて。

        4. ワークフロー解説

        このワークフローは、入力された女性の画像の構造(深度情報)を保持しながら、指定されたプロンプトに基づいて男性の特徴を持つ新しい画像を生成します。結果として、元の画像の構図や照明条件を維持しつつ、全く異なる人物(男性)の画像が生成されることが期待されます。これは、ControlNetと深度マップを組み合わせた高度な画像変換・生成の例といえます。

        画像

        以下に、このワークフローの主要な部分とその機能を図示し、詳細に説明します。

        画像
        1. 入力画像の読み込みと深度マップ生成
          • Load Imageノード: 「girl-for-controlnet.jpeg」を読み込みます。
          • Depth Anything V2 – Relativeノード: 入力画像から深度マップを生成します。
          • 使用モデル: 「depth_anything_vitl14.pth」
          • 解像度: 512
          • Preview Imageノード: 生成された深度マップをプレビューします。
        2. モデルとControlNetの読み込み
          • Load Checkpointノード: 今回は「RealVisXl.safetensors」モデルを使用。
          • Load ControlNet Modelノード: 「controlnet-union-sdxl-1.0.safetensors」を読み込みます。
        3. プロンプト処理 (CLIPTextEncode ノード x2)
          • ポジティブプロンプト: 「1boy, solo, looking_at_viewer, brown_hair, spiky_hair, no_glasses, confident_expression, hoodie, indoors, sunlight, soft_lighting, detailed_background, aesthetic」
          • ネガティブプロンプト: 「bad hand,bad anatomy,worst quality,ai generated images,low quality,average quality, nsfw, nude, naked,」
        4. ControlNetの適用 (Apply ControlNet (Adovanced) ノード)
          • 深度マップ、ControlNet、およびプロンプトの条件付けを組み合わせます。
          • 強度: 0.40 (ControlNetの影響力)
        5. 潜在画像の準備 (Empty Latent Image ノード)
          • 「girl-for-controlnet.jpeg」と同じサイズである「1024×768」を設定
        6. 画像生成 (KSampler ノード)
          • Seed: 860227022998597
          • Steps: 20
          • CFG Scale: 8
          • Sampler: dpmpp_2m
          • Scheduler: karras
        7. 画像のデコードと保存
          • VAE Decode ノード: 生成された潜在表現を実際の画像にデコードします。
          • Save Image ノード: 最終的に生成された画像を “controlnet_lineart” という名前で保存します。

        5. ワークフローの検証

        それでは、ワークフローを実行してみましょう。ControlNetの強度を0.40で生成してみます。以下が生成結果です。しっかりプロンプトに従った画像になっています。

        画像

        参照元画像と比較してみましょう。構図を維持しながら、人物を変えることに成功しています。

        画像

        次にControlNetの強度を0.80にしてみます。そうすると、参照元画像の女性に近づき、ポニーテールの中性的な男性の画像が生成されました。

        画像

        反対に強度を0.10と低くしてみます。今度は参照元画像から離れ、体勢も変わってしまっています。

        画像

        以下が強度別の生成結果になります。強度が高くなるにつれ、参照元画像に近づき、強度が小さくなるにつれ、参照元画像に似なくなっていることが分かります。

        画像

        6. まとめ

        ControlNetは、画像生成AIの可能性を飛躍的に広げる革新的な技術です。輪郭線、深度情報、ポーズなど様々な条件をAIに与えることで、これまで以上にユーザーの意図を反映した画像生成が可能になります。この記事では、Canny Edge、Depth Map、Pose Estimationなど主要なControlNetの種類とその用途を紹介し、具体的なワークフロー例を通して、その驚くべき効果を実証しました。ControlNetを使いこなすことで、マーケティング素材の作成、イラストやデザイン制作、3Dモデリングなど、様々な分野で創造性を加速させることができます。ぜひ、ControlNetの力を体感し、あなたのクリエイティブな活動を新たなステージへと導いてください。

        次回は、 ControlNetでイラストを精密に実写化!を紹介します。
        乞うご期待!

        https://note.com/aicu/n/n4fafc970da0a

        X(Twitter)@AICUai もフォローよろしくお願いいたします!

        画像生成AI「ComfyUI」マスターPlan

        画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

        • メンバー限定の会員証が発行されます
        • 活動期間に応じたバッジを表示
        • メンバー限定掲示板を閲覧できます
        • メンバー特典記事を閲覧できます
        • メンバー特典マガジンを閲覧できます
        • 動画資料やworkflowといった資料への優先アクセスも予定

        ゼロから学ぶ「ComfyUI」マガジン

        https://note.com/aicu/m/md2f2e57c0f3c

        マガジン単体の販売は1件あたり500円を予定しております。
        2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

        https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

        もちろん、初月は無料でお試しいただけます!
        毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
        退会率はとても低く、みなさまにご満足いただいております。
        ✨️オトクなメンバーシップについての詳細はこちら


        この記事の続きはこちらから https://note.com/aicu/n/n151f019bcc92

        Originally published at https://note.com on Oct 17, 2024.

      2. [ComfyMaster24] LoRAで表現をもっと自由に! スタイルを使いこなそう

        生成画像のクオリティをさらに向上させたいと思いませんか?
        そこで注目すべきなのが「LoRA」です。LoRAは、Stable Diffusionなどの大規模言語モデルに、特定のスタイルやキャラクター、オブジェクトなどを効率的に学習させることができる技術です。少ないデータ量と計算リソースで、モデルの表現力を飛躍的に高めることが可能になります。

        こんにちわ、AICU media編集部です。
        ComfyUI マスターガイド」第24回目になります。
        本記事では、LoRAの仕組みから、ComfyUIでの具体的な活用方法、そして応用例まで、LoRAを最大限に活用するためのノウハウを詳細に解説します。LoRAをマスターして、画像生成の可能性をさらに広げましょう!

        前回はこちら
        [ComfyMaster23] 特別編: 画像の髪型を自由自在に変えてみよう! #ComfyUI

          1. LoRAとは

          LoRA(Low-Rank Adaptation)は、ファイチューニング特定のタスクやスタイルにモデルを適応させるために使用されます。LoRAは、モデルのパラメータを効率的に調整し、少ないデータで特定の出力を得ることを目的としています。

          LoRAの主な目的は、既存の大規模なAIモデルを特定のニーズに合わせて微調整することです。画像生成においては、LoRAを使用することで特定のスタイルやキャラクターを学習させることができます。これにより、ユーザーは自分の好みに合った画像生成が可能になります。

          LoRAは、モデルの重みを低ランクで調整する手法であり、計算資源を節約しつつ高い性能を維持します。具体的には、元のモデルの重み行列を低ランク近似し、新たなパラメータを追加することで学習を行います。この方法は、従来のファインチューニングよりも少ないデータと計算リソースで済むため、多くのユーザーにとって実用的です。

          LoRAのメリット

          • 軽量: LoRAのファイルサイズは小さく、ダウンロードや共有が容易です。通常のファインチューニング済みモデルと比較して、数十MBから数百MB程度です。
          • 効率的: 計算コストが低いため、GPUのメモリ消費量を抑えながらファインチューニングできます。また、学習時間も短縮できます。
          • 柔軟性: 複数のLoRAを組み合わせることで、様々なスタイルや特徴を表現できます。例えば、キャラクターのLoRAとスタイルのLoRAを組み合わせることで、特定のキャラクターを特定のスタイルで描くことができます。
          • 元のモデルへの影響なし: LoRAは元のモデルのパラメータを変更しないため、他のタスクへの影響を心配する必要がありません。LoRAを適用しない場合は、元のモデルと同じように動作します。
          • 微調整が可能: LoRAの強度は、strength パラメータで調整できます。これにより、LoRAの効果を細かく制御することができます。

          LoRAの具体例

          • スタイルの適用: 特定のアートスタイルやキャラクターの特徴を学習させることができます。例えば、LineAniRedmondPixel Art XLといったスタイル用LoRAモデルが存在します。
          • エフェクトの追加: 画像生成にエフェクトを追加するためにも使用されます。Dissolve StyleGlowNeon XLなどのモデルがあります。
          • 補正機能: 生成された画像に対してディテールや質感を向上させるためにも利用されます。Detail Tweaker XLなどのモデルがあります。
          • キャラクターの安定化: 特定のキャラクターやテーマに基づいた画像生成も可能です。ユーザーが用意したデータセットから学習したLoRAモデルは、そのキャラクター特有の特徴を維持した画像を生成します。例えば、Deltamon Official version1.0」や「ガンマミィ・ジェネレーターがそれに当たります。

          2. LoRAの探し方

          SDXL用のLoRAは、様々なサイトで公開されています。代表的なサイトとしては、以下のようなものがあります。

          • Civitai: 最大規模のStable Diffusionモデル共有サイトです。ユーザーフレンドリーなインターフェースと豊富な検索機能を備えています。各LoRAには、サンプル画像、使用方法、レビューなどが掲載されています。

          https://civitai.com

          • Hugging Face: 機械学習モデルの共有プラットフォームです。SDXLを含む様々なAIモデルのLoRAが公開されています。モデルカードには、LoRAの詳細情報、使用方法、ライセンスなどが記載されています。

          https://huggingface.co

          これらのサイトでは、キャラクター、スタイル、オブジェクト、衣装、背景など、様々なテーマのLoRAが公開されています。キーワード検索やタグ検索で、自分の好みのLoRAを見つけることができます。

          https://note.com/aicu/n/n02de834e3d5c

          https://corp.aicu.ai/ja/event20240516

          https://corp.aicu.ai/ja/vroid-studio-lora

          3. LoRAのインストール

          LoRAのインストールは、LoRAファイルをダウンロードし、「ComfyUI/models/loras」フォルダに格納するだけです。今回は、Dissolve Styleをインストールし、ComfyUIで使用してみます。
          このLoRAは、画像生成時にディゾルブ(溶解)効果(画像に溶解のような効果)を追加するためのモデルです。

          まず、以下のページにアクセスします。

          https://civitai.com/models/245889/dissolve-style-lora-15sdxl

          開いたページから、ダウンロードボタンを押下します。

          画像

          Google Colabの場合、Googleドライブ上の「ComfyUI/models/loras」フォルダにダウンロードしたファイルを格納してください。

          画像

          これでLoRAのインストールは完了です。

          4. LoRAの使い方

          LoRAには、適用すれば即時に発現するものと、プロンプトにトリガーワードを入力することで発現するものがあります。例えば、前述したDetail Tweaker XLのような補正系のLoRAの多くは、適用するだけで発現するものです。一方で、Dissolve Styleは、「ral-dissolve」というトリガーワードをポジティブプロンプトに入力することで効果を発揮します。多くのLoRAは、LoRAの説明ページにその内容が記載されています。LoRAを使用する際は、LoRAの説明をよく読んでから始めましょう。

          画像

          5. ワークフローの構築

          ComfyUIでのLoRAの使用は簡単です。標準ワークフローに標準ノードを1つ追加するだけで使用できます。以下が最終的なワークフローになります。赤枠のノードが標準ワークフローからの変更点になります。

          画像

          ワークフローは文末よりダウンロードください。

          今回追加したノードは、「Load LoRA」ノードです。Load CheckpointノードとCLIP Text Encode (Prompt)ノード、KSamplerノードの間に挿入します。各ウィジェットの用途は以下の通りです。

          • lora_name: 「ComfyUI/models/loras」フォルダ内のLoRAから適用するLoRAを選択します。
          • strength_model: モデルへのLoRAの影響力を設定します。値を高くすると、生成される画像がLoRAのトレーニング画像に似たスタイルを取り入れる傾向があります。
          • strength_clip: CLIPモデルへのLoRAの影響力を設定します。値を高くすると、プロンプト内の特定のキーワードやトリガーワードがLoRAのトレーニングデータから抽出されやすくなります。
          画像

          接続は以下の通りです。

          • Load CheckpointノードのMODEL/CLIP出力をLoad LoRAノードのmodel/clip入力に接続
          • Load LoRAノードのMODEL出力をKSamplerノードのmodel入力に説続
          • Load LoRAノードのCLIP出力を2つのCLIP Text Encode (Prompt)ノードのclip入力に説続
          画像

          最後にポジティブプロンプトの調整です。今回のLoRAを使用するには、「ral-dissolve」をポジティブプロンプトに追加する必要があります。標準ワークフローで使われているプロンプトの先頭に「ral-dissolve」を追加しました。最終的なプロンプトは以下になります。

          ral-dissolve, beautiful scenery nature glass bottle landscape, , purple galaxy bottle,
          画像

          6. ワークフローの実行

          それでは、ワークフローを実行してみましょう。まず、LoRAを適用しないで実行します。生成された画像は以下になります。

          画像

          次にLoad LoRAのstrength_modelstrength_clipを1.0にして生成します。画像に変化が見られましたが、ディゾルブには遠い感じがします。

          画像

          strength_modelを1.1にしてみます。これでディゾルブ効果が見られるようになりました。

          画像

          strength_clipも1.1にしてみます。strength_modelのみが1.1の時と変わりがありませんでした。プロンプトの効果は十分に効いているということでしょう。

          画像

          strength_modelを1.0に戻し、strength_clipを0.1ずつ増加させたところ、1.4でディゾルブ効果が見られました。CLIPの強度の影響度は、モデルの強度よりも弱いようです。

          画像

          最後にstrength_modelstrength_clipの両方とも1.5に設定し、生成を実行しました。かなり強くディゾルブ効果が出ていることが確認できます。

          画像

          以下がLoRAなしとLoRAあり(strength_modelstrength_clipが1.5)の比較画像です。LoRAを使用することで、好みの効果を追加できることが確認できました。

          画像

          他にも多くのLoRAが存在するので、ぜひご自分の好みのLoRAを探してみてください!


          X(Twitter)@AICUai もフォローよろしくお願いいたします!

          画像生成AI「ComfyUI」マスターPlan

          画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

          • メンバー限定の会員証が発行されます
          • 活動期間に応じたバッジを表示
          • メンバー限定掲示板を閲覧できます
          • メンバー特典記事を閲覧できます
          • メンバー特典マガジンを閲覧できます
          • 動画資料やworkflowといった資料への優先アクセスも予定

          ゼロから学ぶ「ComfyUI」マガジン

          https://note.com/aicu/m/md2f2e57c0f3c

          マガジン単体の販売は1件あたり500円を予定しております。
          2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

          画像生成AIなんでも質問コーナー|AICU: AI Creators Union生成AIクリエイターユニオン『AICU: AI Creators Union』は、「つくる人をつくる」をビジョンに活動するnote.com

          もちろん、初月は無料でお試しいただけます!
          毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
          退会率はとても低く、みなさまにご満足いただいております。
          ✨️オトクなメンバーシップについての詳細はこちら


          この記事の続きはこちらから https://note.com/aicu/n/ndb4d0ed583d7

          Originally published at https://note.com on Oct 16, 2024.

        1. [ComfyMaster19]「XY Plot」で実験結果を比較! 

          プロンプトの違いを確認するために、毎回プロンプトを書き換えて生成するのは面倒ですよね。
          これ、「XY Plot」を使うと、一括で確認できます!

          こんにちわ、AICU media編集部です。
          ComfyUI マスターガイド」第19回目になります。
          本記事では、カスタムノード「Efficiency Nodes for ComfyUI」「XY Plot」ノードを使い、プロンプトの動的置換と生成結果の変化をマトリクス形式で表示させる方法を解説します。

          前回はこちら

            1. 使用したカスタムノード

            今回は、「Efficiency Nodes for ComfyUI」というカスタムノードを使用します。「Efficiency Nodes for ComfyUI」は、ComfyUIのワークフローを効率化し、ノードの総数を減らすために開発されたカスタムノードのコレクションです。これにより、画像生成や編集プロセスがよりシンプルかつ効果的になります。

            https://cdn.iframe.ly/pZOur17?v=1&app=1

            このカスタムノードに含まれる「XY Plot」を使用して、パラメータによる生成結果の変化を一括で確認したいと思います。「XY Plot」は、パラメータを指定してグリッド上にプロットするノードで、生成結果の比較が容易になります。

            2. Efficiency Nodes for ComfyUIのインストール

            • メニューの「Manager」をクリックし、「ComfyUI Manager Menu」を開きます。
            画像
            • 「Custom Nodes Manager」をクリックします。
            画像
            • 上部の検索バーに「Efficiency Nodes for ComfyUI」と入力し、表示されたカスタムノードの「Install」をクリックします。
            画像
            • インストールが完了すると、再起動が求められるので、「Restart」をクリックします。
            画像
            • トップ画面に戻るので、メニューの「Refresh」をクリックします。
            画像
            • 再度「Custom Nodes Manager」画面を開き、上部の検索バーで「Efficiency Nodes for ComfyUI」を検索します。以下の画像のように表示されていれば、インストールが完了しています。
            画像

            3. 使用ノード解説

            Eff. Loader SDXL

            Eff. Loader SDXLは、「Load Checkpoint」「CLIP Text Encode (Prompt)」ノードを1つにまとめて使いやすくしたノードです。以下のような特徴を持ちます。

            • モデルのロードとキャッシュ: Checkpoint、VAE、およびLoRAタイプのモデルをロードおよびキャッシュすることができます。キャッシュ設定はnode_settings.jsonファイルで管理されます。
            • LoRA & Control Netスタックの適用: lora_stackおよびcnet_stack入力を介して、LoRAおよびControl Netスタックを適用することができます。これにより、複数のLoRAやControl Netモデルを一括で管理し、適用することが可能です。
            • プロンプト入力ボックス: ポジティブおよびネガティブプロンプトのテキストボックスが付属しており、プロンプトのエンコード方法をtoken_normalizationおよびweight_interpretationウィジェットを使用して設定することができます。
            • XY Plotノードとの連携: 「DEPENDENCIES」出力を「XY Plot」ノードに接続することで、XY Plotノードを用いた、パラメータごとの生成結果を一括で確認することができます。
            画像

            各ウィジェットの用途は以下のとおりです。

            • base_ckpt_name: 生成に使用するモデルを設定します。
            • base_clip_skip: ベースCLIPモデルでスキップするレイヤーの数を決定します。CLIP Skipは、入力したプロンプト(呪文)をどれだけ正確に画像に反映させるかを制御する指標です。CLIPのレイヤーは12層となっているため、1から12までの整数値で設定でき、値が小さいほどプロンプトを忠実に反映し、大きいほどプロンプトから離れた解釈をする傾向があります。SDXLの場合、CLIP Skipの効果は低いと言われています。
            • refiner_ckpt_name: リファイナーチェックポイントの名前を指定します。ベースモデルによって生成された出力を強化し、詳細と品質を向上させます。
            • refiner_clip_skip: リファイナーCLIPモデルでスキップするレイヤーの数を決定します。デフォルト値は0です。
            • vae_name: 使用する変分オートエンコーダ(VAE)の名前を指定します。VAEは画像生成プロセスで重要な役割を果たし、画像のエンコードとデコードを行います。VAEが含まれているモデルの場合、「Baked VAE」を選択することで、モデルのVAEを使用できます。
            • positive: ポジティブプロンプトを入力します。
            • negative: ネガティブプロンプトを入力します。
            • token_normalization: プロンプトにトークン正規化を適用するかどうかを決定します。トークン正規化は入力テキストの標準化に役立ち、モデルの理解と性能を向上させる可能性があります。設定値は以下のとおりです。
              • none(変更なし): このオプションでは、トークンの重みは変更されません。つまり、モデルが各トークンに割り当てる重みをそのまま使用します。重みの調整が不要な場合や、他の要因でトークンの影響を管理したい場合に使います。
                • 例:テキスト「beautiful cat」が入力され、トークン「beautiful」には重み1.2、「cat」には重み1.0が割り当てられたとします。この設定では、トークンの重みはそのままで、各単語が入力された通りの影響を持ちます。つまり、「beautiful」が「cat」よりも少し強調されます。
              • mean(平均調整): すべてのトークンの重みをシフトさせ、意味のあるトークンの平均が1になるように調整します。たとえば、入力テキストにいくつかの単語が含まれており、それぞれのトークンに異なる重みが付与されていた場合、この設定は全体のバランスを取って、過剰に重みが偏ることを防ぎます。これにより、特定のトークンが他のトークンより過剰に強調されることがなくなります。
                • 例:テキスト「beautiful cat」を入力し、トークン「beautiful」に重み1.2、「cat」に重み1.0が割り当てられた場合、この設定では、トークンの重みがシフトされて、全体の重みの平均が1になるように調整されます。例えば、結果として「beautiful」の重みが1.1、「cat」の重みが0.9になるかもしれません。これにより、全体のバランスが取れ、過度な強調が防がれます。
              • length(長さに基づく調整): 長い単語や埋め込みに関連するトークンの重みを、その長さに応じて均等に分割します。この分割は、異なる長さのトークンに対しても重みの大きさを一定に保つために行われます。
                • 例:テキスト「transformation」をトークン化したときに、単語が3つのトークン(「trans」「for」「mation」)に分割され、それぞれに重み1.5が割り当てられたとします。この設定では、単語全体の重みが均等に分配され、各トークンの重みは1.29になります(具体的には sqrt(3 * pow(0.35, 2)) = 0.5 に基づきます)。長い単語でも重みのバランスが保たれ、他の単語と比較して過剰に強調されることがありません。
              • length+mean(長さと平均の組み合わせ): この設定では、まずトークンの長さに基づいて重みを分割し、その後、重みの平均を1にシフトします。長い単語が過剰に強調されることを防ぎつつ、全体のバランスも調整するという、2つの手法を組み合わせた方法です。これは、長い単語がテキストの意味に不均衡な影響を与えないようにするのに役立ちます。
                • 例:テキスト「beautiful transformation」で、「beautiful」に重み1.2、「transformation」に重み1.5が割り当てられたとします。この設定では、まず「transformation」の重みを3つのトークン間で分割し(各トークンの重みは1.29)、その後、全体のトークンの重みの平均を1にシフトします。これにより、全体のバランスがさらに調整されます。
            • weight_interpretation: この設定は、特定のトークンや単語に割り当てられた重みをどのように処理するか、特に「重みを増加させる(up-weight)」または「減少させる(down-weight)」ときにどのようなアプローチを取るかを制御します。設定値は以下のとおりです。
              • comfy(ComfyUIのデフォルト): デフォルト設定です。この方法では、CLIPベクトルがプロンプト(入力テキスト)と空のプロンプト(何もない状態)との間で線形補間されます。つまり、プロンプトの重みを「0から100%」の間で調整することが可能です。このため、特定の単語やトークンの重要性を調整したい場合に柔軟に対応できます。
                • 例:テキスト「beautiful cat」で、「beautiful」に重み1.5を割り当てたとします。この設定では、「beautiful」と「完全に空のプロンプト」の間で線形補間されます。結果として、「beautiful」がやや強調されつつも、完全に突出しないように調整されます。これは「beautiful」が一定以上強調される一方で、「cat」の影響も保持されます。
              • A1111: このオプションでは、CLIPベクトルがその重みに基づいてスケーリングされます。具体的には、トークンに与えられた重みが大きくなるほど、そのトークンがテキスト全体に与える影響も大きくなります。たとえば、重みを2倍に設定した場合、そのトークンは通常の2倍の強調度で扱われます。逆に、重みを0.5倍にすると、影響度は半分になります。
                • 例:テキスト「beautiful cat」に対し、「beautiful」の重みを2倍に設定すると、この設定では「beautiful」の重みが2倍にスケーリングされます。つまり、「beautiful」の影響が「cat」の2倍になるため、「beautiful」がかなり強調されます。逆に、重みを0.5に設定すると、「beautiful」の影響が半減し、「cat」とのバランスが取られる形になります。
              • compel: compel方式の重み付けは、ComfyUIと似ていますが、特定の条件下で異なる動作をします。特に、down-weight(重みを下げる)場合に、マスクされた埋め込みを使用してトークンの影響を減らします。これは、トークンの影響を完全に無視するのではなく、段階的にその影響を減らす手法です。上方の重み付け(up-weight)はComfyと同じように扱われます。
                • 例:テキスト「beautiful cat」で「beautiful」に重み2.0、「cat」に重み0.5を割り当てたとします。この設定では、compelは上方の重み付けをcomfyと同じように処理しますが、「cat」のダウンウェイトはマスクされた埋め込みを使って実行されます。つまり、「cat」の影響は完全に消えるのではなく、少しずつ減少します。この手法は、特定の単語を完全に無視せず、少し影響を残すという意味で微調整が可能です。
              • comfy++: 上方の重み付けでは、単語がプロンプトと、その単語がマスクされたプロンプトの間で線形補間されます。つまり、ある単語の影響を徐々に消していくという動作です。また、compelスタイルのダウンウェイトも採用されており、特定の単語の影響を段階的に減少させることができます。この方法は、細かい調整が必要な場面で有効です。
                • 例:テキスト「beautiful cat」で「beautiful」に重み2.0を設定し、comfy++を使用します。この場合、「beautiful」はプロンプトと「beautiful」がマスクされたプロンプトの間で線形補間されます。つまり、「beautiful」の影響を少し抑えつつも、完全に無視するわけではありません。また、ダウンウェイトはcompel方式と同様に行われます。
              • down_weight: 最大の重みが「1」になるように重みを再スケーリングします。つまり、常にdown-weight(重みの減少)操作しか行いません。この方式では、特定のトークンが他のトークンに比べて過度に強調されることはありません。compelスタイルのダウンウェイトを使用するため、徐々に重みが減少していく過程でトークンの影響が最小化されます。
                • 例:テキスト「beautiful cat」で「beautiful」に重み1.5、「cat」に重み1.0が割り当てられたとします。この設定では、最大重みを1にスケーリングするため、「beautiful」の重みが1に再スケーリングされます。結果として、「beautiful」と「cat」のバランスが取れ、過度に強調されることがなくなります。常にダウンウェイトのみが行われるため、重みが1以上になることはありません。
            • empty_latent_width / empty_latent_height: 空の潜在空間の幅と高さを設定します。潜在空間の次元は、生成される画像の解像度とアスペクト比を定義するために重要です。
            • batch_size: 一度に生成される画像の数を指定します。バッチサイズが大きいほど処理時間が短縮されますが、より多くの計算リソースが必要です。
            • lora_stack / cnet_stack: LoRAモデルやControlNetモデルのスタックを指定できます。これらはベースモデルを微調整し、特定のスタイルや特徴を追加するために使用されます。

            KSampler SDXL (Eff.)

            「KSampler SDXL (Eff.)」ノードは、「KSampler」ノードに以下のような便利な機能を加えた拡張ノードになります。

            • ライブプレビューで生成を確認したり、VAEで画像をデコードする機能を備えています。
            • シードをより明確に管理できる特別なシードボックスを搭載しています。(選択されたシードの動作を適用するために-1のシードを使用)
            • XYプロットスクリプトなど、さまざまなスクリプトを実行できます。スクリプトを有効化するには、入力接続を接続するだけです。

            各ウィジェットの用途は以下になります。

            • noise_seed: シード値を設定します。シード値は、直接入力の他に、「Randomize / Last Queued Seed」ボタンをクリックすることで、-1と最後の生成に使用されたシード値を切り替えることが可能です。
            画像
            • steps: サンプリングのステップ数を指定します。値が大きいほど高品質な画像が生成されますが、処理時間も長くなります。
            • cfg: Classifier-Free Guidanceのスケールを制御します。値が高いほど、プロンプトに忠実な画像が生成されます。
            • sampler_name: 使用するサンプリングアルゴリズムを選択します。初期値はeulerになります。
            • scheduler: サンプリングプロセスのスケジューリング戦略を指定します。初期値はnormalになります。
            • start_at_step: サンプリングを開始するステップを指定します。部分的なサンプリングや既存画像の改良に使用できます。
            • refine_at_step: リファイナーモデルに切り替えるステップを指定します。-1に設定するとリファイナーは無効になります。
            • preview_method: 生成中の画像のプレビュー方法を指定します。
              • auto: システムが最適なプレビュー方法を自動的に選択します。通常は最も効率的なオプションです。
              • latent2rgb: 潜在空間の画像を直接RGBに変換してプレビューします。高速ですが、品質は低くなります。
              • taesd: Tiny AutoEncoder for Stable Diffusionを使用してプレビューを生成します。品質と速度のバランスが取れています。
              • none: プレビューを生成しません。最も高速ですが、進捗を視覚的に確認できません。
            • vae_decode: VAE(Variational Autoencoder)を使用して潜在画像を最終出力画像にデコードするかどうかを制御します。
              • true: 標準的なVAEデコードを実行します。
              • true (tiled): タイル化されたVAEデコードを実行します。大きな画像や高解像度画像に適しています。
              • false: VAEデコードを実行せず、潜在画像のままにします。この時、出力「IMAGE」は機能しないため、ノードを接続しているとエラーになります。
              • output only: 最終結果のみをVAEデコードします。中間ステップはデコードしません。
              • output only (tiled): 最終結果のみをタイル化されたVAEデコードで処理します。

            XY Plot

            「XY Plot」ノードは、特定のウィジェットの値やプロンプトなどを指定の条件で変化させ、その変化をX/Y軸に一度に表示するために使用するノードです。XY Plotノードの特徴は以下になります。

            • 2次元グリッド形式での表示: X軸とY軸に異なるパラメータを設定し、それらの組み合わせによる画像生成結果を2次元グリッドで表示します。
            • 多様なパラメータ比較: CFG、シード値、チェックポイント、LoRA強度など、様々なパラメータを比較できます。
            • スクリプト生成: XY Plotノードは内部的にスクリプトを生成し、KSampler (Efficient)ノードと連携して動作します。
            画像

            各ウィジェットの用途は以下になります。

            • grid_spacing: グリッド間のスペースを設定します。
            画像
            • XY_flip: X軸とY軸を入れ替えるオプションです。
            画像
            • Y_label_orientation: Y軸のラベルの向きを設定します。
            画像
            • cache_models: モデルをキャッシュするかどうかを設定します。
            • ksampler_output_image: KSamplerの出力画像の形式を指定します。「Images」の場合、プロットされた1枚ずつの画像が出力されます。「Plot」の場合、1枚に全ての生成画像がプロットされた画像が出力されます。
            画像

            XY Input: Prompt S/R

            「XY Input: Prompt S/R」ノードは、XY Inputノードの入力「X」「Y」に接続し、プロンプトを制御するノードです。search_txtで指定した文字列をreplace_1, replace_2…で指定した文字列に次々と置換しながら生成を行います。

            画像

            各ウィジェットの用途は以下になります。

            • target_prompt: 置換対象のプロンプトをポジティブ、ネガティブから選択します。
            • search_txt: 置換対象の文字列を指定します。例えば、「1girl, portrait」というプロンプトがある場合、「portrait」をsearch_txtに設定することで、次のウィジェット「replace_1」「replace_2」…の文字列に「portrait」を置換します。
            • replace_count: 置換する回数を設定します。この回数を増減させることで、「replace_x」の入力欄が増減します。
            • replace_x: 置換元の文字列を設定します。

            4. ワークフロー

            ワークフローの全体像は以下になります。

            画像

            ワークフローは、文末で配布しています。

            プロンプトと置換元文字列の設定

            ポジティブプロンプト、ネガティブプロンプトには、以下を設定しました。

            // ポジティブプロンプト
            best quality, 1girl, solo, long_hair, smile, casual dress, very_long_hair, blonde_hair, standing relaxed, portrait,

            // ネガティブプロンプト text, watermark,

            置換元文字列は、X軸に「portrait」の置換として、「full body」「from side」「from behind」、Y軸に「standing relaxed」の置換として、「crossing arms」「hands on hips」「raising one hand」を設定しています。

            5. 実行結果を確認する

            それでは、メニューの「Queue Prompt」をクリックして、ワークフローを実行してみましょう。以下が生成結果になります。X軸、Y軸でプロンプトによる生成結果の違いを一目で確認できます。

            画像

            今回は、プロンプトの比較をしてみましたが、これ以外にも「XY Input: CFG Scale」ノードや「XY Input: Steps」ノードなど、プロットに使えるノードがあるので、これらのノードを使ってウィジェットの変化を確認してみてください。

            次回は、ComfyUIをAPI化する方法を紹介します。乞うご期待!

            X(Twitter)@AICUai もフォローよろしくお願いいたします!

            画像生成AI「ComfyUI」マスターPlan

            画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

            • メンバー限定の会員証が発行されます
            • 活動期間に応じたバッジを表示
            • メンバー限定掲示板を閲覧できます
            • メンバー特典記事を閲覧できます
            • メンバー特典マガジンを閲覧できます
            • 動画資料やworkflowといった資料への優先アクセスも予定

            ゼロから学ぶ「ComfyUI」マガジン

            https://note.com/aicu/m/md2f2e57c0f3c

            マガジン単体の販売は1件あたり500円を予定しております。
            2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

            https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

            もちろん、初月は無料でお試しいただけます!
            毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
            退会率はとても低く、みなさまにご満足いただいております。
            ✨️オトクなメンバーシップについての詳細はこちら

            メンバーシップ向けボーナストラック


            この記事の続きはこちらから https://note.com/aicu/n/ncb1141cab2ae

            Originally published at https://note.com on Sept 19, 2024.

          1. [ComfyMaster16] ComfyUIでImage-to-Image(i2i)を始めよう

            「写真の表情を変えたい」、「イラストをリアルな絵画風にしたい」…
            それ、i2iで実現できます!

            こんにちわ、AICU media編集部です。
            ComfyUI マスターガイド」、いよいよ今回から「Image-to-Image(i2i)編」に突入します。
            この記事では、ComfyUIを使用したi2iの基本から応用まで、実践的なステップを踏んで解説していきます。

            前回はこちら。初回はこちら

            1. Image-to-Image(i2i)とは

            Image-to-Image(i2i)とは、既存の画像を入力として使用し、新しい画像を生成する技術です。元の画像の構造や特徴を保持しながら、新しい要素を追加したり、スタイルを変更したりすることができます。

            ComfyUIでのi2iは、通常の画像生成と同じノードの多くを使用しますが、主な違いは入力に既存の画像を使用することです。この技術は、写真の編集や修正、アートスタイルの変換、キャラクターデザインの変更、風景画の変更や拡張など、幅広い用途に活用できます。

            今回は、インペインティングによる表情の変更と、アニメ調からリアル調へのスタイル変換を解説します。

            2. インペインティングによる表情の変更

            では、実際にComfyUIでi2iのワークフローを構築してみましょう。今回は、以下の画像の表情を変えたいと思います。

            画像
            • ワークフローが埋め込まれたPNG画像(webp形式ではなく)とGoogle Colabでの ComfyUI i2i編ノートブックは文末にて提供しています
            • メニューの「Load Default」をクリックし、標準のワークフローをロードした状態にします。モデルはstable-diffusion-xl-base-1.0を使用します。
            画像
            • 次に「Load Image」ノードを追加し、「choose file to upload」から対象の画像をアップロードします。
            画像
            • ウィジェット用で右クリックし、表示されたメニューから「Open in MaskEditor」をクリックします。
            画像
            • マスク範囲を指定するためのキャンバスが表示されます。
            画像
            • 今回は、表情を変更したいので、顔をブラシで塗りつぶします。
            • 「Thikness(ペンの太さ)」「Opacity(不透明度)」「Color(ペンの色)」は作業用のパラメータです。最終画像への影響はありません。
            • その後、「Save to node」をクリックします。
            • 以下のように顔がマスキングされます。
            画像
            • 次に、「VAE Encode (for inpainting)」ノードを追加します。
            • 「Load Image」の出力「IMAGE」「MASK」を、それぞれ「VAE Encode (for inpainting)」ノードの入力「pixels」「mask」に接続します。
            • 「Load Checkpoint」ノードの出力「VAE」「VAE Encode (for inpainting)」ノードの入力「vae」に接続します。
            画像
            • 「Empty Latent Image」ノードを削除します。
            画像
            • 「VAE Encode (for inpainting)」ノードの出力「LATENT」「KSampler」ノードの入力「latent_image」に接続します。
            画像
            • ポジティブプロンプトを「1girl, smile」に変更します。
            画像
            • これで「Queue Prompt」をクリックし、生成を実行します。以下が生成結果です。表情は変わりましたが、周囲との馴染みが若干悪いです。
            画像
            • 生成結果を調整する際は、「KSampler」ノードの「denoise」の値を調整してください。この値を 1.0から 0.9, 0.8,…と下げていくことで、変化の度合いを調整できます。
            画像

            denoise = 0.8

            画像

            denoise = 0.75

            画像

            ※このパラメーターを 0.8 以下にすると、破綻しやすくなるので段階を踏みながら設定していくことをおすすめします。

            細かな制御をしたい場合はVAE Encode (for Inpainting) のパラメータ「grow_mask_by」も操作するとよいでしょう。

            「grow_mask_by」を小さい値にすると、境界線が目立つようになります。

            画像
            画像

            逆に、「grow_mask_by」を大きな値にすると境界が曖昧になります。なお最大値は64です。大きくすると処理時間が長くなります。

            denoise = 0.9, grow_mask_by = 64, seed = 1

            画像

            バッチ生成してみましょう。
            denoise = 0.9, grow_mask_by = 64, seed = 5

            画像

            3. アニメ調からリアル調へのスタイル変換

            先ほどのワークフローを利用し、アニメ調からリアル調へのスタイル変換をします。ワークフローの変更点としては、以下になります。

            • 顔に掛けていたマスクを外します。今回はスタイルを変えるので、画像全体を対象とするためです。マスクの外し方は、「Open in MaskEditor」でマスク用のキャンバスを開き、左下の「Clear」をクリックし、マスクを削除後、「Save to node」をクリックします。
            画像
            • 「VAE Encode (for inpainting)」ノードを「VAE Encode」ノードに変更します。「VAE Encode」ノードは、「VAE Encode (for inpainting)」ノードからマスクの入力が削除されたバージョンです。
            画像
            • 使用するモデルをRealVisXL_V4.0.safetensorsに変更します。RealVisXLは、実写の描写が得意なモデルで、これを利用することでリアル調のスタイルに変換します。以下のリンクからRealVisXLをダウンロードし、「ComfyUI/models/checkpoints」フォルダに格納してください。

            ※ダウンロード済みの場合は選択するだけになります。

            https://huggingface.co/SG161222/RealVisXL_V4.0/blob/main/RealVisXL_V4.0.safetensors

            • ポジティブプロンプトを「1girl」にします。表情は変えないので、smileは削除します。
            画像
            • 「KSampler」ノードの「denoise」を0.55-0.70程度に設定します。ここは、生成結果を確認しながら調整してください。
            画像
            • ここまでの設定で画像生成してみましょう。以下が生成結果です。元画像からスタイルが変わっていることが確認できます。
            画像

            4. 倫理的考慮事項

            i2iの使用には倫理的な配慮が必要です:

            1. 著作権: 他者の作品を無断で使用しない。特にdenoiseを下げすぎると、依拠性や類似性を意図して侵害することになります。
            2. プライバシー: 個人を特定できる画像の使用に注意
            3. ミスインフォメーション: 偽の画像やディープフェイクなど、誤解を招く画像の作成を避ける
            4. 不適切なコンテンツ: 有害や攻撃的な画像の生成を控える

            画像生成AIの責任は生成者にあります。責任ある使用を心がけ、創造性と倫理のバランスを保つことが重要です。

            ▶画像生成AIクリエイター仕草(v.1.0)

            【参考】AUTOMATIC1111での i2i 関連情報はこちら

            https://note.com/aicu/n/n08ebe0637a41

            5. まとめ

            ComfyUIでのi2i技術は、あなたのクリエイティブな可能性を大きく広げるツールです。基本的なワークフローの構築から始まり、パラメータの微調整、高度なテクニックの適用まで、段階的に技術を磨いていくことで、より印象的で独創的な画像を生成できるようになります。

            最後に、AIを使用した創作活動には倫理的な配慮も必要です。著作権や個人情報の扱いには十分注意し、責任ある利用を心がけましょう。

            この記事を参考に、ComfyUIでのi2i探索を楽しんでください。新しい発見や素晴らしい創作の旅が、あなたを待っています!

            次回は、image-to-image編 第2回「Outpainting機能」を紹介します。
            乞うご期待!

            X(Twitter)@AICUai もフォローよろしくお願いいたします!

            画像生成AI「ComfyUI」マスターPlan

            画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

            • メンバー限定の会員証が発行されます
            • 活動期間に応じたバッジを表示
            • メンバー限定掲示板を閲覧できます
            • メンバー特典記事を閲覧できます
            • メンバー特典マガジンを閲覧できます
            • 動画資料やworkflowといった資料への優先アクセスも予定

            ゼロから学ぶ「ComfyUI」マガジン

            https://note.com/aicu/m/md2f2e57c0f3c

            マガジン単体の販売は1件あたり500円を予定しております。
            2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

            https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

            もちろん、初月は無料でお試しいただけます!
            毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
            退会率はとても低く、みなさまにご満足いただいております。
            ✨️オトクなメンバーシップについての詳細はこちら

            お楽しみ、メンバー向けボーナストラックには、今回のi2iサンプルワークフローが埋め込まれたPNGファイルと、i2i編で便利な Google Colab用 ComfyUI ノートブック(新作)、さらに今回の内容で使った workflowファイルをお贈りします。もりだくさんです!


            この記事の続きはこちらから https://note.com/aicu/n/nfc8eb955e57b

            Originally published at https://note.com on Sept 15, 2024.

          2. [ComfyMaster15] ComfyUIの{動的|推奨}プロンプトの落とし穴!

            「思い通りの画像を生成したい!けど思うようにいかない…」という方、TextToImage(t2i)を使いこなせていますか?
            Stable Diffusionの内部の仕組みを理解し、ComfyUIでのText to Imageテクニックを身につけて、思い通りの画像を生成できるようになりましょう!

            こんにちわ、AICU media編集部です。
            ComfyUI マスターガイド」第15回目になります。
            この記事では、ComfyUIを始めたばかりの方向けに、プロンプトの基本から応用、そしてComfyUI特有のテクニックまでを、実用的なプロンプト例を交えながらわかりやすく解説します。

            前回はこちら

            プロンプトテキストのランダム置換

            ComfyUIでは、{選択肢1 | 選択肢2 | 選択肢3}のように記述することで、プロンプトの一部をランダムに選択することができます。

            プロンプト例

            A {red | blue | green} apple on a table

            このプロンプトでは、red、blue、greenのいずれかがランダムに選択され、テーブルの上にある赤い、青い、または緑のりんごの画像が生成されます。

            画像

            AUTOMATIC1111での「Dynamic Prompt」に当たる機能ですね!でもComfyUIの場合は特に機能拡張などは不要です。

            https://note.com/aicu/n/n56807d61efac

            動的プロンプトの注意点

            注意点があります。実は、Empty Latent Imagebatch_sizeを増やしたとしても、一度のワークフローで生成される画像には、同じプロンプトが適用されます。動的プロンプトによるランダム置換を適用するには、Queue Promptを複数回実行する必要があります。
            以下は、batch_sizeを4にして実行した例です。全て緑のりんごが生成されています。

            画像
            画像

            Queue Promptを複数回実行した場合の結果も見てみましょう。
            Extra optionsにチェックを入れて、Batch countを4にして生成します。

            画像
            画像

            先ほどと違い、ランダム置換が適用されています!

            これを応用して、キャラクターの生成でもランダム置換が適用されるかテストをしてみます。以下、テストで使用したプロンプトになります。

            1girl, short bob, {wearing dress | wearing t-shirt and jeans | coveralls}, looking at me and smiling, realistic, full body

            ショートボブの少女がワンピース or Tシャツとジーンズ or 作業着を着て笑っている。という設定

            画像

            モデルカードに注目! 推奨プロンプト

            他のモデル(CheckpointやLoRAなど)を使用する際は、そのモデルが推奨するプロンプトを使用しましょう。モデルが推奨するプロンプトは、モデルの説明ページに書かれているので、モデルを使用する前にしっかり説明をよむことが大切です。

            Checkpointの例

            Checkpointの例を見てみましょう。以下のRealVisXL V4.0というモデルのページを確認してみます。

            https://huggingface.co/SG161222/RealVisXL_V4.0

            説明を読むと、Recommended Negative Promptの項に以下のプロンプトが記載されています。

            (face asymmetry, eyes asymmetry, deformed eyes, open mouth)
            画像
            https://huggingface.co/SG161222/RealVisXL_V4.0

            これは、RealVisXL V4.0を使用する際は、ネガティブプロンプトに上記のプロンプトを使用することを推奨しています。他にもHiresFixでの推奨設定なども書かれています。RealVisXL V4.0を使用する際は、ネガティブプロンプトに指定のプロンプトを入力し、この種の推奨設定をしっかり理解することで、より高品質な画像を生成することができます。

            新しいモデルを試すときにも、利用規約やライセンスと並んで、推奨プロンプトや設定はしっかり読みましょう!

            LoRAの例

            次にLoRAの例を見てみましょう。以下のデルタもんLoRAを確認してください。

            https://civitai.com/models/492694

            デルタもんLoRAのページを見ると、「The trigger word is ap_deltamon.」と記載があります。

            画像

            <lora:deltamon_official_v1.0:1.0>, ap_deltamon,1girl,solo,white_background,simple_background

            ap_deltamonだけでもかなり正確に生成できる。

            このLoRAを使用する際は、ポジティブプロンプトに「ap_deltamon」を含めることで、デルタもんを生成できる、とあります。
            トリガーワードがわからないと、LoRAを活用することができませんから、超重要情報です。

            まとめ

            この記事では、ComfyUIでSDXLのプロンプトを記述する基本的な方法から、応用的なテクニックまでを紹介しました。プロンプトエンジニアリングは、試行錯誤を通して習得していくものです。様々なプロンプトを試してみて、自分にとって最適な表現方法を見つけてみましょう。

            ComfyUIとSDXLは、非常に強力な画像生成ツールです。プロンプトの力を最大限に活用することで、あなたの創造性を形にすることができます。ぜひ、色々なプロンプトを試して、素晴らしい画像を生み出してください!

            次回は、image-to-imageの方法を紹介します。乞うご期待!


            【お知らせ】「デルタもん4コマ漫画コンテスト」開催中!

            【応募方法】

            1. 「デルタもん」をテーマにしたオリジナル漫画を作成する
            2. 作品をX(Twitter)に投稿し、応募フォームへ記入します
              エントリーフォームのURL → https://j.aicu.ai/Delta4manga

            必須ハッシュタグ #デルタもん4コマ #AICU #BlendAI
            締め切り:2024年9月10日(火)23:59

            審査期間:2024年9月11日(水)~2024年9月13日(金)
            結果発表:2024年9月14日(土) AICU media公式noteにて発表(予定)!

            X(Twitter)@AICUai も忘れずフォローよろしくお願いいたします!


            画像生成AI「ComfyUI」マスターPlan

            画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

            • メンバー限定の会員証が発行されます
            • 活動期間に応じたバッジを表示
            • メンバー限定掲示板を閲覧できます
            • メンバー特典記事を閲覧できます
            • メンバー特典マガジンを閲覧できます
            • 動画資料やworkflowといった資料への優先アクセスも予定

            ゼロから学ぶ「ComfyUI」マガジン

            https://note.com/aicu/m/md2f2e57c0f3c

            マガジン単体の販売は1件あたり500円を予定しております。
            2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

            https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

            もちろん、初月は無料でお試しいただけます!
            毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
            退会率はとても低く、みなさまにご満足いただいております。
            ✨️オトクなメンバーシップについての詳細はこちら

            本日のメンバーシップ向けボーナストラックは犬沢某@InsBow さんのカバーアート(文字入れなし)です!
            かわいいイラストをいつもありがとうございます!


            この記事の続きはこちらから https://note.com/aicu/n/n7f69b22479c9

            Originally published at https://note.com on Sept 6, 2024.

          3. [ComfyMaster13]ComfyUIでのTextToImageを極める!! (3)Concatで複数CLIPをつなぐ

            ComfyUIで「思い通りの画像を生成したい!けど思うようにいかない…」という方、TextToImage(t2i)を使いこなせていますか?
            Stable Diffusionの内部の仕組みを理解し、ComfyUIでのText to Imageテクニックを身につけて、思い通りの画像を生成できるようになりましょう!

            こんにちわ、AICU media編集部です。
            ComfyUI マスターガイド」第13回目になります。

            前回は「ComfyUIでのTextToImageを極める!!(2)Combineでプロンプト融合」と題して複数プロンプトを組み合わせての生成について解説いたしました。
            今回は、長文プロンプトを分割して意図した絵を生成する方法を解説いたします。

            前回「ComfyUIでのTextToImageを極める!!(2)Combineでのプロンプト融合」はこちら

            前回は複数CLIPの活用として「Combine」を学びました。ComfyUIでは、複数のCLIPTextEncodeノードとConditioning(Combine)ノードを組み合わせることで、複数のプロンプトを同時に使用できます。例えば「龍」と「虎」を別々のCLIPTextEncodeノードに指定すると、「龍」と「虎」を組み合わせた画像を生成することができるようになりました。

            でも今回のカバーアートのような「複数の人物を一つの画像で描くためには?」…?今回はConcat機能と複数CLIPを使って「プロンプトの限界」を超えていきます。

              CLIPの内部と「Concat」

              まず、自然言語処理やStable Diffusionにおける「トークン」とは、プロンプトに入力する単語や文字列といった「テキストデータを処理する際に使用される基本的な単位」を指します。1単語を1トークンとしてカウントし、区切りに使われるカンマ(,)も1トークンとみなされます。
              モデルにもよりますが、SDXLの場合は75トークン(≒単語数)が1つの処理単位(バッチ)であり、75トークンを超える長いプロンプトの場合は、プロンプトを複数のバッチに分割して処理する方法が推奨されます。

              長いプロンプトをChatGPTで作ってみる

              例えば、 “A beautiful garden with red roses and white lilies blooming under a clear blue sky” というプロンプトがあるとします。

              画像
              画像

              例えばChatGPTを使って「もっと詳細を!」と作文してもらいました。
              プロンプトとしてはこんな感じです。

              extract this stable diffusion prompt longer to 75 tokens.
              “A beautiful garden with red roses and white lilies blooming under a clear blue sky”
              make more detail for each words.

              (このStable Diffusionのプロンプトを75トークンに長く引き延ばします。
              「澄み切った青空の下、赤いバラと白いユリが咲き誇る美しい庭」
              それぞれの単語をより詳しく説明)

              A stunning, vibrant garden filled with deep red roses, their petals velvety and rich, alongside pristine white lilies, their petals delicate and gracefully open, all flourishing under a vast, clear blue sky with soft clouds gently drifting in the distance.

              (深紅のバラが咲き誇る見事な庭園。その花びらはビロードのように滑らかで、濃厚な色合いです。その傍らには、花びらが繊細で優雅に開く純白のユリが咲いています。すべては広大な澄み切った青空の下で、遠くには柔らかな雲が静かに漂いながら、咲き誇っています)

              画像

              更に拡大していきます。「more」といえば、ChatGPTがどんどん作ってくれます。

              “A breathtaking, lush garden teeming with radiant, deep crimson roses, each petal exquisitely velvety and glowing under the sunlight. The roses stand tall and proud, surrounded by elegant, snow-white lilies with intricate, soft petals that curve gracefully outward. The lilies’ golden stamens catch the light, contrasting with their pure white petals. The garden is bathed in warm sunlight, the vibrant greenery of the foliage complementing the vivid flowers. Above, the expansive sky is a brilliant, azure blue, with delicate wisps of clouds painted across the horizon, creating a serene and peaceful atmosphere, where every bloom flourishes in perfect harmony with nature.”

              「息をのむほど見事な緑豊かな庭には、鮮やかな深紅のバラが咲き乱れ、その花びらは、日光に照らされて、どれもこれも見事にベルベットのように艶やかです。バラは堂々と誇らしげに咲き、その周りには、複雑に入り組んだ柔らかな花びらが優雅に外側へと反り返る、エレガントな純白のユリが咲いています。ユリの黄金色の雄しべは光を浴びて輝き、純白の花びらとコントラストを描いています。庭は温かい日差しに包まれ、鮮やかな花を引き立てる葉の生き生きとした緑色が映えています。頭上には広々とした空が鮮やかな紺碧色に輝き、水平線には繊細な雲の塊が描かれ、静かで穏やかな雰囲気を醸し出しています。そこでは、あらゆる花が自然と完璧な調和を保ちながら咲き誇っています。」

              画像

              ここまで来ると美しさも素晴らしいのですが、ワードカウントすると101ワードありました。

              画像

              https://wordcounter.io/#google_vignette

              Tokenizerによるトークンの理解

              トークン数についても数えていきましょう。CLIPは実はOpenAIによって開発された技術です。2021年1月5日にOpenAIによって公開された「言語と画像のマルチモーダルモデル」で、インターネットから集めた画像とテキストの40億ペアからなるデータになっています(最新のStable DiffusionではOpenCLIPなど違うCLIPが使われています)。

              トークン化をカウントできるツール「Tokenizer」がOpenAIによって公開されています。

              https://platform.openai.com/tokenizer

              画像

              ワード数は101ワードでしたが、トークン数は137です。

              画像

              [Token IDs]ボタンを押すと、トークンのIDを見ることができます。

              画像

              Claudeを使ったComfyUIソースコードの理解

              トークン数が75トークン超の場合、一般的に言われている仕様は以下のようなものです。

              • 現在のバッチに入りきるだけの単語を追加します。
              • 残りの単語は新しいバッチの先頭に追加します。

              「誰かが言っている」という理解ではなく、実際のソースコードを分析してみる習慣をつけましょう。
              ComfyUIのsd1_clip.pyの処理をClaudeに解説してもらいました。

              https://github.com/comfyanonymous/ComfyUI/blob/8ea165dd1ef877f58f3710f31ce43f27e0f739ab/comfy/sd1_clip.py


              このコードではトークンの最小値と最大値が設定されています。SD1Tokenizer クラスを詳しく見てみましょう

              SD1Tokenizer Token Details
              Token RangeMinimum token value: 0 (pad token when `pad_with_end` is False)
              Maximum token value: Size of the vocabulary – 1
              Special TokensStart token: Typically 49406
              End token: Typically 49407
              Maximum Length`max_length`: 77 (default, can be set in the constructor)
              `max_tokens_per_section`: 75 (max_length – 2)
              Note: The actual vocabulary size and special token values may vary depending on the specific CLIP tokenizer used.

              SD1Tokenizer クラスでは、トークンの範囲が以下のように設定されています:

              1. 最小トークン値:
                • 基本的に 0 です。これは `pad_with_end` が False の場合のパディングトークンとして使用されます。
              2. 最大トークン値:
                • 明示的には設定されていませんが、使用される CLIPTokenizer の語彙サイズによって決まります。
                • 通常、CLIP モデルの語彙サイズは 49408 ですので、最大トークン値は 49407 になります。
              3. 特殊トークン:
                • 開始トークン(start_token): 通常 49406
                • 終了トークン(end_token): 通常 49407
              4. 最大長:
                • `max_length`: デフォルトで 77 に設定されています(コンストラクタで変更可能)
                • `max_tokens_per_section`: `max_length – 2` で、通常は 75 になります

              これらの値は、使用される具体的な CLIP トークナイザーによって若干異なる可能性があります。また、このコードでは埋め込み(embeddings)も扱えるようになっており、これらは通常のトークン範囲外の値を持つ可能性があります。トークナイザーの実装上、0 から語彙サイズ-1 までの整数値がトークンとして使用されます。特殊トークン(開始、終了、パディング)も含めて、この範囲内に収まるように設計されています。全てのトークンをバッチに分けたら、最後のバッチも空欄を追加して75トークンにします。


              Claudeによるソースコード分析は便利で丁寧です。

              他にもこんな質問もできます。

              この処理はどこで扱われますか?
              1.1 倍の重みになる (a b c d e) と、
              数値指定有りでその倍数になる (a b c d e:1.1)

              質問ありがとうございます。その特定の処理は、`token_weights` 関数内で行われています。この関数を詳しく見てみましょう。

              def token_weights(string, current_weight):
                  a = parse_parentheses(string)
                  out = []
                  for x in a:
                      weight = current_weight
                      if len(x) >= 2 and x[-1] == ')' and x[0] == '(':
                          x = x[1:-1]
                          xx = x.rfind(":")
                          weight *= 1.1
                          if xx > 0:
                              try:
                                  weight = float(x[xx+1:])
                                  x = x[:xx]
                              except:
                                  pass
                          out += token_weights(x, weight)
                      else:
                          out += [(x, current_weight)]
                  return out
              

              この `token_weights` 関数は、括弧で囲まれたテキストとその重みを処理します。具体的には(略)

              この関数により、(a b c d e)`は1.1倍の重みを持ち、(a b c d e:1.1) は指定された1.1倍の重みを持つようになります。また、これらの構造がネストされている場合も適切に処理されます。

              この処理の結果は、その後 `tokenize_with_weights` メソッド内で使用され、各トークンに適切な重みが割り当てられます。


              AUTOMATIC1111にはプロンプトの文法やトークン数のチェックを行う補助機能がありますが、ComfyUI にはありません。 これはComfyUI の自由度との引き換えになります。しかもAUTOMATIC1111WebUIとは文法は同じでも中身は全然違うようです。AUTOMATIC1111内部ではCLIPの隠れ層出力に重み付けをしたあと、元の平均で正規化します。つまりあるトークンを強くしようとすると、他のトークンは弱くなるようです。ComfyUIでは単に定数倍するのではなく、空文によるCLIP出力を基準に重み付けします。正規化はしないので、重みをつけたトークンのみが影響を受けます。

              このような「CLIPでプロンプトをどのように扱っているか?」はソースコードを直接読んだり分析したりする以外は、モデルとの対話を通して推測することができます。

              AUTOMATIC1111WebUIにおいては「BREAK構文」や、オープンソースで数多くの拡張機能やテクニックが開発されてきました。例えば日本人が開発したExtentions「Regional Prompter」を使うことで複数の特徴を持つ人物を同時にプロンプトで表現できるようになります。

              https://note.com/aicu/n/n832941df99c5

              これから解説する「Concat Conditioning」はComfyUIにおいてAUTOMATIC1111の「BREAK構文」を実装するものです。複数のCLIP出力を結合します。

              分割位置の明示的な指定

              • プロンプトは最初にトークン化されます。
              • トークン化されたプロンプトは、最大長(デフォルト77トークン)のバッチに分割されます。
              • 各バッチは開始トークン(START_TOKEN)、プロンプトのトークン(最大75トークン)、終了トークン(END_TOKEN)、必要に応じてパディングトークンで構成されます。
              • 8トークン以上の「長い単語」は、複数のバッチにまたがって分割される可能性があります。
              • バッチ間で直接的な文脈の共有はありません。
              • 各バッチは独立して処理されます。

              モデルは各バッチを個別に処理するため、バッチ間の長距離の依存関係は失われる可能性があります。
              しかし、全てのバッチが同じプロンプトの一部であるため、全体的なテーマや文脈は維持される傾向があります。

              つまりComfyUIにおいて「長いプロンプトをそのまま1つのCLIPに入力した場合、意図しない位置で分割され、その文脈が無視される可能性がある」ということは知っていてください。しかしこの特性を利用することで、プロンプトレベルで「描き分け」や「色分け」を明示的に行うことができます。

              Conditioning(Concat)ノードの実装

              Conditioning(Concat)ノードを使って「色分け」を実装してみましょう。
              Concatとは「結合」、という意味です。

              標準ワークフローを改造し、以下のプロンプトを意図した位置で分割し、「色分け」を明示的に行った画像を生成してみます。使用するプロンプトは以下になります。

              A fantasy landscape, a red castle on a hill, overlooking a vast green forest,

              「広大な緑の森を見下ろす丘の上の赤い城」という「緑の森」と「赤い城」が混在するプロンプトです。

              普通に生成するとこのような画像になります。色が混ざってしまう事が多くなり、制御性が低く、運任せになってしまいます。

              画像
              画像

              これを「赤い城」と「緑の森」をそれぞれ複数のCLIPで表現できるようになれば制御性がよさそうです。

              • メニューの「Load Default」をクリックし、標準のワークフローをロードした状態にします。前回の続きで改造しても構いません。
              画像
              • ポジティブプロンプト用のCLIPTextEncodeノードを1つ追加します。
              画像
              • 1つ目のCLIPTextEncodeノードのプロンプトに「a red castle on a hill」と入力します。これをCLIP1と呼ぶことにします。
              • 2つ目のCLIPTextEncodeノードのプロンプトに「A fantasy landscape, overlooking a vast green forest」と入力します。これをCLIP2と呼ぶことにします。
              画像
              • Conditioning(Concat)ノードを作成し、2つのCLIPTextEncodeノードの出力を接続します。
              画像
              • Conditioning (Concat)ノードの入力「conditioning_to」と「conditioning_from」をそれぞれ2つのCLIPを接続します。
              • どちらのCLIPを to と from につなぐのかは、この段階ではどちらでも構いません(後ほど解説します)。
              • Conditioning (Concat)ノードの出力をKSamplerpositive入力に接続します。
              画像
              • 以下が最終的なワークフローになります。
              画像

              これでCLIP1が「丘の上の赤い城」、CLIP2が「広大な緑の森を見下ろす幻想的な風景」となり、それぞれがConcatを通して条件づけされることになります。どんな画像が生成されるのでしょうか。

              以下の画像は、分割前と分割後の比較画像になります。分割前は、森は緑ですが、丘が赤くなっています。分割後は、城だけが赤くなっていることが確認できます。

              画像

              Default workflowにて「a red castle on a hill,
              A fantasy landscape, overlooking a vast green forest」(1344×768, seed:13)

              画像

              CLIP1「a red castle on a hill」(1344×768, seed:13)
              CLIP2「A fantasy landscape, overlooking a vast green forest」

              画像

              Conditioning_toとConditioning_fromの意味

              今回の実装例ではConditioning_toとConditioning_fromは「どちらのCLIPに接続しても構いません」としましたが、実際のプロンプトで絵作りをする時にはどのような意味を持っているのでしょうか。まずは入れ替えてみます。

              画像

              Conditioning_to: a red castle on a hill
              Conditioning_from: A fantasy landscape, overlooking a vast green forest
              512×512, seed:12

              画像

              Conditioning_to: A fantasy landscape, overlooking a vast green forest
              Conditioning_from: a red castle on a hill 
              512×512, seed:12

              画像
              画像

              絵的にはほとんど変化がありません。しかしこれはプロンプトが短すぎるせいかもしれません。

              SDXLを使った実験は次回に行うとして、今回は、このノードのソースコードを使って、Claudeに内部の定義を聞いてみましょう。

              https://github.com/comfyanonymous/ComfyUI/blob/febea8c1015888ea81e9efc92236bdb4ceabc623/nodes.py#L105

              Claudeによる解説


              ConditioningConcatクラスの concat メソッドを詳しく見てみると、conditioning_to と conditioning_from には実際に違いがあります。以下にその違いを説明します。

              1. 役割の違い:
                • conditioning_to は主要な条件付けであり、修正される対象です。
                • conditioning_from は付加的な条件付けで、conditioning_to に追加されます。
              2. 処理方法:
                • メソッドは conditioning_to の各要素に対してループを行います。
                • conditioning_from は最初の要素のみが使用されます。
              3. 連結(Concatenation)の方法:
                • conditioning_to の各要素の最初のテンソルが、conditioning_from の最初の要素の最初のテンソルと連結されます。
              4. メタデータの扱い:
                • conditioning_to の各項目のメタデータ(2番目の要素)は保持されます。
                • conditioning_from のメタデータは使用されません。
              5. 出力構造:
                • 出力は conditioning_to の構造を維持しつつ、各要素が連結によって修正されます。

              つまり、英語の「to」と「from」の直感的な意味とは逆で、正しい覚え方は

              「conditioning_to」がベースとなるプロンプトまたは主要な条件付け
              「conditioning_from」が追加または補足的な条件付け

              ということになりそうです(何度か確認しました)。
              以上、Conditioning(Concat)ノードと複数CLIPを結合して「プロンプトの限界」を超え、その内部動作をソースコードから確認しました。
              次回は実験を通して確認していきたいと思います。

              具体的にはこんな絵を作ってみます。

              画像

              まとめ:変化しつつある画像生成AIの常識

              これまで3回にわたってComfyUIでSDXLのプロンプトを記述する基本的な方法から、応用的なテクニックまでを紹介してきました。画像生成AIが登場したばかりの頃のTextToImage、特にプロンプトは、かつては試行錯誤を通してテキストや構造を工夫することが中心でしたが、AUTOMATIC1111とComfyUIのCLIPの扱いが大きく変わっていることに気づかれたと思います。
              AICUでは従来のような仮説や構造、文法や有効なワードを探求するだけでなく、ChatGPTやClaudeなどのLLMを使ってプロンプトそのものをメタに扱ったり、ソースコードを分析して正しい解釈を得たり、実験をして確かな情報を獲得していく方法が重要と考えて記事中で提案しています。次回はさらに実用的に、今回の内容を使って「複数のキャラクターを同時制御する」という実験を行います。様々なプロンプトを試してみて、自分にとって最適な表現方法を見つけてみましょう。

              ComfyUIは、非常に強力な画像生成ツールです。プロンプトの力を最大限に活用することで、あなたの創造性を形にすることができます。ぜひ、色々なプロンプトを試して、素晴らしい画像を生み出してください!

              X(Twitter)@AICUai もフォローよろしくお願いいたします!

              画像生成AI「ComfyUI」マスターPlan

              画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

              • メンバー限定の会員証が発行されます
              • 活動期間に応じたバッジを表示
              • メンバー限定掲示板を閲覧できます
              • メンバー特典記事を閲覧できます
              • メンバー特典マガジンを閲覧できます
              • 動画資料やworkflowといった資料への優先アクセスも予定

              ゼロから学ぶ「ComfyUI」マガジン

              https://note.com/aicu/m/md2f2e57c0f3c

              マガジン単体の販売は1件あたり500円を予定しております。
              2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

              https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

              もちろん、初月は無料でお試しいただけます!
              毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
              退会率はとても低く、みなさまにご満足いただいております。
              ✨️オトクなメンバーシップについての詳細はこちら


              この記事の続きはこちらから https://note.com/aicu/n/n301bb146abdd

              Originally published at https://note.com on Sept 4, 2024.

            1. [8]画像化も可能!ComfyUIワークフロー管理の基礎

              こんにちわ、AICU media編集部です。
              ComfyUI マスターガイド」第8回目になります!

              今回は、ComfyUIで作成したワークフローを保存し、後で呼び出すための様々な方法をご紹介します。JSONファイルとして保存する基本的な方法から、カスタムノード「ComfyUI-Custom-Scripts」を利用して画像として保存する便利な方法まで、詳しく解説します。これらのテクニックをマスターすることで、ワークフローの管理が容易になり、作業効率の向上と共同作業の促進に繋がります。

              前回はこちら シリーズ初回はこちら

                1. ワークフローの保存方法

                ComfyUIで作成したワークフローを保存する方法はいくつかあります。ここでは、JSONファイルとして保存する方法と、カスタムノード「ComfyUI-Custom-Scripts」(*1)を利用して画像として保存する方法について説明します。

                *1 ComfyUI-Custom-Scriptsは、様々な便利な機能を持ったカスタムノードです。ComfyUI-Custom-Scriptsの機能の詳細は、別記事で解説します。今回は、ワークフローの保存機能に焦点を当てて解説します。

                1.1 JSONファイルとして保存

                ワークフローをJSONファイルとして保存することで、後で簡単に呼び出すことができます。以下の手順に従ってください。

                ワークフローの保存

                • ComfyUIのキャンバスにグラフが表示された状態を作ります。ここでは標準のグラフを表示しています。
                画像
                • メニューの「Save」をクリックします。
                画像
                • 保存するファイル名を入力するダイアログが表示されるので、ファイル名を入力し、「OK」をクリックします。ここでは、ファイル名を「workflow_test.json」とします。
                画像
                • これで、ワークフローがJSON形式のファイルとしてダウンロードフォルダ(*2)に保存されます。

                *2 保存先のフォルダは、ブラウザで設定されている保存先になります。保存先のフォルダについては、お使いになられているブラウザのヘルプページをご確認ください。

                【主要なブラウザのヘルプページ】
                Google Chrome: ファイルをダウンロードする
                Microsoft Edge: ダウンロード フォルダーの場所を変更する
                Safari: MacでSafariを使用してWebから項目をダウンロードする
                Firefox: ダウンロードしたファイルを見つける方法と管理する方法

                1.2 ComfyUI-Custom-Scriptsを利用して画像として保存

                カスタムノード「ComfyUI-Custom-Scripts」を使用することで、ワークフローを画像として保存することができます。この方法は、視覚的にワークフローを共有したい場合に便利です。

                ComfyUI-Custom-Scriptsのインストール

                • まず、ComfyUI-Custom-Scriptsをインストールします。メニューから「Manager」をクリックします。
                画像
                • ComfyUI Manager Menuが立ち上がります。ここで、「Custom Nodes Manager」をクリックします。
                画像
                • Custom Nodes Managerが開きます。
                画像
                • 上部の検索部に「comfyui-custom-scripts」と入力します。そうすると、カスタムノード一覧に「ComfyUI-Custom-Scripts」が表示されるので、「ComfyUI-Custom-Scripts」の「Install」をクリックします。
                画像
                • しばらく待つと、インストールが完了します。その後、ComfyUIの再起動を求められるため、下部にある「Restart」をクリックします。
                画像
                • 再起動が実行されると、ComfyUI Manager Menuが閉じ、キャンバスの画面に戻ります。再起動実行中は、画面中央に「Reconnecting…」というメッセージがダイアログで表示されますが、再起動が完了すると自動でダイアログが閉じます。ダイアログが閉じたら、ブラウザを更新してください。
                画像
                • 再度Custom Nodes Managerを開き、「comfyui-custom-scripts」を検索してください。ComfyUI-Custom-ScriptsのInstall列が以下の画像のように表示されていれば、インストールが完了しています。
                画像

                ワークフローを画像として保存

                • ComfyUIのキャンバスにグラフが表示された状態を作ります。ここでは標準のグラフを表示しています。
                画像
                • キャンバスのノードがない場所を右クリックし、コンテクストメニューを表示させます。表示されたメニューの「Workflow Image -> Export -> png」または「Workflow Image -> Export -> svg」を選択します。
                • それぞれ「workflow.png」「workflow.svg」という名前でダウンロードフォルダに保存されます。
                画像

                2. ワークフローの呼び出し方法

                保存したワークフローを再度呼び出す方法について説明します。ここでは、JSONファイルからの呼び出し方法と画像からの呼び出し方法について説明します。

                2.1 JSONファイルからの呼び出し

                保存したJSONファイルを使用してワークフローを呼び出す手順は以下の通りです。

                • まずは、読み込まれたことが分かるように、グラフをクリアします。メニューの「Clear」をクリックし、表示されたダイアログで「OK」をクリックしてください。
                画像
                • グラフがクリアされ、キャンバスには何も表示されていない状態になります。
                画像
                • メニューの「Load」をクリックします。
                画像
                • ファイル選択ダイアログが表示されるので、キャンバスに読み込むワークフローのJSONファイルを選択します。
                画像
                • 選択したワークフローが読み込まれ、キャンバスにグラフが表示されます。
                画像

                2.2 画像からの呼び出し

                画像に埋め込まれたワークフロー情報を利用してワークフローを呼び出す手順は以下の通りです

                • 先ほどと同様にグラフをクリアします。メニューの「Clear」をクリックし、表示されたダイアログで「OK」をクリックしてください。
                画像
                • グラフがクリアされ、キャンバスには何も表示されていない状態になります。
                画像
                • 保存した「workflow.svg」または「workflow.png」をキャンバスにドラッグ&ドロップします。
                画像
                • ワークフローが読み込まれ、キャンバスにグラフが表示されます。
                画像

                まとめ

                ComfyUIでは、作成したワークフローを効率的に管理し再利用するために、いくつかの保存・呼び出し方法が用意されています。この記事では、主にJSONファイルによる保存と、ComfyUI-Custom-Scriptsを利用した画像による保存という2つの方法を解説しました。

                JSONファイルによる保存は、ワークフロー全体をテキストデータとして保存する方法です。この方法は、ワークフローの詳細な設定を保持できるため、編集や再利用に最適です。一方、ComfyUI-Custom-Scriptsを利用した画像による保存は、ワークフローを視覚的に分かりやすい画像として保存する方法です。共有やプレゼンテーションに役立ちます。

                本記事で紹介した方法を理解し、ワークフローを適切に保存・呼び出しすることで、作業効率の向上、共同作業の促進、そして創造的なワークフローの構築に繋がるでしょう。

                次回はワークフローの公開・共有方法について解説します。乞うご期待!

                AICU mediaのX(Twitter)@AICUai のフォローもお忘れなく!

                画像生成AI「ComfyUI」マスターPlan

                画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

                • メンバー限定の会員証が発行されます
                • 活動期間に応じたバッジを表示
                • メンバー限定掲示板を閲覧できます
                • メンバー特典記事を閲覧できます
                • メンバー特典マガジンを閲覧できます
                • 動画資料やworkflowといった資料への優先アクセスも予定

                ゼロから学ぶ「ComfyUI」マガジン

                https://note.com/aicu/m/md2f2e57c0f3c

                マガジン単体の販売は1件あたり500円を予定しております。
                2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

                https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

                もちろん、初月は無料でお試しいただけます!
                毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
                退会率はとても低く、みなさまにご満足いただいております。

                ✨️オトクなメンバーシップについての詳細はこちら


                この記事の続きはこちらから https://note.com/aicu/n/n41dcdc90dbe5

                Originally published at https://note.com on Aug 25, 2024.

              1. [7]ComfyUI設定完全ガイド!(後編)

                こんにちわ、AICU media編集部です。
                ComfyUIマスターガイド」シリーズの第7回になります。
                今回は、ComfyUIの基本操作と画像の生成について前後編に分けて解説していきたいと思います。

                前回はこちら シリーズ初回はこちら

                今回は、ComfyUIの基本的な操作から、ショートカット、画像の出力までの簡単な流れを解説します。AUTOMATIC1111と違い、完全にグラフィカルなユーザーインターフェースで操作するノードシステムは慣れるまで大変かと思いますが、用語や操作方法に慣れると大変見やすく効率的になります。またここでは、簡単な用語と中で起きている生成AIの処理についても解説していきます。

                  1. 設定画面の開き方

                  1.キャンバスの画面にて、メニューの上部の歯車マークをクリックします。

                  画像

                  2.ComfyUIの設定画面が開きます。

                  画像

                  2. 設定画面の項目の分類

                  設定画面には、多くの設定項目がありますが、本記事では重要な機能と、知っておくと便利な機能を紹介します。それ以外の高度な機能については、今後機会があれば解説します。
                  さらに、設定画面の項目の中には、ComfyUIで標準機能として提供されている項目と、ComfyUI Managerで追加機能として提供されている項目があるため、この分類も同時に示します。

                  • カラーパレットの変更(ComfyUI Manager)
                  • ノードのウィジェットの小数点以下の桁数の変更(ComfyUI)
                  • グリッドサイズ(ComfyUI)
                  • メニューのスクロール方向の反転(ComfyUI)
                  • 入力とウィジェットを相互変換する項目のサブメニュー化(ComfyUI)
                  • ノードの提案数の変更(ComfyUI)
                  • ワークフローのクリア時の確認の有無(ComfyUI)
                  • キャンバスポジションの保存の有効化(ComfyUI)
                  • メニュー位置の保存(ComfyUI)

                  3. 知っておくと便利な機能の解説

                  メニューの位置の変更

                  [Beta] Use new menu and workflow management. Note: On small screens the menu will always be at the top.は、Beta版の機能になりますが、メニューの位置を変更する設定になります。

                  画像

                  メニューの位置は、以下の3種類から選択できます。

                  • Disabled: 通常のポジションです。メニューは右側に配置されます。
                  • Top: メニューは上部に配置されます。
                  画像
                  • Bottom: メニューは下部に配置されます。
                  画像

                  カラーパレットの変更

                  Color palette(カラーパレット)は、ComfyUI全体のテーマカラーを設定します。

                  画像

                  カラーパレットには、デフォルトの選択肢として以下の6つがあります。それぞれのカラーパレットでの表示の変化は以下の通りです。

                  • Dark (Default)
                  画像
                  • Light
                  画像
                  • Solarized
                  画像
                  • Arc
                  画像
                  • Nord
                  画像
                  • Github
                  画像

                  カラーパレットは、既存のカラーパレットをカスタマイズしたり、自分で一から作成することも可能です。カラーパレットのプルダウンの下のボタン「Export」「Import」「Template」「Delete」の機能を確認してみましょう。

                  画像
                  • Export
                    Exportは、プルダウンで選択中のカラーパレットの定義ファイル (JSON) を出力します。以下は、Dart (Default)をExportで出力したJSONファイルになります。
                  {
                    "id": "dark",
                    "name": "Dark (Default)",
                    "colors": {
                      "node_slot": {
                        "AUDIO": "",
                        "AUDIOUPLOAD": "",
                        "AUDIO_UI": "",
                        "BBOX_DETECTOR": "",
                        "BOOLEAN": "",
                        "CLIP": "#FFD500",
                        "CLIP_VISION": "#A8DADC",
                        "CLIP_VISION_OUTPUT": "#ad7452",
                        "CONDITIONING": "#FFA931",
                        "CONTROL_NET": "#6EE7B7",
                        "FLOAT": "",
                        "GLIGEN": "",
                        "GUIDER": "#66FFFF",
                        "IMAGE": "#64B5F6",
                        "IMAGEUPLOAD": "",
                        "INT": "",
                        "LATENT": "#FF9CF9",
                        "MASK": "#81C784",
                        "MODEL": "#B39DDB",
                        "NOISE": "#B0B0B0",
                        "OPTICAL_FLOW": "",
                        "PHOTOMAKER": "",
                        "POSE_KEYPOINT": "",
                        "SAMPLER": "#ECB4B4",
                        "SIGMAS": "#CDFFCD",
                        "STRING": "",
                        "STYLE_MODEL": "#C2FFAE",
                        "TAESD": "#DCC274",
                        "TRACKING": "",
                        "UPSCALE_MODEL": "",
                        "VAE": "#FF6E6E",
                        "WEBCAM": "",
                        "none,AnimeFace_SemSegPreprocessor,AnyLineArtPreprocessor_aux,BinaryPreprocessor,CannyEdgePreprocessor,ColorPreprocessor,DensePosePreprocessor,DepthAnythingPreprocessor,Zoe_DepthAnythingPreprocessor,DepthAnythingV2Preprocessor,DiffusionEdge_Preprocessor,DSINE-NormalMapPreprocessor,DWPreprocessor,AnimalPosePreprocessor,HEDPreprocessor,FakeScribblePreprocessor,LeReS-DepthMapPreprocessor,LineArtPreprocessor,AnimeLineArtPreprocessor,LineartStandardPreprocessor,Manga2Anime_LineArt_Preprocessor,MediaPipe-FaceMeshPreprocessor,MeshGraphormer-DepthMapPreprocessor,MeshGraphormer+ImpactDetector-DepthMapPreprocessor,Metric3D-DepthMapPreprocessor,Metric3D-NormalMapPreprocessor,MiDaS-NormalMapPreprocessor,MiDaS-DepthMapPreprocessor,M-LSDPreprocessor,BAE-NormalMapPreprocessor,OneFormer-COCO-SemSegPreprocessor,OneFormer-ADE20K-SemSegPreprocessor,OpenposePreprocessor,PiDiNetPreprocessor,SavePoseKpsAsJsonFile,FacialPartColoringFromPoseKps,UpperBodyTrackingFromPoseKps,RenderPeopleKps,RenderAnimalKps,ImageLuminanceDetector,ImageIntensityDetector,ScribblePreprocessor,Scribble_XDoG_Preprocessor,Scribble_PiDiNet_Preprocessor,SAMPreprocessor,ShufflePreprocessor,TEEDPreprocessor,TilePreprocessor,TTPlanet_TileGF_Preprocessor,TTPlanet_TileSimple_Preprocessor,UniFormer-SemSegPreprocessor,SemSegPreprocessor,Unimatch_OptFlowPreprocessor,MaskOptFlow,Zoe-DepthMapPreprocessor": ""
                      },
                      "litegraph_base": {
                        "BACKGROUND_IMAGE": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQBJREFUeNrs1rEKwjAUhlETUkj3vP9rdmr1Ysammk2w5wdxuLgcMHyptfawuZX4pJSWZTnfnu/lnIe/jNNxHHGNn//HNbbv+4dr6V+11uF527arU7+u63qfa/bnmh8sWLBgwYJlqRf8MEptXPBXJXa37BSl3ixYsGDBMliwFLyCV/DeLIMFCxYsWLBMwSt4Be/NggXLYMGCBUvBK3iNruC9WbBgwYJlsGApeAWv4L1ZBgsWLFiwYJmCV/AK3psFC5bBggULloJX8BpdwXuzYMGCBctgwVLwCl7Be7MMFixYsGDBsu8FH1FaSmExVfAxBa/gvVmwYMGCZbBg/W4vAQYA5tRF9QYlv/QAAAAASUVORK5CYII=",
                        "CLEAR_BACKGROUND_COLOR": "#222",
                        "NODE_TITLE_COLOR": "#999",
                        "NODE_SELECTED_TITLE_COLOR": "#FFF",
                        "NODE_TEXT_SIZE": 14,
                        "NODE_TEXT_COLOR": "#AAA",
                        "NODE_SUBTEXT_SIZE": 12,
                        "NODE_DEFAULT_COLOR": "#333",
                        "NODE_DEFAULT_BGCOLOR": "#353535",
                        "NODE_DEFAULT_BOXCOLOR": "#666",
                        "NODE_DEFAULT_SHAPE": "box",
                        "NODE_BOX_OUTLINE_COLOR": "#FFF",
                        "DEFAULT_SHADOW_COLOR": "rgba(0,0,0,0.5)",
                        "DEFAULT_GROUP_FONT": 24,
                        "WIDGET_BGCOLOR": "#222",
                        "WIDGET_OUTLINE_COLOR": "#666",
                        "WIDGET_TEXT_COLOR": "#DDD",
                        "WIDGET_SECONDARY_TEXT_COLOR": "#999",
                        "LINK_COLOR": "#9A9",
                        "EVENT_LINK_COLOR": "#A86",
                        "CONNECTING_LINK_COLOR": "#AFA"
                      },
                      "comfy_base": {
                        "fg-color": "#fff",
                        "bg-color": "#202020",
                        "comfy-menu-bg": "#353535",
                        "comfy-input-bg": "#222",
                        "input-text": "#ddd",
                        "descrip-text": "#999",
                        "drag-text": "#ccc",
                        "error-text": "#ff4444",
                        "border-color": "#4e4e4e",
                        "tr-even-bg-color": "#222",
                        "tr-odd-bg-color": "#353535",
                        "content-bg": "#4e4e4e",
                        "content-fg": "#fff",
                        "content-hover-bg": "#222",
                        "content-hover-fg": "#fff"
                      }
                    }
                  }
                  • Import
                    カラーパレットの定義ファイル (JSON)を読み込み、新たなカラーパレットとして使用できるようにします。
                  • Template
                    カラーパレットを作成するためのテンプレートの定義ファイル (JSON)を出力します。以下は、テンプレートの一部になります。Exportとの違いは、全ての項目にカラーコードが設定されていないことです。
                  {
                    "id": "my_color_palette_unique_id",
                    "name": "My Color Palette",
                    "colors": {
                      "node_slot": {
                        "AUDIO": "",
                        "AUDIOUPLOAD": "",
                        "AUDIO_UI": "",
                        "BBOX_DETECTOR": "",
                        "BOOLEAN": "",
                        "CLIP": "",
                        "CLIP_VISION": "",
                        "CLIP_VISION_OUTPUT": "",
                        "CONDITIONING": "",
                        "CONTROL_NET": "",
                        "FLOAT": "",
                        "GLIGEN": "",
                        "GUIDER": "",
                        "IMAGE": "",
                        "IMAGEUPLOAD": "",
                        "INT": "",
                        "LATENT": "",
                        "MASK": "",
                        "MODEL": "",
                        "NOISE": "",
                        "OPTICAL_FLOW": "",
                        "PHOTOMAKER": "",
                        "POSE_KEYPOINT": "",
                        "SAMPLER": "",
                        "SIGMAS": "",
                        "STRING": "",
                        "STYLE_MODEL": "",
                        "TRACKING": "",
                        "UPSCALE_MODEL": "",
                        "VAE": "",
                        "WEBCAM": "",
                        "none,AnimeFace_SemSegPreprocessor,AnyLineArtPreprocessor_aux,BinaryPreprocessor,CannyEdgePreprocessor,ColorPreprocessor,DensePosePreprocessor,DepthAnythingPreprocessor,Zoe_DepthAnythingPreprocessor,DepthAnythingV2Preprocessor,DiffusionEdge_Preprocessor,DSINE-NormalMapPreprocessor,DWPreprocessor,AnimalPosePreprocessor,HEDPreprocessor,FakeScribblePreprocessor,LeReS-DepthMapPreprocessor,LineArtPreprocessor,AnimeLineArtPreprocessor,LineartStandardPreprocessor,Manga2Anime_LineArt_Preprocessor,MediaPipe-FaceMeshPreprocessor,MeshGraphormer-DepthMapPreprocessor,MeshGraphormer+ImpactDetector-DepthMapPreprocessor,Metric3D-DepthMapPreprocessor,Metric3D-NormalMapPreprocessor,MiDaS-NormalMapPreprocessor,MiDaS-DepthMapPreprocessor,M-LSDPreprocessor,BAE-NormalMapPreprocessor,OneFormer-COCO-SemSegPreprocessor,OneFormer-ADE20K-SemSegPreprocessor,OpenposePreprocessor,PiDiNetPreprocessor,SavePoseKpsAsJsonFile,FacialPartColoringFromPoseKps,UpperBodyTrackingFromPoseKps,RenderPeopleKps,RenderAnimalKps,ImageLuminanceDetector,ImageIntensityDetector,ScribblePreprocessor,Scribble_XDoG_Preprocessor,Scribble_PiDiNet_Preprocessor,SAMPreprocessor,ShufflePreprocessor,TEEDPreprocessor,TilePreprocessor,TTPlanet_TileGF_Preprocessor,TTPlanet_TileSimple_Preprocessor,UniFormer-SemSegPreprocessor,SemSegPreprocessor,Unimatch_OptFlowPreprocessor,MaskOptFlow,Zoe-DepthMapPreprocessor": ""
                      },
                      "litegraph_base": {
                        "BACKGROUND_IMAGE": "",
                        "CLEAR_BACKGROUND_COLOR": "",
                        "NODE_TITLE_COLOR": "",
                        "NODE_SELECTED_TITLE_COLOR": "",
                        "NODE_TEXT_SIZE": "",
                        "NODE_TEXT_COLOR": "",
                        "NODE_SUBTEXT_SIZE": "",
                        "NODE_DEFAULT_COLOR": "",
                        "NODE_DEFAULT_BGCOLOR": "",
                        "NODE_DEFAULT_BOXCOLOR": "",
                        "NODE_DEFAULT_SHAPE": "",
                        "NODE_BOX_OUTLINE_COLOR": "",
                        "DEFAULT_SHADOW_COLOR": "",
                        "DEFAULT_GROUP_FONT": "",
                        "WIDGET_BGCOLOR": "",
                        "WIDGET_OUTLINE_COLOR": "",
                        "WIDGET_TEXT_COLOR": "",
                        "WIDGET_SECONDARY_TEXT_COLOR": "",
                        "LINK_COLOR": "",
                        "EVENT_LINK_COLOR": "",
                        "CONNECTING_LINK_COLOR": ""
                      },
                      "comfy_base": {
                        "fg-color": "",
                        "bg-color": "",
                        "comfy-menu-bg": "",
                        "comfy-input-bg": "",
                        "input-text": "",
                        "descrip-text": "",
                        "drag-text": "",
                        "error-text": "",
                        "border-color": "",
                        "tr-even-bg-color": "",
                        "tr-odd-bg-color": "",
                        "content-bg": "",
                        "content-fg": "",
                        "content-hover-bg": "",
                        "content-hover-fg": ""
                      }
                    }
                  }
                  • Delete
                    登録されているカラーパレットを削除します。削除されるカラーパレットは、現在選択しているカラーパレットになります。

                  ノードのウィジェットの小数点以下の桁数の変更

                  Decimal placesは、ノードのウィジェットの小数点以下の桁数を変更できます。初期値は0で、小数点以下の桁数はComfyUI側で自動的に決定される設定になっています。

                  画像

                  以下に小数点以下の桁数が0の場合と5の場合の表示の違いを示します。小数点以下の桁数が0の場合は、cfgとdenoiseは、それぞれ8.0、1.00となっていますが、小数点以下の桁数が5の場合は、8.00000、1.00000と、小数点以下の桁数が5桁になっています。

                  画像

                  グリッドサイズ

                  Grid Size(グリッドサイズ)一度のフローの実行で複数枚の画像を生成すると、Save Image(画像を保存するノード)に生成した画像がプレビューされますが、そのプレビューされる画像の枚数を指定します。

                  画像

                  例えば、グリッドサイズを10に設定し、フローで生成される画像の枚数を15枚(Empty Latent Imageノードのbatch_sizeを15に設定)した場合、Save Imageには10枚の画像がグリッドで表示されます。残りの5枚は表示されないだけで、保存はされています。

                  画像

                  メニューのスクロール方向の反転

                  Invert Menu Scrollingは、キャンバスやノードを右クリックして表示されるメニューのスクロール方向を反転する項目です。この項目にチェックが入っていると、スクロール方向が反転します。

                  画像

                  通常は、マウスホイールを上に回すと、メニューも上に移動し、下に回すと、メニューが下に移動します。これを反転すると、マウスホイールを上に回すと、メニューが下に移動し、下に回すと、メニューが上に移動します。

                  画像

                  入力とウィジェットを相互変換する項目のサブメニュー化

                  Node widget/input conversion sub-menusは、ノードのコンテキストメニュー(ノード上で右クリックして表示されるメニュー)のウィジェットを入力に変換(Convert Widget to Input)、または入力をウィジェットに変換(Convert Input to Widget)する項目をサブメニュー化する項目になります。

                  画像

                  この機能を有効化(チェックボックスにチェックをいれる)すると、入力とウィジェットの変換する項目がサブメニューとしてまとめられます。この機能を無効化(チェックボックスのチェックを外す)と、項目はコンテキストメニューのトップに配置されます。

                  画像

                  ノードの提案数の変更

                  Number of nodes suggestions(ノード提案数)は、ノードの入力または出力から線を伸ばした際に表示されるノードの数を決定する項目です。初期値は5で、最大で100まで設定できます。

                  画像

                  ノードの提案とは、入力または出力をドラッグで接続線を伸ばし、キャンバスの適当なところでドロップすると、入力または出力元のノードに合うノードを提案してくれる機能のことです。

                  画像

                  ノードの提案数が5の場合は、ここに表示されるノードの数が5個になり、ノードの提案数が10の場合は、表示されるノードの数が10個になります。

                  画像

                  ワークフローのクリア時の確認の有無

                  Require confirmation when clearing workflowは、ワークフローのクリア時に、即時クリアするのではなく、確認ダイアログを表示し、ユーザーの確認が取れてからクリアを実行する機能を有効化する項目になります。

                  画像

                  ワークフローのクリアは、メニューの「Clear」で実行可能です。クリアは、キャンバス上のノードを全て削除し、真っ新な状態にする機能です。

                  画像

                  この機能が無効化されている(チェックボックスのチェックが外れている)場合は、ユーザーへの確認なしで即座にワークフローがクリアされます。この機能が有効化されている(チェックボックスにチェックが入っている)と、下図のようにユーザーへの確認ダイアログが表示され、「OK」を選択することでクリアが実行されるようになります。

                  画像

                  キャンバスポジションの保存の有効化

                  Save and restore canvas position and zoom level in workflowsは、ワークフローの保存時に、キャンバスの表示状態(ズームアップ/ダウン、表示位置)も合わせて保存する機能を有効化する項目です。

                  画像

                  例えば、KSamplerノードにズームアップした状態でワークフローを保存したとします。次に、保存時とキャンバスの状態が変わっている状態で保存したワークフローを読み込みます。そうすると、保存時と同様にKSamplerノードにズームアップした状態でキャンバスが表示されます。

                  画像

                  メニュー位置の保存

                  Save menu positionは、メニュー位置の保存を有効化する項目です。通常は、ComfyUIをリロードや再起動すると、メニューの位置がデフォルトの位置に戻ってしまいますが、この機能を有効化していると、メニューの配置を記憶し、ComfyUIをリロードや再起動しても、最後に配置した場所でメニューが表示されます。

                  画像

                  この機能が無効化されている(チェックボックスのチェックが外れている)場合は、リロードするとデフォルトの位置にメニューが戻ります。この機能が有効化されている(チェックボックスにチェックが入っている)と、リロードしても以前の位置を保持するようになります。

                  画像

                  以上で、ComfyUI設定完全ガイドを終わります!
                  ものすごいボリュームで前後編でお送りする形になりましたが、マスターできましたでしょうか!?

                  画像生成AI「ComfyUI」マスターPlan

                  画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

                  • メンバー限定の会員証が発行されます
                  • 活動期間に応じたバッジを表示
                  • メンバー限定掲示板を閲覧できます
                  • メンバー特典記事を閲覧できます
                  • メンバー特典マガジンを閲覧できます
                  • 動画資料やworkflowといった資料への優先アクセスも予定

                  ゼロから学ぶ「ComfyUI」マガジン

                  https://note.com/aicu/m/md2f2e57c0f3c

                  マガジン単体の販売は1件あたり500円を予定しております。
                  2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

                  https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

                  もちろん、初月は無料でお試しいただけます!
                  毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
                  退会率はとても低く、みなさまにご満足いただいております。

                  ✨️オトクなメンバーシップについての詳細はこちら


                  この記事の続きはこちらからhttps://note.com/aicu/n/n20d7f1c7c6aa

                  Originally published at https://note.com on Aug 21, 2024.