月: 2024年9月

  • [ComfyMaster20] ComfyUIの高度インペイント技術で自然な髪型変更を実現!

    「髪型を変えてみたい」と一度は思ったことがあるでしょう。そんな願望を叶えてこそが、画像生成AI技術です。従来のインペイント処理では、髪型の変更など精密な修正は難しいと感じたことがあるかもしれません。しかし、今回はその限界を突破します!付録としてComfyUIワークフローと男性ヘアカタログプロンプト集もつけちゃいます!

    こんにちわ、AICU media編集部です。
    ComfyUI マスターガイド」も、ついに第20回目になります。
    以前にimage-to-image (i2i) でのインペイントについて説明しました。

    今回は、i2iでのインペイントをさらに掘り下げて、基本的なインペイントワークフローでは実現できなかった高精度のインペイントを行う方法を解説します。

    i2i編の初回はこちら

      1. 今回の目的

      今回は、i2i(image-to-image)で人物の髪形を変更します。以前の記事で説明したインペイントは、ComfyUI公式が配布しているのインペイントのサンプルワークフローに従った、基本的なインペイント処理でした。そのため、効果的なインペイントが難しい状態でした。今回は、より効果的なインペイントを実施します。

      具体的には、InpaintModelConditioningノードを使用します。InpaintModelConditioningノードは、効果的なインペイントをするための前処理を行います。理論的な解説も伴った中級者向け記事です!

      2. InpaintModelConditioningノードの解説

      InpaintModelConditioningノードは、画像補完のために必要な「条件付け」と呼ばれる情報を管理し、補完結果を自然に仕上げるために使われる重要な技術です。具体的には、欠損部分の補完に使う画像データや、その部分がどこなのかを示すマスクデータを取り扱い、モデルが適切に補完できるようにガイドします。

      条件付け(Conditioning)とは?

      まず「条件付け」とは、画像補完を行う際にモデルがどのように動作すべきかを決めるための「指示書」のようなものです。条件付けは、モデルに「こういう結果にしてほしい」というガイドラインを提供します。

      画像

      例えば、以下のような状況を考えます。

      • Positive(ポジティブ)条件付け: 補完したい特徴やスタイルを指定するもの
      • Negative(ネガティブ)条件付け: 生成したくない特徴を避けるためのもの

      このような条件付けがあることで、モデルは「この部分はこう補完して、こういう風にはしないでね」という具体的な方向性を得ることができます。

      InpaintModelConditioningの動作の流れ

      画像

      InpaintModelConditioningノードの動作は以下のようなステップで進みます。

      1. 画像サイズの調整: 画像が正しく補完されるためには、特定のサイズ(8の倍数など)に合わせる必要があります。画像のサイズを調整することで、モデルが効率的に処理できるようにします。
      2. マスクのリサイズと滑らか化: 補完対象の部分を示すマスクは、画像と同じサイズでなければいけません。このため、マスクのサイズを画像に合わせてリサイズします。さらに、リサイズ時に境界を滑らかにする処理を加えることで、補完部分と元の画像とのつながりを自然に見せます。これにより、補完がなめらかに行われ、境界が目立ちにくくなります。
      3. 条件付けデータの更新: ポジティブ条件付けやネガティブ条件付けに、画像の潜在表現(補完の基になるデータ)とマスクを追加します。これによって、補完される部分の情報が条件付けに含まれ、モデルは「ここをこんな風に補完すればいいんだな」と理解できるようになります。
      4. 補完処理の実行: 更新された条件付けに基づいて、画像の欠損部分が自然に補完されます。例えば、背景に合わせて欠損部分が塗りつぶされたり、オブジェクトが滑らかに修復されたりします。

      マスクの滑らかさが重要な理由

      補完の際に、マスク(補完するべき場所を示すデータ)の境界が滑らかであることはとても重要です。なぜなら、境界が滑らかであれば、補完された部分が元の画像と自然に繋がるからです。マスクの境界がシャープだと、補完部分が目立ちやすくなり、不自然に見えることがあります。滑らかなマスクを使うことで、補完処理が画像全体にシームレスに溶け込み、違和感のない仕上がりが得られます

      画像

      ハードエッジなマスク画像の例

      画像

      ソフトなマスク画像の例

      画像

      特に透明体や反射、髪の毛の境界などはハードエッジにすると違和感が強く出ます。

      なぜ条件付けデータの更新が重要なのか?

      条件付けデータの更新は、補完処理を正確かつ自然に行うために非常に重要です。この更新が行われることで、モデルは最新の画像情報に基づいて適切な補完を実行できるようになります。更新された条件付けデータには、補完したい部分の最新の潜在表現とマスク情報が含まれており、これがモデルに対して「ここをどのように補完するべきか」という具体的な指示を与えます。潜在表現は画像全体の特徴やスタイルを反映しているため、補完部分が元の画像と自然に調和することを可能にします。また、マスク情報が更新されることで、モデルは補完するべき領域を正確に把握し、不要な部分への影響を最小限に抑えることができます

      画像

      さらに、ポジティブ条件付けとネガティブ条件付けが最新の状態になることにより、補完結果のコントロールがより精密になります。ポジティブ条件付けは「こうしたい」というモデルの生成方向を示し、ネガティブ条件付けは「こうはしたくない」という制約を与えることで、補完の質を高めます。このプロセスにより、モデルは適切な領域に集中し、画像全体の統一感を維持しながら補完処理を行うことができます。結果的に、条件付けデータの更新が、補完された部分を滑らかで自然なものにし、全体のビジュアル品質を向上させるのです。

      3. 使用するモデルと素材

      モデル

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

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

      変換元画像

      変換元画像には、以下の男性の写真を使用します(画像生成)。

      画像

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

      https://note.com/api/v2/attachments/download/8212aaeaa246b1840de3430c81f9d3c7

      4. ワークフロー解説

      ワークフローの全体像は以下になります。基本的には標準ワークフローと同等ですが、変更点としては、Load Imageノードでの参照元画像の読み込みと、それをInpaintModelConditioningノードで前処理とLATENTへの変換を行い、KSamplerノードのlatent_image入力に接続する箇所が追加になっています。

      画像

      ワークフローは文末よりダウンロードください。
      処理の流れを以下のようにフローチャート化しました。

      画像

      以下に、各ステップとその役割を詳しく説明します。
      Mask Editorでのマスク作成方法をご存じない方は、まず以前の解説をご参照覧ください。

      1. 入力処理 (LoadImage ノード)
        • 入力画像とマスクを読み込みます。
        • マスクの作成は、ComfyUIのMask Editorで行なっています。
          髪の毛部分にマスクを施します。
      1. モデルの読み込み (CheckpointLoaderSimple ノード)
        • 「sd_xl_base_1.0.safetensors」モデルを読み込みます。これはStable Diffusion XLモデルで、高品質な画像生成が可能です。
      2. プロンプト処理 (CLIPTextEncode ノード x2)
        • ポジティブプロンプト: “1boy, solo, young man with afro, male k-pop idol, lovingly looking camera, medium portrait soft light, chop, beautiful model, oval face, vivid
          • 髪型をアフロにしたいので、プロンプトに「afro」を追加しています。
        • ネガティブプロンプト: “bad hand,bad anatomy,worst quality,ai generated images,low quality,average quality, nsfw, nude, naked
      3. インペインティング準備 (InpaintModelConditioning ノード)
        • 入力画像、マスク、VAE、およびプロンプトの条件付けを組み合わせて、インペインティングのための特殊な潜在表現を作成します。
        • このステップがこのワークフローの核心部分で、マスクされた領域に対して効果的なインペインティングを可能にします。
      4. 画像生成 (KSampler ノード)
        • インペインティング用に調整された潜在表現と条件付けを使用して新しい画像を生成します。
        • パラメータ:
          • Seed: 819339385672759 (再現性のため)
          • Steps: 20 (生成のステップ数)
          • CFG Scale: 7 (プロンプトの影響力)
          • Sampler: dpmpp_2m (高品質なサンプリング方法)
          • Scheduler: karras (改良されたスケジューリング)
      5. 画像のデコード (VAEDecode ノード)
        • 生成された潜在表現を実際の画像にデコードします。
      6. 画像の保存 (SaveImage ノード)
        • 最終的に生成された画像を保存します。

      このワークフローは、元の画像の構造を保持しながら、指定された領域を新しいプロンプトに基づいて変更する高度なインペインティングを実行します。結果として、元の画像の特定部分が自然に変更された、高品質な画像が生成されることが期待されます。

      5. インペイントの実行

      それでは、インペイントを実行し、髪型をアフロに変えてみたいと思います。マスクは、以下のようにアフロのサイズも考えて広く作成しています。

      マスクを塗る際のコツ

      画像

      こんな感じに塗っていきます(白で表現)。髪色も変えたいので、もっと生え際も塗ってしまってかまいません。

      画像

      塗り残しを防ぐためにも、黒髪に黒はおすすめしません。

      画像

      目尻に髪がかかったり、額が出たりでなかったりは、つくる髪型にも寄りますが、実験したい場合はまずは大きく塗っていきましょう。

      画像

      マスクが甘いと、このような結果になります。

      画像

      一見いいかんじなのですが、目尻やもともと画像にあった髪が残ってしまって居ます。

      以下が正しくマスクを設定した場合の実行結果です。しっかり画像のコンテクストを理解してインペイント処理がされています。

      画像

      なお、これを以前の記事で説明した基本的なインペイント処理だけで行うと、以下のように崩れてしまいます。インペイントのための前処理と条件設定「InpaintModelConditioning」の重要性を強く感じられます。

      画像

      ポジティブプロンプトの「afro」の箇所を他の髪形に変えて生成してみました。みなさんも好きな画像をインペイントして遊んでみてください。

      画像

      男性ヘアカタログ的なプロンプトは文末にて!

      6. まとめ

      InpaintModelConditioningノードを使用することで、従来のインペイントの課題を克服し、より自然で精密な補完が可能になります。髪型の変更のような細かい修正も、適切な条件付けと最新のモデルを活用することで、まるで本物のような仕上がりが実現できます。これまでのインペイントで満足できなかった方も、ぜひ今回紹介したワークフローを試してみてください。AIの力で画像編集の可能性がさらに広がることを、実感できるはずです。

      次回は、i2iでイラストを実写にする方法を紹介します。乞うご期待!
      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メンバーシップ。
      退会率はとても低く、みなさまにご満足いただいております。
      ✨️オトクなメンバーシップについての詳細はこちら

      #InpaintModelConditioning

      付録:男性ヘアカタログプロンプト集


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

      Originally published at https://note.com on Sept 20, 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. [ComfyMaster18]保存版「ComfyUI-Custom-Scripts」完全マニュアル

        より複雑なワークフローを構築したり、効率的に作業を進めたいと思ったことはありませんか?
        ComfyUI-Custom-Scripts
        は、そんなあなたの悩みを解決する拡張機能です。ワークフローの自動化、ノードの操作性向上、画像管理の効率化など、様々な機能を提供し、ComfyUIをさらに便利に進化させます。

        こんにちわ、AICU media編集部です。
        ComfyUI マスターガイド」第18回目になります。
        本記事では、ComfyUI-Custom-Scriptsのインストールから、豊富な機能、そして活用方法までを詳しく解説していきます。あなたのAIアート制作を、より快適で創造的な体験へと導きます。

        初回はこちら

        前回はこちら

        今回はComfyUI-Custom-Scripts「保存版」完全紹介をめざして頑張ってお送りします。よろしかったらシェアよろしくお願いいたします。

          1. ComfyUI-Custom-Scriptsとは

          ComfyUI-Custom-Scriptsは、ComfyUIの操作性と効率性を向上させるための強力なツールセットです。ワークフローの効率化、プロジェクトの整理、AIアート作成プロセスに新しい機能を追加するためのさまざまなカスタムスクリプトとノードを提供します。これらの機能を活用することで、ワークフローの管理や画像生成プロセスがより直感的かつ効率的になります。
          以下がComfyUI-Custom-ScriptsのGitHubリポジトリになります。

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

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

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

          3. ComfyUI-Custom-Scriptsの設定

          ComfyUI-Custom-Scriptsの各機能の設定は、メニューの歯車ボタンをクリックして表示される設定画面で行うことができます。

          画像

          設定画面の「pysssss」セクション内の設定項目がComfyUI-Custom-Scriptsで追加された設定になります。

          画像

          Image Feed

          Image Feedは、生成した画像の履歴を表示します。初期設定では、下部に配置されています。

          画像

          画像を生成していくと、このようにImage Feedに今までに作成した画像が表示されます。

          画像

          Image Feedに関する設定は、以下の4つがあります。

          画像
          • Image Feed Deduplication: 画像の重複を検出し、重複の場合は再生成を抑制します。この設定では、disabled, enabled(slow), enabled(performance), enabled(max performance)のいずれかの選択肢を選択可能です。重複の検出は、画像の各pixelからハッシュ値を計算し、そのハッシュ値を比較することで行われます。
            • disabled: 重複検出機能が無効化されます。画像が重複していても生成されてしまいます。
            • enabled(slow): 重複検出機能が有効化され、画像スケールが1.0倍でハッシュ値の計算が行われます。高精度の重複検出ですが、処理速度は遅いです。
            • enabled(performance): 重複検出機能が有効化され、画像スケールが0.5倍でハッシュ値の計算が行われます。slowよりも精度が落ちますが、処理速度は速くなります。
            • enabled(max performance): 重複検出機能が有効化され、画像スケールが0.25倍でハッシュ値の計算が行われます。slow, performanceよりも精度は悪いですが、処理速度は速いです。
          • Image Feed Direction: 画像の表示順をnewest first(生成が新しい順), oldest first(生成が古い順)から選択します。
          画像
          • Image Feed Location: Image Feedの配置をleft, top, right, bottom, hiddenから選択します。
          画像
          • Image Feed Max Images: Image Feedに表示する画像の最大数を指定します。例えば、「2」と設定した場合、何度生成してもImage Feedには2枚までしか表示されません。「0」と設定した場合は、表示される画像の枚数は無制限になります。

          Autocomplete

          Autocompleteは、プロンプトの入力時にプロンプトの候補を表示する機能です。例えば、「emb」と入力すれば、「embedding:」という候補を表示してくれます。候補は、「↑」または「↓」キーで選択することができます。

          選択後、TabまたはEnterキーを押すことで選択を確定できます。

          画像

          設定画面には、以下の設定項目があります。

          画像
          • Enabled: Autocomplete機能を有効化します。
          • Loras enabled: 表示される候補にLoRAも含む機能を有効化します。
          • Auto-insert comma: 候補の確定後にカンマを入れるかどうかを決定する設定です。この項目にチェックを入れると、候補の確定後に自動的にカンマが挿入されます。
          • Replace _ with space: 
          • Insert suggestion on: 候補が表示され、選択した後、その選択を確定するキーを設定します。Tabにチェックを入れると、Tabキーで選択を確定できます。Enterにチェックを入れると、Enterキーで選択を確定できます。
          • Max suggestions: 一度に表示する候補の最大数を設定します。
          • Manage Custom Words: 候補に表示されるプロンプトを設定します。「Manage Custom Words」をクリックして表示される画面で、上部の「Load」をクリックします。そうすると、既定のプロンプトが読み込まれまるので、下部の「Save」をクリックすると、プロンプトが保存され、候補に表示されるようになります。
          画像

          Auto Arrange Graph

          ノードを綺麗に配置することができます。

          • まず、配置を修正したいノードと、基点となるノードを選択します。
          画像
          • 基点となるノード上で右クリックをし、表示されたメニューから「Align Selected To」をクリックすると、配置を揃える位置をTop、Bottom、Left、Rightから選択するメニューが表示されます。
          • 各配置位置を選択した結果を以下に示します。
          画像

          Always Snap to Grid

          この機能を有効にすると、ノードの配置がマス目に沿って配置されるようになります。

          画像

          [Testing] “Better” Loader Lists

          ComfyUI-Custom-Scriptsが提供するノード「Checkpoint Loader」「Lora Loader」の使用時に、CheckpointやLoRAの選択でプレビュー画像を表示する機能です。

          画像

          使用するには、Checkpointの場合は「ComfyUI/models/checkpoints」フォルダ、LoRAの場合は「ComfyUI/models/loras」フォルダにCheckpointやLoRAと同名のPNGファイルを配置します。例えば、Checkpointの「sd_xl_base_1.0.safetensors」のプレビュー画像を表示するには、「ComfyUI/models/checkpoints」フォルダに「sd_xl_base_1.0.png」を格納します。

          画像

          Checkpoint/LoRA/Embedding Info

          Checkpoint、LoRA、Embeddingの詳細情報を表示します。Checkpointの場合は、「Load Checkpoint」ノード上で右クリックし、表示されたメニューの「View Checkpoint Info…」を選択します。LoRAの場合は、「Load LoRA」ノード上で右クリックし、表示されたメニューの「View Lora Info…」を選択します。

          画像

          Embeddingの場合は、プロンプトの入力時に表示される候補のインフォメーションボタンをクリックすることで表示させることができます。

          画像

          モデルの詳細は、以下のように表示されます。

          画像

          Custom Colors

          ノードに色をつけることができる機能です。

          画像

          色の付け方は、ノードを右クリックし、表示されたメニューから「Colors」を選択すると、色の選択メニューが表示され、そこから色を選択すると、ノードに色を付けることができます。

          画像

          色の選択で「Custom」を選択すると、色選択のパレットが表示され、ここで好きな色を選択できます。色を選択した後にEnterキーで完了となります。

          画像

          Favicon Status

          ワークフローの実行状態をブラウザのタブに表示されるアイコンで判断することができます。また、ワークフロー実行中のタブに表示される数字は、「Queue size」になります。

          画像

          KSampler (Advanced) denoise helper

          この機能は、「KSampler (Advanced)」ノードの各ウィジェットの値を質問に答えていくことで設定していく機能です。

          • 「KSampler (Advanced)」ノード上で右クリックし、表示されたメニューから「Set Denoise」を選択します。
          • ブラウザの上部にダイアログが表示されます。最初の質問は、「How many steps do you want?(求めるステップ数はいくつですか?)」です。ステップ数を入力し、「OK」をクリックしてください。
          画像
          • 次の質問が表示されます。次の質問は、「How much denoise? (0-1)(denoiseはいくつですか?)」です。設定したいdenoiseの値を0〜1の間で入力してください。
          画像
          • これで各ウィジェットの値が自動で設定されます。
          画像

          Lock Nodes & Groups

          ノードやグループにロックオプションを追加し、ロックを解除するまで移動できないようにします。しかし、現状はグループにしか効果がなく、ノードには適用されないようです。

          • グループ上で右クリックをして、表示されたメニューの「Edit Group」を選択すると、さらに表示されるメニューから「Lock」をクリックします。これでグループがロックされ、移動できなくなります。
          画像
          • アンロックする場合は、同様の操作をしていくと、先程は「Lock」だった項目が「Unlock」になっているので、「Unlock」をクリックすることで可能です。
          画像

          Math Expression

          入力した値を利用して計算を行うカスタムノード「Math Expression」を提供します。以下が「Math Expression」の仕様になります。

          • 入力可能な値: IMAGE、LATENT、INT、FLOAT
          • 使用できる演算子:
            • + : 加算
            • – : 減算
            • * : 乗算
            • / : 除算
            • // : 切り捨て除算
            • ** : 冪乗
            • ^ : 排他的論理和
            • % : 剰余
          • 使用できる関数:
            • floor(num): 小数点以下切り捨て
            • ceil(num): 小数点以下切り上げ
            • randomint(min,max): ランダム値

          例えば、以下のように2つの画像(両方ともwidthが1024px)を読み込み、1つを入力「a」、もう1つを入力「b」に入力します。Math Expressionでは、「a.width + b.width」と入力し、ワークフローを実行すると、2048という結果を出力できます。

          画像

          Node Finder

          ワークフロー内で使用されているノードの検索をサポートする機能です。

          • キャンバス上を右クリックし、表示されたメニューから「Go to node」を選択します。
          • 「Go to node」を選択すると、ワークフロー内で使用されているノードの種類が表示されます。
          • さらにここからノードの種類を選択すると、使用されているノードの一覧が表示され、表示したいノードをクリックすると、そのノードに移動します。
          画像

          Quick Nodes

          特定の標準ノードに対して、接続対象のノードを簡単に追加する機能が提供されています。

          • 例えば、「Load Checkpoint」ノードを右クリックすると、上部に「Add XXX」という項目が複数表示されます。これらをクリックすると、自動で接続先のノードが追加されます。
          画像
          • 以下は「Add LoRA」を選択した結果です。自動で「Load LoRA」ノードが追加および接続されます。
          画像

          Play Sound

          入力をトリガーに音を鳴らすカスタムノード「PlaySound」を提供します。例えば、以下のようにグラフの末端に接続することで、ワークフローの実行が完了した時に音を鳴らすことで、実行完了を通知するために使用できます。

          画像

          「PlaySound」の各ウィジェットの説明は以下になります。

          • 入力「any」: 入力はトリガーにしか使用されないので、どんな値でも入力できます。
          • mode:「always」「on empty queue」から選択できます。
            • always: 入力をトリガーに常に音が鳴ります。
            • on empty queue: queue: キューが空になった時に音がなります。
          • volume: 音のボリュームを0〜1の間で指定します。
          • file: 通知音を指定します。通知音は、「ComfyUI/custom_nodes/ComfyUI-Custom-Scripts/web/js/assets」フォルダに格納することで使用できます。初期通知音として「notify.mp3」がフォルダに格納されています。別の通知音を使用したい場合は、当該フォルダにmp3ファイルを格納し、fileにそのファイル名を指定することで使用できます。
          画像

          System Notification

          入力をトリガーにシステム通知を起こすカスタムノード「System Notification」を提供します。

          画像

          例えば、以下のようにグラフの末端に接続することで、ワークフローの実行が完了した時に通知を出すことで、実行完了を通知するために使用できます。

          画像

          「SystemNotification」の各ウィジェットの説明は以下になります。

          • 入力「any」: 入力はトリガーにしか使用されないので、どんな値でも入力できます。
          • message: システム通知に表示するメッセージを指定します。
          • mode:「always」「on empty queue」から選択できます。
            • always: 入力をトリガーに常に音が鳴ります。
            • on empty queue: queue: キューが空になった時に音がなります。
          画像

          Load Text

          「Load Text」は、テキストファイルを読み込むカスタムノードです。例えば、よく使うプロンプトをテキストファイルで保存しておき、それを読み込み、プロンプトとして使用することが考えられます。

          画像

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

          • root_dir: テキストファイルを格納しているフォルダを選択します。
            • input: 「ComfyUI/input」フォルダ
            • output: 「ComfyUI/output」フォルダ
            • temp: 「ComfyUI/temp」フォルダ(ない場合は作成する)
          • file: 読み込むテキストファイルを選択します。
          画像

          Show Text

          「Show Text」は、テキストを表示するカスタムノードです。例えば、前述した「Load Text」を使用した際に、中間に「Show Text」を挟むことで、読み込んだテキストファイルの内容を確認することができます。

          画像

          Show Image on Menu

          メニューの下部に生成画像が表示される機能です。

          画像

          String Function

          「String Function」は、テキストのカンマ区切りでの結合や、正規表現を使った置換などの機能を提供するカスタムノードです。

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

          • action: append, replaceから選択します。
            • append: text_aのテキストに対して、text_b、text_cのテキストを追加します。
            • replace: text_aのテキストに対して、text_bに記載した条件に一致した箇所をtext_cに置換します。
          • tidy_tags: appendの際に、text_b、text_cのテキストをカンマ区切りで結合します。
          画像

          appendの使い方としては、まず「String Function」text_aを入力に変換し、その入力に対してテキストを接続させ、入力されたテキストに対してtext_btext_cの内容を追加します。

          画像

          replaceの場合は、正規表現を使用することもできます。text_bに入力した正規表現に一致する箇所をtext_cに入力した正規表現で置換します。

          画像

          Widget Defaults

          ノードのウィジェットのデフォルト値を設定することができます。設定画面の「Widget Defaults」「Manage」をクリック後に表示される画面からデフォルト値を設定します。

          画像

          ウィジェットのデフォルト値の管理画面では、Node Class(カスタムノード名)、Widget Name(ウィジェット名)、Default Value(デフォルト値)を設定します。各項目を入力後に「Save」をクリックで登録完了になります。一例として、Node ClassにKSampler、Widget Nameにsteps、Default Valueに30を設定します。

          画像

          以下がデフォルト値を設定した結果です。本来のstepsの初期値は20ですが、30に変更になっていることが確認できます。

          画像

          Workflows

          ワークフローの保存と読み込みを手軽に行える機能があります。ComfyUI-Custom-Scriptsをインストールすると、メニューの「Save」「Load」にプルダウンメニューが追加されます。

          画像

          「Save」のプルダウンメニューを開くと、「Save as」「Save to workflows」が表示されます。「Save as」は、標準の保存機能で、指定した場所にワークフローが保存されます。「Save to workflows」は、保存場所の指定はできず、自動で「ComfyUI/pysssss-workflows」フォルダに指定した名前でワークフローが保存されます。

          画像

          次に「Load」のプルダウンメニューを開きます。このメニューには、「ComfyUI/pysssss-workflows」フォルダに保存されているワークフローが表示されます(要するに「Save to workflows」で保存したワークフローが表示されるということ)。通常の「Load」では、ファイル選択ダイアログが開き、読み込むワークフローを選択しますが、この機能ではプルダウンメニューに表示されたワークフローをクリックするだけで読み込むことができます。

          画像

          設定画面では、メニューの「Load Default」で読み込まれるワークフローを「ComfyUI/pysssss-workflows」フォルダに保存されているワークフローに変更することが可能です。設定画面の「Default Workflow」の選択肢には、「[ComfyUI Default]」「ComfyUI/pysssss-workflows」フォルダ内のワークフローが表示されます。「[ComfyUI Default]」は、ComfyUIの標準のワークフローになります。それ以外の保存したワークフローを選択すると、「Load Default」で読み込まれるワークフローが選択したワークフローになります。

          画像

          Workflow Images

          ワークフローを画像として保存する機能です。以下の記事で解説しているので、詳細は以下の記事をご覧ください。

          Use Number Input Prompt

           設定画面の項目「Use number input on value entry」を有効化すると、ウィジェットの数値入力がスピンボックスで可能になります。

          画像

          ノードの数値タイプのウィジェットをクリックし、値の編集ボックスが開くと、上下のボタンが追加されています。

          画像

          3. まとめ

          ComfyUI-Custom-Scriptsは、ComfyUIの機能を大幅に拡張し、より快適で効率的なAI画像生成を実現する強力なツールです。ノードの自動配置、プロンプトのオートコンプリート、ワークフローの保存・読み込み機能など、様々な機能が提供されています。これらの機能を活用することで、ワークフローの管理、画像生成プロセスの効率化、そして新たな表現の可能性を探求することができます。
          この記事で紹介した機能以外にも、ComfyUI-Custom-Scriptsは常に進化を続けており、新しい機能が追加されています。ぜひComfyUI-Custom-Scriptsを導入し、ComfyUIの可能性を最大限に引き出しましょう。あなたのAIアート制作が、さらに楽しく、創造的なものになることを期待しています。

          次回は、ComfyUIのカスタムノード「XY Plot」の方法を紹介します。乞うご期待!

          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/nb3555a8a64da

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

        1. [ComfyMaster17] アウトペインティングで、画像の枠を超える!

          画像サイズの [枠]ワクにとらわれず、さらに広大な世界を描きたいと思ったことはありませんか?
          ComfyUIのOutpainting(アウトペインティング)機能を使えば、既存の画像をキャンバスのように拡張し、周囲の景色や状況をAIが自動的に生成してくれるのです。画像の境界線を越えて、新たなストーリーを紡ぎ出すことができます。漫画やバナー画像をつくるときにとても便利です。

          こんにちわ、AICU media編集部です。
          ComfyUI マスターガイド」第17回目になります。
          本記事では、ComfyUIのOutpaintingの基本的な使い方から、具体的なワークフロー、そしてその無限の可能性についてご紹介します。

          前回はこちら

            1. Outpaintingとは

            Outpainting(アウトペインティング)は、既存の画像の境界を超えて拡張し、新しい視覚的要素を生成する画像処理技術です。これは、元の画像のコンテキストを維持しながら、画像の外側に新しい内容を追加することができます。

            ▼[参考]Automatic1111での利用例

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

            例えば、上下左右に50pxの拡張をする場合、以下のようになります。拡張部は、元画像のコンテキストに従った内容になっています。

            画像

            2. Outpaintingワークフロー

            それでは、Outpaintingのワークフローを作成していきます。
            ✨️便利なGoogle Colabノートブックとサンプルjsonファイルは文末にて✨️
            ここでは、以下の画像を縦に拡張してみます。

            画像

            最終的なワークフローは以下になります。

            画像

            さて、自分でアウトペインティングのワークフローを作ってみましょう!

            • メニューの「Load Default」をクリックし、標準のワークフローをロードした状態にします。モデルはstable-diffusion-xl-base-1.0を使用します。
            画像
            • 次に「Load Image」ノードを追加し、「choose file to upload」から対象の画像をアップロードします。
            画像
            • 次に空白をダブルクリックして「Pad Image for Outpainting」を追加し、「Load Image」の出力「IMAGE」と、「Pad Image for Outpainting」の入力「image」を接続します。
            画像
            • 「Pad Image for Outpainting」では、left、top、right、bottomにピクセル単位で拡張するサイズを指定できます。また、feathering(フェザリング)は、画像の端をぼかして滑らかに周囲と馴染ませる技術です。outpaintingでは、元の画像と新しく生成した部分の境界をなめらかにつなぐために使用されます。今回は、topに200px、featheringに100pxを指定しました。
            • 拡張部分にあまり大きな値を設定しすぎないことがコツです!
            • とはいえ小さすぎると描画できない要素(この場合は雲)もあるので調整しながら何回か生成するのがオススメです。
            画像
            • 次に「VAE Encode (for Inpainting)」ノードを追加し、「Pad Image for Outpainting」ノードの出力「IMAGE」「MASK」を、それぞれ「VAE Encode (for Inpainting)」ノードの入力「pixels」「mask」に接続、「Load Checkpoint」ノードの出力「VAE」「VAE Encode (for Inpainting)」ノードの入力「vae」に接続します。
            画像
            • 次に「VAE Encode (for Inpainting)」ノードの出力「LATENT」「KSampler」ノードの入力「latent_image」に接続します。
            画像
            • これで生成する準備が完了しました。
            • 上のCLIP(ポジティブプロンプト)に拡張したい画像のプロンプトとして「blue sky, cloud」を設定します。
            • 「Queue Prompt」をクリックし、生成を実行します。以下が生成結果です。しっかり上部に拡張されていることがわかります。
            画像
            • 次は「Pad Image for Outpainting」ノードの「left」に512pxを設定し、横長に画像を拡張してみました。
            画像
            • 拡張した画像に対して、さらに繰り返し拡張を加えていくことも可能です。以下の画像は、上側の拡張を数回行ったものになります。
            画像

            3. まとめ

            ComfyUIのOutpainting機能は、画像編集の可能性を大きく広げる画期的なツールです。シンプルな操作で、画像の境界線を越えて世界を拡張し、想像力豊かな表現を実現することができます。風景写真の拡張、イラストのストーリー展開、漫画制作、バナー画像制作、あるいは全く新しい画像の創造など、その用途は多岐に渡ります。ぜひ、ComfyUIのOutpaintingを試して、あなたのクリエイティビティを解き放ち、新たな表現の世界を切り開いてください。

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

            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/nd89f01669ee6

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

          1. BlendAI第1回ファンミーティング潜入レポート!デルタもん誕生秘話から新キャラ「ガンマミィ」、さらに壮大な計画まで明らかに!

            2024年9月14日に行われた、AIキャラクター「デルタもん」を開発するBlendAIのファンミーティングに参加してきました!今回はその内容を熱量たっぷりでお届けします。

            設立わずか1年! 怒涛のスピードで成長を続けるBlendAI

            まずは、BlendAI CEOの小宮氏、CTOの小坂氏、そしてクリエイティブディレクターの榊氏の3名から熱い想いのこもった挨拶がありました。

            設立は2024年1月と、まだ若い会社ながら、デルタもんの誕生、クラウドファンディングの成功、そして5000万円の資金調達達成など、怒涛のスピードで成長を続けています。

            その原動力となっているのが、「AIとクリエイティブを融合させ、より良いものを生み出し、クリエイターにチャンスを与える」というビジョン。
            特に、コロナ禍で顕在化した「孤独」をAIの力で解決したいという小宮氏の強い想いに、他のメンバーも共感し、プロジェクトはスタートしました。

            コンテンツは以下の通りでした

            • 会社情報
            • 会社のミッション
            • 創業の経緯
            • 創業者のバックグランド
            • デルタもん、およびアルパラプロジェクトについて
            • デルタもんの技術的こだわり、開発秘話
            • 会社全体の戦略
            • B向けサイドでの実例
            • クラファンについて
            • チラ見せ
            • 質問コーナー
            • 写真撮影
            • アンケート
            画像

            創業者のバックグランド

            MCはBlendAI執行役員の中川賢史朗さん

            【出演】
            BlendAI代表 小宮自由さん
            CTO小迫良輔さん
            クリエイティブディレクター榊正宗さん

            画像

            興味深い小宮自由さんのブロックチェーン時代のご経験。

            サトシ・ナカモトのAIを作ったりもしています。

            https://twitter.com/jiyu33/status/1817496621166600212

            デルタもん誕生秘話!
            3Dモデル化で「AIキャラクターの2次創作」を促進

            続いて、デルタもん誕生の舞台裏が明らかに。

            キャラクターデザインを担当した榊(さかき)氏は、著作権問題をクリアするため、あえて手書きでデザイン画を作成し、それを元に3Dモデルを制作したそう。
            その3Dモデルをクラウドファンディングで配布したことで、高精度なLoRA制作が可能となり、多くのクリエイターによる2次創作が促進されました。

            https://blendai.jp/resources

            二次創作用に自由に使える素材を配布しています。

            AICUとしてはコラボコンテストも開催しました!

            デルタもん、およびアルパラプロジェクトについて

            アルファパラダイスプロジェクト始動!
            デルタもんだけじゃない!個性豊かなAIキャラクターが続々登場

            今後の展開として、初めて明かされる「アルファパラダイスプロジェクト」の概要が明らかに。

            画像

            これは、デルタもんを含む4人ずつ6種類、全24体のAIキャラクターを、6つの異なる世界観で展開していくという壮大なプロジェクト。
            しかも、各キャラクターのデザインはそれぞれ異なる絵描きさんが担当し、小説家によるストーリーも用意されるとのこと!

            ・未来編
            ・ファンタジー編
            ・妖怪編
            ・ミリタリー編
            ・モンスター編
            ・神様編

            技術的な難度とその展開についても語られました。

            画像

            AI技術とプロのクリエイターの才能が融合することで、著作権問題をクリアしながら、多様な絵柄と世界観で誰もが安心して2次創作を楽しめる、まさに夢のようなプロジェクトです。

            会社全体の戦略・B向けサイドでの実例

            B向けで開発ノウハウを貯め、C向けへの導入を促す。
            十分な売上とノウハウが溜まったら、C向けに専念する。
            C向けはSaaSの成長戦略を用いて伸ばす。
            それまで皆さんから意見や要望を集める。

            画像

            会話アプリ「CotoVerse」で、デルタもんと会話できる未来がすぐそこに

            ファンミーティングでは、開発中の会話アプリ「CotoVerse」(コトバース)のデモ動画も公開

            画像
            https://youtu.be/dwt44ICxNy4?feature=shared&t=4310

            「CotoVerse」の音声認識・音声合成技術により、デルタもんと自然な会話ができる様子が披露されました。

            デルタもんによる「教育係からケーキ工場に異動になった…」という未来の状況が説明されるハプニングも…!?


            将来的には、ガンマミィをはじめとする他のキャラクターも実装予定で、キャラクター同士の掛け合いなども実現するかも…?

            「ガンマミィ」クラウドファンディング

            まだまだ進化するデルタもん! ガンマミィのクラウドファンディングも間もなく開始!

            9月末、Campfireにて実施予定とのことです!

            画像

            最後に、ガンマミィのイラストがチラ見せされました!
            デルタもんとはまた違った可愛らしい雰囲気で、その詳細な設定や、どんな声で話すのか、今から期待が高まります。

            画像

            ✨️追記:9月16日、キャラクタービジュアルが公開されました✨️

            ガンマミィのクラウドファンディングは近日開始予定とのことなので、気になる方はBlendAIの情報をチェックしましょう!
            BlendAIクラウドファンディングページ
            https://camp-fire.jp/profile/BlendAI/projects

            大盛りあがりの「質疑応答編」

            Q: 小迫CTOがイケボなのは何故?
            A: 自分で関西弁を録音したり…「最初の音声合成モデルは僕の声です」。
            といった質問で始まった質疑応答パートは大盛りあがりでした!

            ・榊さんは「シリーズ構成」を担当しているの?未来編以外は?
            ・AIと作家性について
            ・毎日のXでのデルタもんは誰が?
            AkumaAI公式LoRA
            ・デルタもんの「意外な一面」についての榊さんの感想
            ・「CotoVerse」スピーチモードについて
            ・資金調達5000万円のエピソード
            …などなど…

            まとめ

            AI x クリエイティブで、誰もが「つくる人」になれる未来へ

            BlendAIは、AIとクリエイティブの可能性を追求し、誰もが「つくる人」になれる未来を目指しています。
            デルタもん、そしてアルファパラダイスプロジェクトは、その夢を実現するための第一歩です。

            「つくる人をつくる」をビジョンにするAICUも
            今後の展開から目が離せません!

            関連リンク:

            https://note.com/blendai/n/n7b4f74267468

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

          2. [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.

          3. 「Stable Diffusion 3 Medium ファインチューニングチュートリアル」から読んだ Stability AIの「新モデル」

            Stability AI公式ブログで興味深い記事がリリースされました。

            https://stability.ai/news/stable-diffusion-3-medium-fine-tuning-tutorial

            https://ja.stability.ai/blog/stable-diffusion-3-medium-fine-tuning-tutorial

            以下、AICU mediaによるAI+人力翻訳、前半をかなり圧縮しつつ2万字超えでお送りします。

            はじめに

            こんにちは!Stability AI の生成メディアソリューションエンジニア(およびフリーランスの 2D/3D コンセプトデザイナー)の Yeo Wang です。YouTube で私のビデオを見たことがあるかもしれませんし、コミュニティ(Github)を通じて私を知っているかもしれません。個人的には、SD3 Medium をトレーニングしたときにまともな結果が得られたので、完全なファインチューニングと LoRA トレーニングの両方について、いくつかの洞察とクイックスタート構成を共有します。

            対象読者: ファインチューニングに関する基本的な知識を持つエンジニアまたは技術者

            目的: SD1.5/SDXL と Stable Diffusion 3 Medium (SD3M) のファインチューニングの違いを理解し、より多くのユーザーが SD3M でファインチューニングできるようにする

            SD3 のような画像を生成することに興味がありますか?

            <3つのプロンプトと、ベースモデルとファインチューンモデルによる出力画像の例>

            詳細については、このリンクから続きをお読みください。
            また、おまけとして、近日公開予定の画像モデルをこっそり紹介します~🙂

            Yeo Wangさんの熱心な動画と情報密度

            以上のように非常に軽いノリで紹介された短いブログの先には、 Stability AI による膨大な notionページがありました。

            https://stabilityai.notion.site/Stable-Diffusion-3-Medium-Fine-tuning-Tutorial-17f90df74bce4c62a295849f0dc8fb7e

            また紹介されているKasukanraさんのチャンネルには Stable Diffusionの解説動画だけでなく、FLUX.1[dev]によるLoRAの解説動画などもあります。

            画像

            https://www.youtube.com/@kasukanra

            kasukanraさんのチャンネルはイラストレーションを題材にした話題は多いですが、商用キャラクターの模倣や二次創作が多く扱われているわけではないことに注目です。そして非常に情報量が多い!動画も非常に濃密で「倍速で飛ばしてみる」というより「止めてみる動画」という印象です。

            notionに書かれた情報から

            さて、notionに書かれた情報を読み解いていきます。
            Ubuntu環境におけるComfyUIを使ったSD3のファインチューニングに関する情報が、投入するコマンドから学習レート、コンフィグファイルの設定まで細かく記載されています。

            【ご紹介】SDXL時代のLoRAやファインチューニングに関する基礎知識についてはぜひSD黄色本「画像生成AI Stable Diffusionスタートガイド」をご参照ください。

            https://j.aicu.ai/SBXL

            前半はUbuntuでの環境面と「SimpleTuner」のインストールですが、「カスタムコンフィグに戻る」以降の「SimpleTunerでキャプションのドロップアウト機能を使うのと、シャッフルをシミュレートするのとでは、何か違いがあるのでしょうか?」という話題以降が読みごたえがあります。

            In addition, there is a repeats parameter that you may or may not be familiar with depending on whether or not you’ve used other training repositories before.
            repeats duplicates your images (and optionally rotates, changes the color, etc.) and captions as well to help generalize the style into the model and prevent overfitting. While SimpleTuner supports caption dropout (randomly dropping captions a specified percentage of the time),it doesn’t support shuffling tokens (tokens are kind of like words in the caption) as of this moment, but you can simulate the behavior of kohya’s sd-scripts where you can shuffle tokens while keeping an n amount of tokens.
            If you’d like to replicate that, I’ve provided a script here that will duplicate the images and manipulate the captions:
            さらに、以前に他のトレーニングリポジトリを使ったことがあるかどうかによって、馴染みがあるかどうかが分かれるかもしれないrepeatsパラメータがあります。repeatsは、モデルにスタイルを一般化し、オーバーフィッティングを防ぐために、画像(オプションで回転、色の変更など)とキャプションを複製します。SimpleTunerはキャプションのドロップアウト(指定した割合でランダムにキャプションをドロップする)をサポートしていますが、現時点ではトークン(トークンはキャプションの単語のようなもの)のシャッフルはサポートしていません:

            <以下AICU mediaが解説しながら読みやすく翻訳します>
            ★以下、「私」はYeo Wangさんもしくはnotion著者の言となります。

            しかし、kohyaのsd-scriptsの動作をシミュレートすることができます。この場合、n個のトークンを保持しながら、トークンをシャッフルすることができます。

            もしそれを再現したいのであれば、画像を複製してキャプションを操作するスクリプトをここに用意しました:

            import os
            import shutil
            import random
            from pathlib import Path
            import re
            
            def duplicate_and_shuffle_dataset(input_folder, output_folder, dataset_repeats, n_tokens_to_keep):
                # Create output folder if it doesn't exist
                Path(output_folder).mkdir(parents=True, exist_ok=True)
            
                # Get all image files
                image_files = [f for f in os.listdir(input_folder) if f.lower().endswith(('.png', '.jpg', '.jpeg'))]
            
                for i in range(dataset_repeats):
                    for image_file in image_files:
                        # Get corresponding text file
                        text_file = os.path.splitext(image_file)[0] + '.txt'
                        
                        if not os.path.exists(os.path.join(input_folder, text_file)):
                            print(f"Warning: No corresponding text file found for {image_file}")
                            continue
            
                        # Create new file names
                        new_image_file = f"{os.path.splitext(image_file)[0]}_{i+1}{os.path.splitext(image_file)[1]}"
                        new_text_file = f"{os.path.splitext(text_file)[0]}_{i+1}.txt"
            
                        # Copy image file
                        shutil.copy2(os.path.join(input_folder, image_file), os.path.join(output_folder, new_image_file))
            
                        # Read, shuffle, and write text file
                        with open(os.path.join(input_folder, text_file), 'r') as f:
                            content = f.read().strip()
            
                        # Split tokens using comma or period as separator
                        tokens = re.split(r'[,.]', content)
                        tokens = [token.strip() for token in tokens if token.strip()]  # Remove empty tokens and strip whitespace
            
                        tokens_to_keep = tokens[:n_tokens_to_keep]
                        tokens_to_shuffle = tokens[n_tokens_to_keep:]
                        random.shuffle(tokens_to_shuffle)
            
                        new_content = ', '.join(tokens_to_keep + tokens_to_shuffle)
            
                        with open(os.path.join(output_folder, new_text_file), 'w') as f:
                            f.write(new_content)
            
                print(f"Dataset duplication and shuffling complete. Output saved to {output_folder}")
            
            # Example usage
            input_folder = "/weka2/home-yeo/datasets/SDXL/full_dataset_neo"
            output_folder = "/weka2/home-yeo/datasets/SDXL/duplicate_shuffle_10_fantasy"
            dataset_repeats = 10
            n_tokens_to_keep = 2
            
            duplicate_and_shuffle_dataset(input_folder, output_folder, dataset_repeats, n_tokens_to_keep)
            画像

            ph070, A rainy urban nighttime street scene features two cars parked along the wet pavement. The primary subject is a sleek, modern silver car with streamlined curves and glistening wheels reflecting the rain-soaked road. The background includes another vehicle—a darker sedan—partially obscured. Illuminated signs with Asian characters suggest a city setting possibly in a bustling nightlife district. The style is distinctly cinematic with a futuristic, neo-noir aesthetic, characterized by moody blue tones and the reflective glow of wet surfaces. The streetlights and the occasional gleam of neon green and orange provide contrast, enhancing the dark ambiance of the city at night. The atmosphere evokes a sense of mystery and quiet anticipation, with the deserted street hinting at hidden stories or events about to unfold.

            では、SimpleTunerでキャプションのドロップアウト機能を使うのと、シャッフルをシミュレートするのとでは、何か違いがあるのでしょうか?

            「ファンタジー・アート」データセットの場合、「キャプション・ドロップアウト」の方が、シャッフリングに比べて、データセットのスタイルをより保つことができると感じた。「Cinematic photo」データセットの場合、キャプションのドロップアウトとシャッフリングの両方の方法は互換性があると感じた。両者について明確な結論を出すことはできなかった。
            とりあえず、`multibackend.json`ファイルで `repeats` の数を `10` に設定し、`config` でキャプションのドロップアウトを `0.25` に設定することで、`repeats` を使う(そしてキャプションをドロップアウトする)ほうに傾いた。

            ★訳注:残念ながら「datasets/SDXL/full_dataset_neo」についての提供はないようですが、貴重なデータセットについての情報があります。

            さらに、データセットについてもう少し詳しく触れておきたい。fantasy art` データセットの場合、解像度が `1024 x 1024` ピクセルの正方形の画像で構成されている。一方、 `cinematic photo` データセットにはあらゆる種類のアスペクト比/解像度があった。私の `multibackend.json` ではトリミングを無効にしている。ある種のヒューリスティックな方法(例えば私のdetect_utils.py)を使ってプリクロッピングを行うことを強くお勧めします。そうでない場合は、`multibackend.json`のオプションの一つを使う必要があります:
            “jsx “crop_style”:”random|center|corner”, “crop_aspect”:「正方形|保存”, “`
            これらは、想定される関心領域に焦点を合わせるのが難しく、理想的ではないようだ。いずれにせよ、デフォルトの `config` でも、私のカスタム `config` でも、トリミングは `false` に設定されているので、私が気にしたことではない。

            ステップの計算

            最大学習ステップ数は簡単な数式で計算できます(単一コンセプトの場合):

            画像

            最大学習ステップ数 = (サンプル数 x 繰り返し / バッチサイズ)x エポック

            • バッチサイズ:1イテレーション(繰り返し)のなかで処理されるサンプル数
            • サンプル数:データセット内の総サンプル数
            • 繰り返し回数:何回1エポックでデータセットを繰り返すか
            • Epochs:データセット全体を処理する回数

            例えばここで「fantasy art」データセットには476枚の画像があるとします、ultibackend.jsonの10回の繰り返しに追加する。train_batch_size`を`6`にした。こういう設定の理由は2つあります。

            (1)この値なら、プログレスバーが1秒か2秒ごとに更新されるのを見ることができる。 1回の反復で`6`のサンプルを取ることができるという点で十分な大きさであり、トレーニングの過程でより多くの汎化を行うことができる。

            もし私が30エポックとか欲しいなら、最終的な計算はこうなる:

            画像

            これは多かれ少なかれ「23,800ステップ」に相当します。

            括弧の中の部分「476 x10 / 6」は1エポックあたりのステップ数を表し、793です。

            CHECKPOINTING_STEPS と MAX_NUM_STEPS はそれぞれ 800 と 24,000 に切り上げられます。
            CHECKPOINTING_STEPS はモデルのチェックポイントを保存する頻度を表します。これを800に設定すると、1エポックにかなり近いので、問題ないと思われます。CHECKPOINTING_LIMITは、以前のチェックポイントを上書きする前に保存したいチェックポイントの数です。私の場合、すべてのチェックポイントを保存しておきたかったので、`30`のような高い数値に制限を設定しました。

            複数のコンセプト

            上記の例では、頭に1つの統一的なトリガーワード `k4s4` を持つ単一の概念で学習しています。しかし、データセットに複数の概念/トリガーワードがある場合、ステップの計算は以下のようになります:

            2コンセプトの場合、ステップの計算式は以下のようになります。

            画像

            iコンセプトの場合

            画像

            最後に学習率ですが、これ以上高くすると勾配が爆発してしまうので「1.5e-5」としています。

            画像

            これで重要な設定はほとんどカバーできる。
            ★訳注:質を高めるために変更できる追加設定がいくつかありますので、カスタム設定をご参照ください。

            検証画像を生成する頻度は VALIDATION_STEPS で設定する。私は800(私のデータセットのエポックのステップ数)の1/4である200に設定した。つまり、1/4エポックごとに検証画像を生成することになる。正気度をチェック(sanity check)するために、少なくとも半分のエポックごとに検証画像を生成することをお勧めする。そうしないと、エラーを素早く発見できないかもしれない。

            LR_SCHEDULEとLR_WARMUP_STEPS

            最後に`LR_SCHEDULE`と`LR_WARMUP_STEPS`、
            この場合は`cosine`スケジュールで行いましたが、こんな感じになります。

            画像
            画像

            SimpleTunerはデフォルトのウォームアップを全トレーニングステップの10%に設定している。ここは変更しない。

            ★訳注:Custom SD3 full config.env についても公開されています。

            実際にトレーニングを開始する

            これで `config.env` と `multibackend.json` が適切にセットアップされたので、いよいよトレーニングを実行する。これはルートディレクトリで

            bash train.sh

            で実行します。

            計算能力に関する考察

            上記の実験はクラウドコンピューティングを使って行いましたが、私が提供した`config.env`は、24GBのVRAM GPU(`RTX 4090`)を使った私の個人的なマシンにて(かろうじて)可能です。

            画像
            画像

            モデルをどうするか?

            デフォルトでは、トレーニングが完了すると、以下のようなフォルダ構造になります。

            画像

            ここで理解しておくべきことがいくつかあります。

            1. datasets/models`内の各`checkpoint`ディレクトリにある`diffusion_pytorch_model.safetensors`ファイルが必要です。このファイルの場所は、transformerディレクトリの中です。見ての通り、これはかなり複雑です。最終的なパスは次のようになります: weka2/home-yeo/simpletuner_models/ninth_run/datasets/models/checkpoint-2400/transformer/diffusion_pytorch_model.safetensors` .
            2. diffusion_pytorch_model.safetensors`ファイルは、`ComfyUI`の`Load Checkpoint`ノード内で使用すると動作しません。UNETローダー`を使用するか、新しいバージョンの`ComfyUI`では、`Load Diffusion Model`ノードを使用する必要があります。そのため、これらのモデルを `ComfyUI` の models ディレクトリ内の `unet` ディレクトリにコピーする必要があります: admin/home-yeo/workspace/ComfyUI/models/unet`のようにします。

            これらのモデルを必要な場所に配置するプロセスを効率化するために、`source`と`target`ディレクトリの両方を指定すると、私が書いたシェルスクリプトがこれをやってくれます。

            SOURCE_DIR` と `TARGET_DIR` を置き換えて、モデルを `unet` フォルダに `symlink` します。

            #!/bin/bash
            
            # Source directory where the models are stored
            SOURCE_DIR="/admin/home-yeo/workspace/simpletuner_models/sd3_medium/full_finetune/cinema_photo/03/datasets/models"
            
            # Target directory for symlinks
            TARGET_DIR="/admin/home-yeo/workspace/ComfyUI/models/unet/simpletuner_blog_cine_photo_03"
            
            # Iterate over each checkpoint directory
            for CHECKPOINT_DIR in $(ls -d ${SOURCE_DIR}/checkpoint-*); do
                # Extract the checkpoint number from the directory name
                CHECKPOINT_NAME=$(basename ${CHECKPOINT_DIR})
                
                # Define the source file path
                SOURCE_FILE="${CHECKPOINT_DIR}/transformer/diffusion_pytorch_model.safetensors"
                
                # Define the symlink name
                LINK_NAME="${TARGET_DIR}/${CHECKPOINT_NAME}.safetensors"
                
                # Check if the source file exists
                if [ -f "${SOURCE_FILE}" ]; then
                    # Create a symlink in the target directory
                    ln -s "${SOURCE_FILE}" "${LINK_NAME}"
                    echo "Symlink created for ${CHECKPOINT_NAME}"
                else
                    echo "File not found: ${SOURCE_FILE}"
                fi
            done
            
            echo "Symlinking complete."

            https://note.com/api/v2/attachments/download/9d30fb4c541e9cd984f438650e9b5db0

            https://note.com/api/v2/attachments/download/0c7b9738a3800c72eeb35a479839d54e

            ベストチェックポイントの決定

            最適なチェックポイントを決定する方法は、特定のプロンプトのチェックポイント番号をX軸にプロットする。つまりこんなかんじ。

            画像
            画像
            画像
            画像

            これを行うために、私はComfyUIワークフローのAPIバージョンをロードするカスタムスクリプトを使用しています。保存(API形式)ボタンをクリックすれば、どんなワークフローでもAPI形式で保存できる。私はすでにあなたの使用のために上のバージョンを保存しました。もしComfyUI APIの使い方についてもっと詳しいビデオガイドが必要であれば、昨年作った動画がここにあります。

            ComfyUIが起動していることを確認してから、以下のスクリプトを実行する。また、スクリプトを実行する場所と同じ場所に`.env`ファイルをセットアップする必要があります。

            import os
            import json
            import random
            from urllib import request
            import datetime
            from PIL import Image, ImageDraw, ImageFont
            import time
            import re
            import urllib.error
            
            from dotenv import load_dotenv
            load_dotenv()
            
            # Configuration
            api_workflow_dir = os.getenv("API_WORKFLOW_DIR")
            finetune_dir = os.getenv("FINETUNE_DIR")
            
            api_workflow_file = os.getenv("API_WORKFLOW_FILE")
            api_endpoint = os.getenv("API_ENDPOINT")
            image_output_dir = os.getenv("IMAGE_OUTPUT_DIR")
            font_ttf_path = os.getenv("FONT_TTF_PATH")
            
            comfyui_output_dir = os.getenv("COMFYUI_OUTPUT_DIR")
            
            api_endpoint = f"http://{api_endpoint}/prompt"
            
            workflow_file_path = os.path.join(api_workflow_dir, api_workflow_file)
            workflow = json.load(open(workflow_file_path))
            
            current_datetime = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
            relative_output_path = current_datetime
            
            directory_creation_timeout = 3000  # Timeout for directory creation in seconds
            image_generation_timeout = 30000  # Timeout for image generation in seconds
            
            def get_checkpoint_number(filename):
                match = re.search(r'checkpoint-(\d+)', filename)
                if match:
                    return int(match.group(1))
                match = re.search(r'/checkpoint-(\d+)/', filename)
                if match:
                    return int(match.group(1))
                return None
            
            def get_most_recent_output_folder(base_dir):
                folders = [f for f in os.listdir(base_dir) if os.path.isdir(os.path.join(base_dir, f))]
                if not folders:
                    return None
                return max(folders, key=lambda f: os.path.getctime(os.path.join(base_dir, f)))
            
            def process_safetensors(safetensor_dir, workflow):
                print(f"Scanning directory: {safetensor_dir}")
                
                last_dir = os.path.basename(os.path.normpath(safetensor_dir))
                
                all_items = os.listdir(safetensor_dir)
                
                safetensor_items = [f for f in all_items if f.endswith('.safetensors')]
                
                safetensor_items.sort(key=lambda x: int(x.split('-')[1].split('.')[0]))
                
                print(f"Found items: {safetensor_items}")
                
                for item in safetensor_items:
                    unet_name = f"{last_dir}/{item}"
                    
                    print(f"Processing: {unet_name}")
            
                    unet_loader_node = workflow["273"]
                    unet_loader_node["inputs"]["unet_name"] = unet_name
            
                    checkpoint_num = item.split('-')[1].split('.')[0]
                    
                    save_image = workflow["275"]
                    filename_prefix = f"checkpoint-{checkpoint_num}"
                    save_image["inputs"]["output_path"] = relative_output_path
                    save_image["inputs"]["filename_prefix"] = filename_prefix
            
                    success = queue_prompt(workflow)
                    if not success:
                        print(f"Failed to queue prompt for checkpoint {checkpoint_num}")
                    else:
                        print(f"Successfully queued prompt for checkpoint {checkpoint_num}")
            
                if not safetensor_items:
                    print("No .safetensors files found in the directory.")
                
                return len(safetensor_items)
            
            def create_image_strip(safetensor_dir, image_folder, output_filename):
                safetensor_files = [f for f in os.listdir(safetensor_dir) if f.endswith('.safetensors')]
                safetensor_files.sort(key=get_checkpoint_number)
                checkpoints = [get_checkpoint_number(f) for f in safetensor_files if get_checkpoint_number(f) is not None]
            
                images = []
                for checkpoint in checkpoints:
                    filename = f"checkpoint-{checkpoint}_0001.png"
                    filepath = os.path.join(image_folder, filename)
                    if os.path.exists(filepath):
                        try:
                            img = Image.open(filepath)
                            images.append(img)
                        except IOError as e:
                            print(f"Cannot open image: {filepath}")
                            print(f"Error: {e}")
            
                if not images:
                    print("No valid images found.")
                    return
            
                img_width, img_height = images[0].size
                strip_width = img_width * len(images)
                label_height = 50  # Space for labels
                strip_height = img_height + label_height
            
                strip_image = Image.new('RGB', (strip_width, strip_height), 'white')
                draw = ImageDraw.Draw(strip_image)
                font = ImageFont.truetype(font_ttf_path, 20)
            
                for i, (img, checkpoint) in enumerate(zip(images, checkpoints)):
                    strip_image.paste(img, (i * img_width, label_height))
                    
                    label = f"checkpoint-{checkpoint}"
                    label_width = draw.textlength(label, font=font)
                    label_x = i * img_width + (img_width - label_width) // 2
                    draw.text((label_x, 10), label, fill="black", font=font)
            
                strip_image.save(output_filename)
                print(f"Image strip saved to: {output_filename}")
            
            def queue_prompt(workflow):
                p = {"prompt": workflow}
                data = json.dumps(p).encode('utf-8')
                req = request.Request(api_endpoint, data=data, headers={'Content-Type': 'application/json'})
                try:
                    with request.urlopen(req) as response:
                        print(f"API request successful. Status code: {response.getcode()}")
                        return True
                except urllib.error.URLError as e:
                    if hasattr(e, 'reason'):
                        print(f"Failed to reach the server. Reason: {e.reason}")
                    elif hasattr(e, 'code'):
                        print(f"The server couldn't fulfill the request. Error code: {e.code}")
                    print(f"API endpoint: {api_endpoint}")
                except Exception as e:
                    print(f"An error occurred: {str(e)}")
                return False
            
            def wait_for_directory_creation(directory, timeout):
                print(f"Waiting for directory {directory} to be created...")
                start_time = time.time()
                while time.time() - start_time < timeout:
                    if os.path.exists(directory):
                        print(f"Directory {directory} found.")
                        return True
                    time.sleep(5)  # Check every 5 seconds
                print(f"Timeout waiting for directory {directory} to be created.")
                return False
            
            def wait_for_images(image_folder, expected_count, timeout):
                print("Waiting for images to be generated...")
                start_time = time.time()
                while time.time() - start_time < timeout:
                    if os.path.exists(image_folder):
                        image_files = [f for f in os.listdir(image_folder) if f.endswith('.png')]
                        if len(image_files) >= expected_count:
                            print(f"Found all {expected_count} images.")
                            return True
                    time.sleep(5)  # Check every 5 seconds
                print("Timeout waiting for images to be generated.")
                return False
            
            if __name__ == "__main__":
                safetensor_dir = finetune_dir 
                print(f"Finetune directory: {safetensor_dir}")
            
                # Generate images
                expected_image_count = process_safetensors(safetensor_dir, workflow)
            
                absolute_output_path = os.path.join(comfyui_output_dir, current_datetime)
                print(f"Absolute output path: {absolute_output_path}")
            
                # Create the image strip
                if wait_for_directory_creation(absolute_output_path, directory_creation_timeout):
                    print(f"Expected image count: {expected_image_count}")
                    if wait_for_images(absolute_output_path, expected_image_count, image_generation_timeout):
                        output_strip_filename = os.path.join(absolute_output_path, "output_image_strip.png")
                        create_image_strip(safetensor_dir, absolute_output_path, output_strip_filename)
                    else:
                        print("Failed to generate all images in time.")
                else:
                    print("Output directory was not created.")
            • サンプルの .env ファイル
            API_WORKFLOW_DIR=/weka2/home-yeo/workflows
            COMFYUI_OUTPUT_DIR = /weka2/home-yeo/ComfyUI/output/
            FINETUNE_DIR=/admin/home-yeo/workspace/ComfyUI/models/unet/simpletuner_09
            API_WORKFLOW_FILE=SD3_SINGLE_BASIC_API_02.json
            API_ENDPOINT=127.0.0.1:8188
            FONT_TTF_PATH=/weka2/home-yeo/fonts/arial.ttf
            BOLD_FONT_TTF_PATH=/weka2/home-yeo/fonts/arialbd.ttf

            結局、私は終了間際のステップ`20,800`でチェックポイントを選びました。

            ギャラリー

            最後にいくつか例を挙げていきます。

            画像
            画像
            画像
            画像
            画像

            LoRA のトレーニング

            (より軽量な)LoRAのトレーニングを試したい場合、これは私が使ったconfigで、まあまあの結果が得られました。完全な微調整の方が品質的には良いようです。LoRAの rank と alpha は export TRAINER_EXTRA_ARGS 内で設定できます。
            ★訳注:カスタムSD3 LoRA `config.env`をご参照ください

            近日発表予定のモデルのチラ見せ

            詳細はまだお伝えできませんが、近日発表予定のモデルの出力のスニークピーク(チラ見せ)です

            a close up three fourth perspective portrait view of a young woman with dark hair and dark blue eyes, looking upwards and to the left, head tilted slightly downwards and to the left, exposed forehead, wearing a nun habit with white lining, wearing a white collared shirt, barely visible ear, cropped, a dark brown background
            黒髪で濃い青の瞳をした若い女性のクローズアップ三四透視図。上を見て左を向き、頭はやや下向きで左に傾いており、額は露出しています。白い裏地のついた修道服に身を包み、白い襟付きシャツを着ており、耳はかろうじて見えています。

            画像

            a front wide view of a small cyberpunk city with futuristic skyscrapers with gold rooftops situated on the side of a cliff overlooking an ocean, day time view with green tones, some boats floating in the foreground on top of reflective orange water, large mechanical robot structure reaching high above the clouds in the far background, atmospheric perspective, teal sky
            海を見下ろす崖の中腹に建つ、金色の屋根を持つ近未来的な高層ビルが建ち並ぶ小さなサイバーパンク都市の正面からのワイドビュー、緑を基調とした日中の眺め、反射するオレンジ色の水の上に浮かぶ手前のいくつかのボート、遠景の雲の上まで届く大きな機械仕掛けのロボット構造、大気遠近法、ティール色の空

            画像

            a medium view of a city square alongside a river, two large red boats in the foreground with cargo on them, two people in a smaller boat in the bottom right cruising along, reflective dark yellow water in the river, a congregation of people walking along the street parallel to the river in the midground, a dark white palazzo building with dark white tower on the right with red tones, golden hour, red and yellow flag in the top left foreground, light blue flag with yellow accents in the right midground, aerial perspective
            川沿いの広場の中景、前景に荷を載せた2隻の赤い大型ボート、右下の小さなボートに乗った2人のクルージング、反射する濃い黄色の川の水、中景に川と平行する通りを歩く人々、右手に赤を基調とした濃い白の塔を持つ濃い白のパラッツォの建物、ゴールデンタイム、左上の前景に赤と黄色の旗、右の中景に黄色のアクセントのある水色の旗、空からの視点。

            画像

            近日公開予定のモデルのスニークピーク まだあまり多くの詳細はお伝えできませんが、近日公開予定のモデルの1人からの出力のスニークピークです:黒髪でダークブルーの目をした若い女性のクローズアップ3/4遠近法のポートレートビュー、上向きで左を向き、頭はやや下向きで左に傾いており、額が露出しています、白い裏地の付いた修道女の習慣を身に着け、白い襟付きシャツを着ており、かろうじて耳が見えています、トリミング済み、ダークブラウンの背景。

            おまけ: オートキャプション

            データセットが準備できれば、上記の手順でモデルのファインチューニングを始めることができますが、結果はデータセットによって大きく異なります。正しくキャプションが付けられた画像を見つけるのは、かなり難しいことです。手作業でキャプションをつけるのは、かなり面倒で、ミスが起こりやすい作業です。ですから、何らかの形で自動化されたソリューションを試してみるのは理にかなっています。

            https://github.com/THUDM/CogVLM

            実際、SD3自身も、キャプションを生成するための事前学習でCogVLM(ビジョン言語モデル)を使用しました。しかし、このモデルを正しく使用するには、多くのVRAM、大規模なデータセット、複雑なワークフローが必要です。そこで、このブログポストでは、小規模なコミュニティの微調整にもう少し適したものに焦点を当てます:JoyCaptionです。JoyCaptionは、新しいモデルの微調整を行うために、コミュニティのメンバーによって開発された積極的なキャプションモデルです。

            https://huggingface.co/spaces/fancyfeast/joy-caption-pre-alpha

            アクセシブルなキャプション・インターフェースで動かすには、TagGUIを使います。このページの指示に従うことで、GUIをインストールし、画像を処理する準備ができます。ただし、いくつか重要なポイントがあります:オートキャプションは(まだ)完全ではないので、自動的な解決策によって、画像の一部が適切にキャプション付けされていないことに気づくかもしれません。このようなミスや問題は、多くのデータを持っていれば多少はかき消すことができますが、ほとんどの趣味人にとっては難しいことでしょう。この場合、何が間違っているのかを理解し、それを反復するために、キャプションを手動で検査する必要があるかもしれない。覚えておいてほしいのは、不正確なキャプションでトレーニングしても、迅速な遵守は期待できないので、この設定に費やす時間は非常に貴重だということです。ここでの反復時間を短縮するために、完全な微調整の前に、データを使っていくつかのLoRAを訓練するとよいでしょう。頑張ってください!

            https://github.com/doloreshaze337/taggui

            kasukanra@GitHubリポジトリ

            https://github.com/kasukanra?tab=repositories

            たくさんのツールが置かれています。

            原作をご提供いただいたYeo Wangさん、ありがとうございました!

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

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

          4. 結果発表!!「デルタもん4コマ漫画コンテスト」

            デルタもんの日常が炸裂!個性豊かな作品が集結!BlendAI特別協賛「デルタもん4コマ漫画コンテスト」応募作品と優秀賞の結果を紹介します。

            AIキャラクター「デルタもん」をテーマにした、「デルタもん4コマ漫画コンテスト」に、たくさんのご応募をいただきありがとうございました!

            個性豊かな作品、なんと 12 作品 も集まりました!
            審査員一同、AI技術を駆使した表現力と、デルタもんの魅力を引き出すユニークなストーリーに驚かされました。

            今回のコンテストは、デルタもんのLoRAを配布したクラウドファンディングの出資者の方々への感謝の気持ちから生まれた企画の第一弾なんです。
            #デルタもん4コマ のハッシュタグを追いかけて、このコンテストを知った方も多いのではないでしょうか?

            コンテストに応募した方も、そうでない方も、X(Twitter)のタイムラインがデルタもんで溢れる様子に、きっと笑顔になったはずです。出資者の方々も、自分の支援がこんなにも素敵な作品を生み出すきっかけになったことを、嬉しく思っていることでしょう。

            さて、話を戻して…今回は、デルタもん4コマ漫画コンテストの応募作品の中から入選した素敵な作品と、受賞作品をご紹介します。

            画像

            コンテストはXの投稿及び応募フォームを用いて実施されています。
            作者からのタイトル、作品解説とともに紹介していきます。

            以下、入選作品です。
            優秀賞は最後に発表します。

            【未来へのΔ(デルタ)コネクション ~衝撃の真実~】 by ともっち

            https://x.com/tomomaga358/status/1827783761502798049

            【概要】この4コマ漫画は、一見普通の日本の高校を舞台に、未来から来たAIアンドロイド「デルタモン」と、謎めいたギャル「ミライ」を中心に展開するSF途中です。の裏に隠された驚くべき真実と、人類とAIの未来を考慮した重大な選択を描いています。
            【コンセプト】ジャンルミックス:学園もの、SF、一時の要素を融合させ、読者を魅了する展開を提供しました。キャラクターの二面性:デルタモンの不安げな様子や、ミライの意味深い態度など、登場人物の顔と裏の顔のギャップを強調しました。テクノロジーと倫理:先進的なAI技術と、それが実現する倫理的ジレンマを探ります。視覚的なコントラスト:現代の学校と未来的な要素(デルタモンの外観、隠された実験室など)を対比させ、違和感と興味を喚起しました。緊迫感の演出:時計の表示や、最後のカウントダウンタイマーなど、時間の切迫感を視覚的に表現しました。内面の葛藤:心の中の冷静、キャラクターの内面の葛藤や緊張感を表現しました。オープンエンド:最後のコマで決断の瞬間を描き、続きへの関心を呼びかけるようにしました。
            【工夫した点】各キャラクターの表情やコマ割りの構図を工夫しました。特に4コマ目のキャラクターアップとカウントダウンタイマーを表示させたところ。ストーリープロンプトを詳細に出力させて描きました。
            オノマトペを入れてさらに臨場感あふれるようにしたところです。

            編集部注:「デルタモン」は「デルタもん」の誤りなのか、アンドロイドの名前なのか不明だったので、そのまま掲載しておりますが、正式名称は「デルタもん」でお願いしますね!


            一見普通の学園生活を送るデルタもん…しかし、その裏には衝撃の真実が隠されていました!
            未来から来たAIアンドロイドという設定を活かしたSF要素、そして謎めいたギャル「ミライ」との関係性など、続きが気になる展開に引き込まれます。

            【5分で大変身!デルタもんのAI漫画チャレンジ】 by ともっち

            画像
            https://x.com/tomomaga358/status/1831305259882606756

            【使用ツール】 •Anifusion: AI漫画生成ツール(4コマの基本ビジュアル、キャラクター、背景作成) •コミPo!: 漫画編集ソフト(吹き出し、テキスト、オノマトペの追加と配置調整) •Claude 3.5 Sonnet: AI言語モデル(ストーリー構成、キャラクター設定、カメラアングル提案、セリフ作成、コマ説明生成) 【概要】 絵が苦手なAIアンドロイド女子高生、デルタもんが、AIツール「Anifusion」を発見し、わずか5分で漫画を作成。絶望から希望、そして成功へと至る過程を、ユーモアたっぷりに描いた4コマ漫画。読者の「私もやってみたい!」を引き出す、AIの可能性を示す作品。 【コンセプト】 「誰でも簡単にAIで漫画が作れる」という現代テクノロジーの魅力を、親しみやすいキャラクターと分かりやすいストーリーで伝える。技術の進歩により変わる創作の形を示しつつ、読者の創作意欲を刺激し、AIツールへの興味を喚起する。 【工夫した点】 •AIツールの魅力を視覚的に表現: 1コマ目:絶望的な落書きから、4コマ目:絵心なしでも漫画完成を達成するまで、劇的な変化を描写 3コマ目:パソコンでAIが生成した漫画の画面をデルタもんのバックに描くことにより視覚的効果とセリフによる生成スピードを強調 •感情を強調するオノマトペ使用: 「ふぅ〜」(落胆)、「ガーン」(驚き)、「かぁぁぁ•••」(感動)、「ドーン」(決意)他あり。 各コマの雰囲気をさらに盛り上げ、読者の感情移入を促進 •キャラクターの一貫性維持: 全コマでデルタもんの特徴(白青の制服、緑の猫耳、青いしっぽ)を統一 感情変化を耳としっぽの動きで表現し、キャラクターの生き生きとした表情を演出 ストーリープロンプトにも反映しました。 •読者目線を考慮した構図: 右上から左下への自然な視線の流れを意識した吹き出しとセリフの配置 3、4コマ目でダイナミックなアングルを採用し、感情の高まりを表現 •ストーリーと視覚表現の調和: AIを活用して各コマの展開がスムーズにつながるよう調整 「絵心ゼロ→AI発見→驚き→成功」という明確な流れで読者の共感を獲得。

            絵を描くのが苦手なデルタもんがAIツール「Anifusion」を使って漫画制作に挑戦!
            わずか5分で完成する様子に、AI技術の進化を感じさせられます。
            読者も「自分も作ってみたい!」と思わせる、AIの可能性を感じさせる作品です。

            【つよつよメンタルデルタもん】 by いぬさわ・ばう@InsBow🐾

            画像
            https://x.com/InsBow/status/1832967748760277383

            あまりにも作品の投稿が少なすぎることに悩んでいるようで悩んでいないデルタもんの日常を描きました。

            応募作品の少なさに動じない、デルタもんのつよつよメンタルっぷりがコミカルに描かれています。Anifusionのみで作られたという点にも注目です。

            【自撮り投稿デルタもん】 by いぬさわ・ばう@InsBow🐾

            画像
            https://x.com/InsBow/status/1832992326006055078

            あまりに投稿が少なすぎるデルタもんが自分でコンテンツを作りはじめるまでの前日譚ですわ
            Anifusionだけで作ってます

            「つよつよメンタルデルタもん」の連作ですね。
            投稿が少ないことに悩み、自らコンテンツを作り始めるデルタもんの姿が描かれています。表情豊かなデルタもんの姿にクスッと笑ってしまう作品です。

            【洞窟探索 日和】 by mounero

            画像

            AniFusionを使っていくつかAIマンガ作品を制作した経験を活かして、 生成ガチャとプロンプトの工夫を頑張りました。LoRAがある デルタもんでのマンガ生成とても楽しかったです。キャラがいい。 クリップスタジオで文字入れするのも楽しかったです。

            AniFusionを使った経験を活かし、生成ガチャとプロンプトを駆使して制作された作品。
            LoRAを活用したデルタもんの表現や、クリップスタジオでの文字入れなど、細部までこだわられています。

            【悪酔いデルタもん】 by いぬさわ・ばう

            画像
            https://x.com/InsBow/status/1833144163258556627

            自分の漫画作品が少なすぎてやけ酒を飲んでいたら、気がつけば自分の漫画を制作しているデルタもんです。

            応募作品の少なさにやけ酒を飲むデルタもん…!?
            酔った勢いで漫画を制作する姿がユーモラスに描かれています。
            自分大好きなのですね!

            【変身せよ!デルタもん熟女】 by 小泉勝志郎

            画像
            画像
            画像
            画像
            https://x.com/koi_zoom1/status/1833509800241729912

            作品概要:デルタもんは現代の熟女出留田文に変身してもらうことで現代に来ようとするが、デルタもんより出留田文の方が視力が良かったために交渉は決裂。しかし、49歳の出留田文には老眼で会社の資料が読めず、デルタもんに変身して資料を読むのであった。
            使用モデル:DucHaitenPonyNoScoreV4
            こだわり:デルタもん、出留田文、変身後デルタもんそれぞれデザインに一貫性があるようにしている。デルタもん、出留田文は個別にLoRAを作成。変身後デルタもんは両方のLoRAを適用して作成。変身シーンは双方のLoRAの割合を調整して生成。 デルタもんはオリジナルデザインに忠実にした。出留田文は49歳に見えるように、アニメ系モデルが苦手な熟女表現をできるようにしている。変身後デルタもんは出留田文がちょっと若返ってデルタもんの服装になりながら出留田文の風味も出るようにしている。

            なんと、熟女 出留田文でるた あや がデルタもんに変身!?
            LoRAを駆使したキャラクターデザインと、細かな若返り制御にも注目です。

            【AIの心得】 by わら

            画像
            https://x.com/wara_hirono/status/1833425252023665148

            デルタもんにアシスタントAIロボ(あまり役に立たない)がくっついていたらおもしろいなと思って描きました

            デルタもんに、ちょっと頼りないアシスタントAIロボが!?
            二人の掛け合いが面白い作品です。
            しかもメイキングとオリジナルキャラクターまで!

            【恐怖のマニフェスト】 by 合同会社オフィスSATOU

            画像
            画像
            画像
            画像

            進次郎記者会見のパロディです。デルタもんならこう言うとおもいました。

            ご応募いただいたみなさま、ありがとうございました!

            優秀賞、作品発表!

            【審査基準】
            ・品質
            ・発想力
            ・物語性

            BlendAI特別協賛「デルタもん4コマ漫画コンテスト
            優秀賞は【AIの心得】 by わら さんです!

            画像

            小宮自由(BlendAI株式会社 代表)コメント:
            たくさんのご応募ありがとうございました。デルタもんをリリースしてから8ヶ月、様々な方々が様々なデルタもんを描いてくれるようになってありがたく思います。すごい尖った作品、技術的にも難度が高く、自分の好きを貫いた作品が出てきたりして、良いことだと思いました。優秀賞には わらさんの作品を選出させていただきましたが、品質、発想力、物語性に加えて「作家性」。手書きを組み合わせることで自分の作品とAIのテクニックを融合させた良いコラボレーションだと思いました。そして何より「ガンマミィ」について触れてくれているのが嬉しかったです!

            白井暁彦(AICU media編集長)コメント:
            たくさんのご応募ありがとうございました。複数の作品を投稿してくださった方や、こだわりのある作品を締め切りギリギリに投稿してくださった方、締切に間に合わなかったけど、Xへ共有してくださった方などAICUのファンと「デルタもん」ファンのコミュニティの温かさを感じるコラボイベントとなりました。優秀賞の作品にはAICUマガジンでの連載オファーが付くこともあり、プロのAIクリエイターとしての視点での評価としての視点も加えさせていただきました。わらさんは「AICUマガジン Vol.4」での掲載経験もありメイキングまで公開頂いていることからも「もっと読みたい…!」という気持ちにさせる作品が作れるクリエイターであることも評価のポイントになっております。

            【優秀賞】Amazonギフト券4444円分+デルタもん4コマ漫画連載オファー獲得となります。おめでとうございます!連載オファーについてはDMにてご相談させていただきます!


            今回ご特別協賛をいただいたBlendAIさんおよびデルタもん原作者・支援者のみなさまに改めまして感謝いたします。

            そして告知です。

            そしてさらに、BlendAIさんが現在開発中の新キャラクター「ガンマミィ」のクラウドファンディングも予定されています!
            クラウドファンディングへの参加を通して、あなたもAIキャラクターの誕生に貢献することができます。そして、完成したLoRAを使って、ガンマミィをテーマにしたコンテストにも参加できます!

            https://camp-fire.jp/profile/BlendAI

            そして、この熱気はまだまだ続きます!

            またAnifusionでのデルタもん公式LoRAの使用方法も紹介されております。

            AICU mediaも次なるAI漫画コンテストを企画中です!

            デルタもん4コマ漫画コンテストに続く第二弾として、AICU主催のコンテストを予定しております!

            AI技術と創造性が融合した、この exciting な流れに、ぜひあなたも参加してください!

            まずは X@AICUai をフォローよろしくお願いいたします!

            #デルタもん4コマ #AICU #BlendAI #AIart #AIマンガ #AniFusion #AImanga #デルタもんイラストコンテスト #DeltaMon

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

          5. 【イベントレポート】AWS AI Day:生成AIの最前線に迫る最新事例と実践ハンズオン(4)AWSで作る! 全部入りAIツール

            2024年9月9日開催の「AWS AI Day」レポート第4弾!今回は、AI Dayで行われたワークショップの様子をお伝えします。

            ▶前回の記事はこちら
            【イベントレポート】AWS AI Day:生成AIの最前線に迫る最新事例と実践ハンズオン(3)突撃!隣のAmazon Bedrockユーザー ~YouはどうしてAWSで?~

            https://aws.amazon.com/jp/events/ai-day

            今回のワークショップの目標は生成AIを用いたアプリケーションをAWS上に構築することです

            生成AIハンズオン:Amazon Bedrock GenUで実践体験

            今回の目玉企画の一つである生成AIハンズオンでは、アマゾン ウェブ サービス ジャパン合同会社 Data & AI 事業本部 シニアAI/MLソリューションアーキテクトの 呉 和仁 氏が解説を担当。

            画像

            参加者は、Amazon Bedrock を用いた生成 AI ソリューションである Generative AI Use Cases JP (GenU) を使用し、AWS Bedrockを使った社内向け生成 AI アプリケーションを実際に体験しました。

            Generative AI Use Cases JP (略称:GenU)

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

            AICU media編集部も実際に手を動かして、1時間半の時間内に無事、AWSを使って構築できました

            完成したアプリケーション

            完成したアプリケーションの機能を紹介します
            「awsではじめる生成 AI」

            画像

            なんとこれだけの機能が付いてきます

            • チャット
            • RAG(検索拡張生成)チャット
            • 文章生成
            • 要約
            • 校正
            • 翻訳
            • Webコンテンツ抽出
            • 画像生成
            • 映像分析
            • 音声分析
            • 議事録作成
            • ブログ記事作成

            全部入りです。これだけで一般的に利用できるメジャー生成AIサービスの最新バージョンをほぼ網羅していると言っても過言ではありません。
            さらに入力した文章や画像が学習に使われることはありません。アカウントもAWS Cognitoを使って作りますので、メールアドレスやパスワード、その他の認証を使って利用できます。

            画像

            機能詳細

            チャット

            モデルはClaude 3 SonnetとClaude 3 Haikuが使用できます
            履歴は保存されているので後から閲覧可能です

            画像

            プログラムのコードも生成可能です

            画像

            しっかり会話履歴も保存されます

            画像
            画像
            画像

            RAG(検索拡張生成)チャット

            RAG[Retrieval Augmented Generation](検索拡張生成)とは、回答を生成する前にデータベースを検索することで追加学習をさせずに回答の信頼性を向上させる技術です

            今回は内部マニュアルやトレーニング時以降の情報などをS3バケットに配置しています

            AWSにおけるRAGは以下のサイトを参考にしてください

            https://aws.amazon.com/jp/what-is/retrieval-augmented-generation

            これにより休暇の申請方法を根拠となる書類を提示しながら説明するなど、信頼性が向上します。

            画像

            文章生成

            元となる文章を指定されたフォーマットに書き直します

            画像

            プレゼンテーションで使用できるよう章立てにして簡潔にまとめてくれました

            画像

            翻訳

            生成AIを用いた翻訳です

            画像

            Webコンテンツ抽出

            URLから中にあるコンテンツを抽出します

            画像

            画像生成

            左側に日本語の文章で記述すると、右側に画像生成が実行されるという2つの生成AIモデルの合せ技です。
            claude 3 を用いて英語のプロンプトを生成したのち、画像生成します
            画像生成用のモデルとしてStability AI の Stable Diffusion XL (SDXL) とTitan image generatorを選択できます

            画像
            画像

            プロンプトが英語で生成されているのがわかります

            画像

            ※SDXLは1024×1024で学習されているので、サイズ指定は1024×1024を設定したほうが良さそうですね。

            イタズラをしているポメラニアンを描いてみました

            画像
            画像

            映像分析

            カメラからの入力をもとに何が映っているか文章で説明します
            チャットでさらに細かく指示することもできます

            画像

            カメラに写ったものをほぼリアルタイムで解説します。

            音声認識

            マイク入力や音声ファイルから文字おこしをします
            詳細なパラメータを用いればインタビューの文字起こしも簡単にできそうです

            画像

            ユースケース連携の機能について

            上記の機能を組み合わせて使う機能です
            各機能のタブからは使うことができません
            ホームタブのユースケース一覧を一番下までスクロールすると現れる、
            それぞれの試すボタンから使用します

            画像

            ブログ記事作成

            URLをもとに内容を抽出し記事を作成、要約したのちサムネイル画像を生成します

            画像

            抽出した内容とブログを書く際のルールをもとに記事を作成してくれます

            画像
            画像

            さらに生成したブログ記事の本文を要約します

            画像
            画像

            最後にブログ記事に合うような画像を生成します
            その際に要約を用いることでより具体的なサムネイル画像が作成できるようにしているようです

            画像

            デプロイ方法および費用について

            ワークショップ内では、300人という大規模な会場にも関わらず、AWSでのデプロイとAWSクラウドソリューションエンジニアのみなさまによる丁寧なサポートが提供されました。

            画像
            画像

            ★運用時の費用や手順の詳細についてはメンバーシップ向け先行公開および、別の記事で紹介したいと思います。

            最後に新しいAWS認定試験「AWS Certified AI Practitioner (AIF)」や「AWS Certified Machine Leaning Engineer – Associate (MLA)」についての紹介や、お楽しみ、商品つきクイズ大会も!

            画像
            画像
            画像
            画像
            画像
            画像
            画像
            画像

            難問中の難問。
            「3.8」と「3.11」どっちが大きい数字?

            画像

            実際にClaude 3.5 sonnetに訊いてみます。

            画像
            画像
            画像
            画像

            300人を超える参加者が非常に快適で濃密な知識交換をできる機会となりました。
            講演登壇者および運営のみなさまに感謝を記載させていただきます。
            次回は10月31日野開催になるそうです。

            https://aws.amazon.com/jp/events/ai-day

            生成AI時代に「つくる人をつくる」AICUとしては総力をあげて4回特集でお送りいたしました。

            お楽しみいただけましたでしょうか。
            AICU AIDX LabはさっそくAWS Bedrock活用ソリューションを開発・展開を行っております。
            ご相談はこちらまで。
            https://corp.aicu.ai/contact

            https://j.aicu.ai/MagV4


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

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

          6. 【イベントレポート】AWS AI Day:生成AIの最前線に迫る最新事例と実践ハンズオン(3)突撃!隣のAmazon Bedrockユーザー ~YouはどうしてAWSで?~

            2024年9月9日開催の「AWS AI Day」レポート第3弾!
            「つくる人をつくる」AICU mediaでは総力を上げてレポートしております。
            今回は、KDDIアジャイル開発センター株式会社 テックエバンジェリスト、御田 稔(みのるん)氏の講演をピックアップします。

            ▶前回の記事はこちら
            【イベントレポート】AWS AI Day:生成AIの最前線に迫る最新事例と実践ハンズオン(1)新人こそがAI開発のエース!?リクルートの最新事例 #awsAIday

            【イベントレポート】AWS AI Day:生成AIの最前線に迫る最新事例と実践ハンズオン(2)AWS活用企業100以上の生成AI事例に見るビジネスインパクト創出の方程式

            お忙しい方はX(Twitter)でどうぞ!

            KDDIアジャイル開発センター株式会社は、Amazon Bedrock GA直後から生成AIプロダクト開発に活用してきた自社事例を披露。AWSを選んだ理由やエンジニア目線での魅力的な機能について語られました。

            資料公開もされております

            https://speakerdeck.com/player/dc0be998325e47e4b11f49fe747eee0a

            発信の大切さをよくわかっていらっしゃる…!

            画像

            テックエバンジェリスト 御田稔(みのるん)氏

            KDDIアジャイル開発センター株式会社(以下KAG)

            https://kddi-agile.com

            https://kddi-agile.com/news/20240905-01

            画像

            Amazon BedrockのGA直後からいくつもの生成AIプロダクト開発に活用してきた自社事例を紹介しつつ、なぜAWSのAmazon Bedrockを選ぶのか、採用時の自社グループ社内向け対応の工夫、エンジニア向けの一押し機能などをユーザー目線から解説します。

            https://aws-ai-day-jp.splashthat.com

            みのるんさんのご著書 「Amazon Bedrock生成AIアプリ開発入門」

            https://www.amazon.co.jp/dp/4815626448

            【AWS用語】「GA」とは?
            GAはGeneral Availabilityの略。プレビュー(ベータ版)を終えて、一般提供(正式版)に切り替わることを意味する

            KAGでのサービス開発事例

            「生成AIブーム、終りが見えませんね…!」
            「もはやブームを通り越して、生成AIは使って当たり前の技術として定着しつつあります」
            という書き出しからスタートした みのるん氏の講演。

            KAGもAmazon Bedrockを活用しまくっています

            画像
            画像
            画像
            画像

            「現場の感覚が大事」という みのるん氏は、あえて現場に飛び込んでいって課題解決のためのソリューションや社内サービス開発に邁進されております。

            ユーザーから見たAmazon Bedrockのメリット

            ①生成AIをAWSのビルディングブロックの一つとして活用できる
            ②高度な機能がマネージドサービスとして簡単に使える
            ③ユーザーが多いので開発者を確保しやすく、Web上の知見も豊富

            画像
            画像
            画像

            「うちの会社にAIいれるの、大変かも」

            みのるん氏もAmazon Bedrockを社内プロジェクトに導入するうえでは一筋縄ではいかない工夫や苦労をされております。
            KDDIグループや本体での利用環境整備、CCoEと連携して、セキュリティ部門と利用前提を合意。他社の生成AIサービスや、AWS自体はすでに社内導入事例があったため、同様の手続きで利用できるよう事前調整を図りました。
            またAmazon Bedrockのプレビューは1アカウント限定だったため、社内で申請ルールや費用分配の仕組みを速やかに作成し、早い段階でいろんな部署のメンバーが使えるように環境を整備したそうです。

            画像

            選定時によく聞かれる「なぜAmazon Bedrockなの?」

            最新モデルがどんどん採用されていますよね!

            画像

            ぜひ海外リージョンも積極的に活用しましょう

            画像

            エンジニアをワクワクさせる
            Amazon Bedrockのイチオシ機能紹介!

            ①ナレッジベース for Amazon Bedrock

            画像
            画像
            画像

            資料公開ありがたいです!

            ▶AWSの生成AIで社内文書検索! Bedrockのナレッジベースで簡単にRAGアプリを作ってみよう

            https://qiita.com/minorun365/items/24dfb0ea3afde6ed0a56

            ②エージェント for Amazon Bedrock

            第1回のレポートで紹介した自立型エージェントです。

            画像

            マネジメントコンソールから簡単に作れる!とのことで、営業パワポをメールで送ってくれるデモを動画で披露していただきました。

            こちらも資料公開されております。

            【パワポ対応版】資料作成はAIにまかせよう!AWSでBedrockエージェント入門ハンズオン

            https://qiita.com/minorun365/items/85cb57f19fe16a87acff

            ③Amazon Bedrockプロンプトフロー

            7月に登場した新機能。ローコードで直感的にLLMアプリを作成できる

            画像

            https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/flows.html

            実際の開発の中で学んだ生成AIアプリ開発Tips

            AIの推論には時間がかかる。タイムアウトを防ぐには?

            画像

            図表入りのパワポもRAGで活用したい

            画像

            AIエージェントがたまに言うことを聞かない…!

            ▶AWSで生成AIエージェントを操る! 話題のLangGraphにBedrockで入門しよう

            https://qiita.com/minorun365/items/6ca84b62230519d1d0ef

            生成AIって本当に楽しい!

            画像
            画像
            画像
            画像

            さいごに、みのるん氏は
            「内製開発の見返りがめっちゃ大きい」
            「大丈夫まだ間に合います!」
            「自分で手を動かすと解像度めっちゃ上がる!」
            など勇気づけられるメッセージで講演をまとめられました。

            次回のレポートは、ワークショップ編!

            Generative AI Use Cases JP (略称:GenU)

            https://github.com/aws-samples/generative-ai-use-cases-jp

            コーディングなしでサンプルアプリケーションの動作を確認できるだけでなく、アーキテクチャや機能拡張についても学ぶことができ、 多くの参加者にとって、生成AIの可能性を肌で感じられる貴重な機会となりました。

            AWS AI Dayは、生成AIの最新情報や活用事例、そして実践的なノウハウを一度に学べる、非常に充実したイベントでした。

            AWSは、今後も生成AIサービスの拡充や開発者支援を積極的に進めていくとのこと。生成AIの進化はこれからも加速していくでしょう。

            AICUでは、生成AIに関する最新情報や活用事例を分かりやすくお届けします。 ぜひ、今後のイベント情報や記事にもご注目ください!

            #イベントレポート #awsAIday

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