月: 2024年8月

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

    1. 【超入門】Stability AI API の革新的機能(1)Edit機能からInpaintとOutpaintを便利に使おう!

      こんにちは、AICU media編集部です。ライターのRUNO.がお送りします!

      今回は、Stability AI API Guideの「革新的機能紹介」!
      全4回に分けてお送りします!

        おさらい:プロンプトの文法

        まずはプロンプトの基礎から始めたい!という場合は、
        合わせてこちらの記事をご覧ください!

        「プロンプトの文法」編で、こんなことがわかる!

        • Stability AI APIとは?
        • Stability AI APIの種類と特徴・構成
        • プロンプトの文法基礎
        • [機能紹介] Generate APIとは?
        • [機能紹介] Generate APIよりUpscale機能のデモ

        Stability AI APIの種類と特徴・構成

        「プロンプトの文法」編でもご紹介したように、Stability AI APIの画像生成系の機能は2024年8月現在、4つの機能に大別されています。

        • 「Generate」:いわゆる「TextToImage」です
          • プロンプト(テキスト)によって画像生成を行う
          • 現在6つのモデルが提供されている
        • 「Upscale」:高解像度化
          • ベースとなる画像を入力し、そこにプロンプト(テキスト)で指示を追加し画像生成を行う
          • 現在{Creative, Conservative}という2つのモデルが提供されている(加えて、Standardがcoming soonとして予告されている)
        • 「Edit」いわゆるImageToImageです
          • ベースとなる画像を入力し、そこにプロンプト(テキスト)で指示を追加し画像再生成を行う
          • 現在{Search and Replace, Inpaint, Outpaint, Remove Background, Erase Object}5つのモデルが提供されている
        • 「Control」こちらも いわゆる ImageToImage です
          • ベースとなる画像を入力し、そこにプロンプト(テキスト)で指示を追加し画像再生成を行う
          • 現在{Sketch, Structure, Style}3つのモデルが提供されている(加えて、 Recolorがcoming soonとして予告されている)

        https://platform.stability.ai

        今回扱うInpaintとOutpaintは、このうちの「Edit API」に当たります。

        Edit APIとは?

        Edit APIのAPIリファレンスはこちらから確認できます。

        https://platform.stability.ai/docs/api-reference#tag/Edit

        公式のAPIリファレンスによると、
        Edit機能は「既存の画像を編集するためのツール」です。

        2024年8月現在、全部で5つのEdit機能が公開されています。

        • Erase
          • 画像マスクを必要とする機能です
          • 画像マスクを使用して、元画像の汚れや、机の上のアイテム等の不要なオブジェクトを削除します
        • Inpaint
          • 画像マスクを必要とする機能です
          • 画像マスクを使用して、指定された領域を新しいコンテンツで埋めたり置き換えたりすることで、画像をインテリジェントに変更します
        • Outpaint
          • 画像に追加のコンテンツを挿入して、任意の方向のスペースを埋めます
          • 画像内のコンテンツを拡大する他の手段と比較して、
            Outpaint機能は、元の画像が編集された違和感を最小限に抑えます
        • Search and Replace
          • 画像マスクを必要としない、特殊なバージョンの修復機能です
          • 画像マスクの代わりに、search_promptに置換対象をテキストで指定します
          • この機能は、search_promptに指定されたオブジェクトを自動的にセグメント化し、promptで要求されたオブジェクトに置き換えます
        • Remove Background
          • 画像から前景(背景に対して、手前に位置する要素)を正確に分割し、背景を削除します
          • 結果として、前景を残し、背景が透過された状態の画像が得られます

        今回はこのうちの「Inpaint」と「Outpaint」について詳しく取り扱います。

        Inpaint機能とは?

        入力画像の一部の範囲(マスク)を簡易的に指定し、その部分のみを生成して変化させるImageToImage(img2img)の機能です。

        入力画像の背景や細かいパーツなどを後から追加したり、逆に削除することができます。

        公式が提供しているGoogle Colabでは次のように例が紹介されています。

        prompt: artificer of time and space(時間と空間の錬金術師)

        画像
        inpaint前の元画像
        画像
        inpaint後の画像

        このように、マスキングした画像を入力として与え、そこにどのような描画を施すか?をprompt、つまり文字列で与えることによって、新たな画像を生成してくれる、というのがInpaint機能です。

        実際にInpaintを使ってみよう!

        ここからは、公式が提供しているGoogle Colabを使ってデモを行なっていきます。

        このColabへのアクセス、初期設定の方法は「超入門」編の記事を参考にしてください。

        準備:画像のパスの入手方法

        Inpaintでも、このあと紹介するOutpaintでも、この準備が必要になります。

        まずは、画面左側の「ファイルマーク」をクリックします。
        下に示す画像に従って、順番にクリックしていきましょう。

        画像

        次に、Edit対象の画像を選んで、アップロードします。

        少し待つと、この三角マークを押して表示される「content」フォルダの中にアップロードした画像の名前が表示されます。

        画像

        ここから先、「画像のパスをペーストします」という工程が何度も出てくるのですが、ここで得られるパスを入力してくださいね
        (つまり、画像を入力として入れる際には、「Google Colab内のこのファイル部分にアップロード後に得られるパス」を入力してくださいね)。

        これで、Edit機能を利用する準備ができました!

        ステップ1:マスキング前の画像のパスを取得する

        Inpaintの入力項目に、「image」と「mask」があります。

        • image:マスキング前の画像のパスを入力しましょう
        • mask:マスク画像のパスを入力しましょう
        画像

        まずは、元画像のパスを取得しましょう。

        マスクを必要とする機能を使う場合、マスク画像とピクセルがずれた画像を入力したり、本来の画像とは関係のない部分(画像をGoogle Slideなどに貼り付けた場合の余った余白の部分など)を含む画像を入力すると、マスク画像とうまくリンクせずに画像が揺れてしまうことがあります。

        そのため今回は、Google Slideを使って丁寧にマスクをしていきます。

        まず、今回使うinpaint対象の元画像がこちらです。

        画像
        こちらをinpaint機能を使って加工していきます!

        これをGoogle Slideに貼り付け、「背景」を選択し、黒を選択します。

        画像
        画像
        背景色を黒に選択します

        この状態で、ファイル>ダウンロード>png画像 と選択し、画像をダウンロードしましょう。

        画像
        スクリーンショットだとピクセルを確実に合わせるのが困難なので、
        スライドごと画像ダウンロードしましょう

        これで、元画像の画像パスが得られました。
        プロンプトの「image」部分に、今得られた画像パスを入力しましょう。

        ステップ2:マスク画像のパスを取得する

        元画像に、Google Slideの機能を使って白い丸を乗せて、マスクしました。

        これはまだ「マスク画像」ではないので、注意してください。

        画像
        マスキングを施した画像。ただし、「mask」に入れるパスはこの画像のパスではありません

        次に、先ほどと同じように、背景を黒に設定します。
        重要な工程なので、スキップしないようにお願いします。

        背景が黒に設定できたら、元画像を削除し、黒背景とマスクのみが残る状態にしてください。

        画像
        これが「mask」に入れるマスク画像になります!

        ここまで完了したら、ファイル>ダウンロード>png画像 と選択し、画像をダウンロードしましょう。

        画像
        (※再掲)
        スクリーンショットだとピクセルを確実に合わせるのが困難なので、
        スライドごと画像ダウンロードしましょう

        これを先ほど同様に、Colab上にアップロードします。画像のパスを取得できたら、プロンプトの「mask」部分に得られたパスを入力します。

        これで、「image」と「mask」に適切な画像パスが入力できました。

        ステップ3:prompt, negative prompt, seedを指定する

        今回は、元画像のドレスを着た女性がもともと「何も持っていない」ところを、マスクした箇所において「一輪の白い薔薇を持っている」ようにEditを施したいと思います。

        そこで、それぞれ次のように設定します。

        • prompt:holding a red white rose
        • negative prompt:ugly, normal quality
        • seed:39(お好みで)

        ここまでで、必要な設定が完了しました!

        ステップ4:いざ、実行!

        さあ、画像を生成してみましょう。

        得られた画像が、こちら!

        画像
        inpaint後の画像がこちら

        ちゃんと、指定した位置に白薔薇を持ってくれています!うれしい!

        このように、inpaint機能を使えば、
        「あとちょっと、この部分だけ変えたい!」というときに、
        その位置にマスキングを施すことで
        「欲しい位置」に「欲しい修正」を施してくれます。

        他の画像生成APIと組み合わせて使うことで、さらに創作の幅が広がりますね!

        お手軽テクニック:Google Slide上でマスク画像を編集する

        Google Slideは画像編集ソフトではありませんが、このような簡易な塗りつぶしはラインツールやオブジェクトツールで何度でもやり直しできます。マスクに求められる解像度は高くはないので特に影響はありません。

        もちろんWindowsのペイントなどのアプリでも構いませんが、狙った場所に塗りを入れるツールとして非常にお手軽です。

        少し手間が多いですが、丁寧にやることで手戻りも少なく済むので、
        確実な手順を踏むことをおすすめします。

        Outpaint機能とは?

        入力画像を「指定された方向に」「指定された分だけ」新たな絵を生成してくれる、ImageToImage(img2img)の機能です。

        例えば、「入力画像のサイズを変えたいけれど、今の背景に対するメインモチーフの大きさは変えたくない…」というときに大活躍します!

        公式が提供しているGoogle Colabでは次のように例が紹介されています。

        元画像の左(left)に100、右(right)に512新たに生成する、という指定がされています。

        画像
        公式Colabを開いたら最初から入っている例
        画像
        Outpaint前の元画像
        画像
        Outpaint後の生成結果

        このように、元画像と背景のバランスを保ったまま、ある方向に画像を広げてみたいときに非常に便利な機能です。

        実際にOutpaintを使ってみよう!

        ステップ1:元画像のパスを取得する

        今回Outpaint対象とする画像はこちらになります。

        画像
        先ほどInpaintでEditを施した画像を使用します

        こちらをColabのファイルにアップロードし、パスを取得します。
        完了したら、「image」にパスを入力します。

        ステップ2:画像をどのように広げるか指定する

        今回は、上と左右を広げて広く見せることで、より臨場感のある画像に仕上げたいと思います。

        そこで、次のように指定します。

        • left:200
        • right:200
        • up:500
        • down:0

        場所としては「中世のお姫様が住む高級感のあるお屋敷」とします。

        • prompt:a luxurious mansion, medieval, a princess
        • creativity:0.5
        • seed:39

        これで、Outpaintを実行する準備が完了しました。

        ステップ3:いざ、実行!

        得られた画像がこちら!

        画像
        Outpaint後の生成結果がこちら!

        元の画像には存在しなかった「お屋敷の天井」が、元画像に合った雰囲気で生成されました!

        元画像では切れて写っていた、左端に飾ってある花が、白薔薇として生成されているのが面白いですね。これはInpaint機能と掛け合わせてさらに自然に見えるよう修正してもいいポイントですね。

        このように、Outpaint機能を使えば、用途に合わせて画像サイズを変更する、というのが簡単にできます。

        元の画像に写っていない部分を新たに自分で描き足さなくても、

        「こんなふうにしたい」をプロンプトで指定することで実現できてしまうのが、Stability AI APIのパワーですね!

        さいごに

        公式Colabには今回紹介した以外にも多くのAPIが公開されており自由に触ることができます。
        様々なモデルを試し、ぜひ色々なタイプの画像生成にチャレンジしてみてくださいね!

        Stable Diffusionを開発・公開している Stability AI は、HuggingFaceで無償でダウンロード可能な Stable Diffusion をはじめとするオープンモデル以外に「Stability AI API」という有償のAPIも提供しています。高品質で高速、高機能なAPIであり、新しく魅力的な機能もどんどんリリースされているので 開発者向けのAPIガイド として紹介していきたいと思います。

        上記「Stability AI API Guide」noteより

        それぞれのAPIについて解説した「Stability AI API Guide」は
        こちらに随時更新していきますので、ぜひ合わせてご覧ください。

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

        【AICUからビッグなプロダクトのお知らせ!】

        以上の通り、高速・高画質・高機能で、とても便利な「Stability AI API」ですが、こちらに関連してオンライン講座プラットフォーム「Coloso」と一緒に企画した講座「超入門: Stable Diffusionではじめる画像生成AI」が8月23日に公開されます!
        約10時間超えの豊富なカリキュラムで構成されています。

        画像

        今、Colosoで講座の事前通知申請を申請すると6,000円の割引クーポンがもらえるので、お得な特典をお見逃しなく!

        講座内容は主にStable Diffusionと、Stability AI APIを使ってファッションや広告デザインに活用する方法になる予定です。

        画像
        画像

        リアルテイストのかわいいビジュアル満載のやさしい入門ラーニング動画になる予定なので今から楽しみ!

        画像

        講座のカリキュラムが確認できる詳細ページは、
        8月23日に公開される予定ですので、もう少しお待ちください。

        事前通知はこちら>> https://bit.ly/3YGSNda

        最後までお読みいただき、ありがとうございました!


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

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

      1. AICU夏のアートコンテスト結果発表!!次回コンテスト予告も

        こんにちわ。AICU media編集部です。
        先日AICU創立一周年記念「AICU Summer Art Contest 2024」として開催した夏のアートコンテストの結果発表をお知らせいたします!

        気になる夏のアートコンテスト結果は…!?ファイナリストの皆さんを紹介

        既にAICUマガジンVol.3誌上で発表させていただきましたが、あらためて、オンライン上の発表となります。

        エントリーフォームを入力していただいた作品の中から、AICU media編集部で選出を行い、特に素晴らしいものを紹介していきます。

        #キャラクターイラスト 部門

        Kawaii…! 告知協力もありがとうございます

        ウォータースライダーですね!?
        AICUの文字が入ってるのありがたいです…!

        かわいい!
        ひまわり畑で佇む少女の笑顔が眩しいですね。
        服装も体操服っぽいのが素敵です!

        きゃわいい! おませな感じと 視線を合わせられない淡い初恋の思い出でキュン死しちゃいますね!!

        森を抜けた先には不思議な街。空を雄大に泳ぐクジラから噴き出される花火がとても美しいですね!

        水辺にたたずむ少女を照らす蛍の光。幻想的で儚い印象が素敵ですね!

        大輪の花火を背に振り向くデルタもん。
        儚げな表情と火照った頬がとても印象的です。

        彩り鮮やかな夏祭りと華やかな浴衣をまとった少女の笑顔が眩しいですね!
        とても楽しそうな雰囲気が画面からも伝わります。

        画面越しに見つめてくる彼女。爽やかなトーンと相まって少女の表情が印象深く伝わりますね。

        花火大会越しにこちらを見つめる少女。りんご飴もおいしそうですが、頭に被った狐面の表現がとても素晴らしいです。

        スライムと少年の夏休み。二人の友情と楽しそうに遊ぶ姿が大変眩しいですね!シャツからちらりと覗くお腹も大変可愛らしいです。

        #SD黄色本 部門

        ティーン向けのファッション誌に登場しそうなスタイリッシュな一枚。デルタもんの大人びた表情がとても素敵ですね。

        手のひらで開催される夏祭り。
        コンパクトだけど賑やかなお祭りにどこか不思議な印象を感じます。

        #StableDiffusionAPI 部門

        さすが Stable Image Ultra です。夏の光やフォーカスボケの表現が素晴らしいですね!

        さて、緊張の入賞者は…!

        #キャラクターイラスト 部門

        入賞:幻想都市に迷い込んだ少女を歓迎する空を泳ぐ鯨 / A whale swimming in the sky welcomes a girl who has wandered into a fantasy city
        穂花-HONOKA-さん

        画像

        #SD黄色本 部門

        部門賞:手の上の夏 / Summer in the hands
        にゃむさん

        画像

        #StableDiffusionAPI 部門

        部門賞:「ねぇ、」 / If only,
        RUNO.さん

        画像

        晴れある最優秀賞は!

        最優秀賞:碧の瞳 / Azure Eyes
        ジュニさん

        画像

        ジュニさんおめでとうございます!
        こちらの素敵なイラストは、本日よりAICU mediaのカバーアートにも採用させていただきます!

        今回は「夏」をテーマに色とりどりの作品をご応募くださりありがとうございました。
        編集部一同、個性豊かな作品を見ることができてとても楽しいコンテストでした。

        受賞者のコメント詳細は「AICUマガジン Vol.3」にて!

        最後に、重大発表…!

        アートコンテスト再び開催ッッ!
        集え、全世界の強者たちよ!

        次回のテーマは「デルタもん」になります。
        しかし、ただのデルタもんのイラストコンテストではありません


        詳細は近日公開!
        腕を磨いてお待ちください!

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

      2. Discordでカンタン!「オリジナル漫画スタンプメーカー(仮)」クローズドβ会員募集

        「つくる人をつくる」AICUが一般向けサービスを開発中です。

        その名も「オリジナル漫画スタンプメーカー(仮)」

        こんな感じの「世界でひとつだけのオリジナルスタンプ画像」をDiscordだけで生成できます。

        画像

        クローズドβ会員サービスにご参加希望者は
        こちらのフォームにご入力ください。
        詳細はフォーム内の注意書きをご確認ください。
        (表示されていない場合は募集終了となります)

        https://docs.google.com/forms/d/e/1FAIpQLSdi0TqvixIkLN63VXtUm_scc47ek6JyeeucB6va73zJZFOEjw/viewform?embedded=true&usp=embed_googleplus


        ※本サービスに含まれる技術はAICUの知的財産を含みます。

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

      3. 動画も高精度に!ComfyUIとSegment Anything Model 2(SAM 2)でセグメンテーションをマスターしよう

        コンピュータビジョンの世界に革命をもたらした画像セグメンテーションモデル「Segment Anything Model(SAM)」。その登場から約1年、METAが新たな進化を遂げた「Segment Anything Model 2(SAM 2)」を発表しました。画像だけでなく動画にも対応したこの最新モデル、使い方によってはかなり実用的になり得るでしょう。
        本記事では、SAM 2の特徴や機能、そして将来の可能性について詳しく解説します。また、ComfyUIで実際に動作させる方法についても解説します。

          1. Segment Anything Model 2(SAM 2)とは

          画像

          2024年7月29日、METAは画像と動画の両方に対応した最新のオブジェクトセグメンテーションモデル「Segment Anything Model 2(SAM 2)」を発表しました。SAM 2は、昨年リリースされた画像セグメンテーションモデル「Segment Anything Model(SAM)」の後継として開発され、画像だけでなく動画にも対応した革新的な機能を備えています。

          https://ai.meta.com/blog/segment-anything-2

          SAM 2の主な特徴

          1. 統合モデル: SAM 2は、画像と動画の両方でオブジェクトセグメンテーションを行える初めての統合モデルです。
          2. リアルタイム処理: プロンプトベースのセグメンテーションをリアルタイムで実行できます。
          3. ゼロショット汎化: 事前に学習していない物体や視覚ドメインでもセグメンテーションが可能です。
          4. 高性能: 画像と動画の両方で最先端の性能を達成しています。
          5. 柔軟性: カスタム適応なしに多様な用途に適用できます。

          技術的詳細

          SAM 2は、統一されたプロンプト可能なモデルアーキテクチャを採用しています。このモデルは、1100万枚のライセンス画像とプライバシーを尊重した画像、110万枚の高品質セグメンテーションマスクデータ、10億以上のマスクアノテーションという過去最大のデータセットで訓練されています。

          また、SAM2は、画像と動画のセグメンテーションを統合する革新的なアーキテクチャを採用しています。

          画像
          1. 画像エンコーダー: 入力フレームを高次元の特徴表現に変換します。
            • アーキテクチャ: Vision Transformer (ViT)ベース
            • 出力: 空間的に構造化された特徴マップ
          2. マスクデコーダー: セグメンテーションマスクを生成します。
            • アーキテクチャ: Transformer decoder
            • 入力: 画像特徴、プロンプト埋め込み
            • 出力: 2D確率マスク
          3. メモリメカニズム:
            • メモリエンコーダー: 現在のマスク予測からメモリトークンを生成
            • メモリバンク: 過去フレームとプロンプトからのメモリを保存
            • メモリアテンション: 現在フレーム埋め込みとメモリを統合
          4. オクルージョンヘッド: オブジェクトの可視性を予測します。
            • アーキテクチャ: 軽量なMLPネットワーク
            • 出力: フレームごとの可視性スコア

          SAM 2の特筆すべき機能の一つが「メモリバンク」です。これは最近のフレームや以前にプロンプトされたフレームの情報を空間特徴マップとして保持する機能で、短期的な物体の動きを符号化し、オブジェクトトラッキング能力を向上させています。

          応用分野

          SAM 2は以下のような幅広い分野での活用が期待されています。

          1. クリエイティブ産業: ビデオ編集の改善、ユニークな視覚効果の作成
          2. 医療画像処理: 解剖学的構造の正確な識別
          3. 自動運転: 知覚能力の向上、ナビゲーションと障害物回避の改善
          4. 科学研究: 海洋科学での音波画像のセグメンテーション、サンゴ礁の分析
          5. 災害救援: 衛星画像の分析
          6. データアノテーション: アノテーション作業の高速化

          オープンソースとデータセット

          METAは、SAM 2のコードとモデルのweightsをApache 2.0ライセンスで公開しています。さらに、SAM 2の開発に使用されたSA-Vデータセットも公開されており、約51,000本の実世界の動画と60万以上のマスクレット(時空間マスク)が含まれています。このデータセットはCC BY 4.0ライセンスで提供され、研究者やデベロッパーが自由に利用できます。

          2. ComfyUIでの実行準備

          まずは、SAM2をComfyUIで実行するための準備をしましょう。

          AICU謹製の ComfyUI Manger入りGoogle Colabノートブックです。
          https://j.aicu.ai/Comfy

          カスタムノード

          以下のカスタムノードをインストールしてください。すべてComfyUI Managerからインストール可能です。

          • ComfyUI-segment-anything-2
            • Kijai氏が作成したSAM2用のカスタムノード
            • SAM2に必要なモデルは、Kijai氏のHugging Faceのリポジトリから自動でダウンロードされる

          https://github.com/kijai/ComfyUI-segment-anything-2

          • ComfyUI-Florence2
            • Florence2を使用するためのカスタムノード
            • Florence2でプロンプトからのオブジェクト検出を実現する

          https://github.com/kijai/ComfyUI-Florence2

          • KJNodes for ComfyUI
            • ImageAndMaskPreview: 画像とマスクを両方合わせてプレビューするためのノード
            • Resize Image: 画像サイズの変更に使用されるノード

          https://github.com/kijai/ComfyUI-KJNodes

          • comfyui-tensorop
            • ComfyUI-Florence2で必要

          https://github.com/un-seen/comfyui-tensorops

          • ComfyUI-VideoHelperSuite
            • 動画を処理するためのカスタムノード

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

          Google Colabのログにインストール経過が表示されます。

          画像

          ComfyUI Manager上からComfyUIの再起動が必要です。
          (URLは変わりません)

          ワークフロー

          ComfyUI-segment-anything-2のリポジトリで配布しているサンプルを使用します。サンプルは、オブジェクト自動検出による画像のセグメンテーション、同様の手法による動画のセグメンテーション、指定した箇所のセグメンテーションの3種類があります。以下のリポジトリからワークフローのJSONファイルをダウンロードし、ComfyUIのキャンバスにロードしてください。

          ロード直後は「truck.jpgがない」というエラーが出ますが、まずは動作確認をしていきましょう。気にせずにお好きな画像を左下の「Load Image」に読み込んで「Queue Prompt」を押してみてください。

          今回動作確認に使用した画像

          画像
          画像

          複雑な画像ですが見事に分離できています。

          以下は各ワークフローの詳細解説です。

          • オブジェクト自動検出による画像のセグメンテーション

          https://github.com/kijai/ComfyUI-segment-anything-2/blob/main/examples/florence_segment_2.json

          • オブジェクト自動検出による動画のセグメンテーション

          https://github.com/kijai/ComfyUI-segment-anything-2/blob/main/examples/image_batch_bbox_segment.json

          • 指定箇所のセグメンテーション

          https://github.com/kijai/ComfyUI-segment-anything-2/blob/main/examples/points_segment_video_example.json

          3. ワークフローの解説: オブジェクト自動検出による画像のセグメンテーション

          グラフの全体像

          以下がグラフの全体図になります。

          画像

          以下に今回使用するグラフのフローチャートと詳細を示します。

          画像

          このグラフは、Florence-2とSAM 2を組み合わせて画像内のオブジェクトを検出し、セグメンテーションを行うプロセスを示しています。以下に詳細な解説を提供します。

          グラフの主要コンポーネント

          1. 画像の読み込み (LoadImage ノード)
          2. Florence-2モデルのロード (DownloadAndLoadFlorence2Model ノード)
          3. SAM 2モデルのロード (DownloadAndLoadSAM2Model ノード)
          4. 画像のリサイズ (ImageResizeKJ ノード)
          5. Florence-2による物体検出 (Florence2Run ノード)
          6. 検出結果の座標変換 (Florence2toCoordinates ノード)
          7. SAM 2によるセグメンテーション (Sam2Segmentation ノード)
          8. 結果のプレビュー (ImageAndMaskPreview ノード)

          グラフの詳細な解説

          1. 画像の読み込み:
            • 「truck.jpg」という画像ファイルを読み込みます。
          2. Florence-2モデルのロード:
            • 「microsoft/Florence-2-base」モデルをFP16精度でロードします。
          3. SAM 2モデルのロード:
            • 「sam2_hiera_small.safetensors」モデルをCUDAデバイスでBF16精度でロードします。
          4. 画像のリサイズ:
            • 入力画像を768×512ピクセルにリサイズします。(大きすぎる画像を小さくしているだけなので、このノードをスキップしても問題ありません)
          5. Florence-2による物体検出:
            • リサイズされた画像に対してFlorence-2モデルを実行します。
            • 「wheel」(車輪)をプロンプトとして使用し、画像内の車輪を検出します。
            • 出力には検出されたオブジェクトの情報(バウンディングボックスなど)が含まれます。
          6. 検出結果の座標変換:
            • Florence-2の出力をSAM 2で使用可能な座標形式に変換します。
          7. SAM 2によるセグメンテーション:
            • Florence-2で検出されたバウンディングボックスを使用して、SAM 2モデルでセグメンテーションを実行します。
            • 結果として、検出されたオブジェクト(車輪)の詳細なセグメンテーションマスクが生成されます。
          8. 結果のプレビュー:
            • 元の画像とセグメンテーションマスクを組み合わせて表示します。
            • マスクは赤色(RGB: 255, 0, 0)で表示されます。

          4. ワークフローの解説: オブジェクト自動検出による動画のセグメンテーション

          グラフの全体像

          以下がグラフの全体図になります。

          画像

          以下に今回使用するグラフのフローチャートと詳細を示します。

          画像

          グラフの主要コンポーネント

          1. 動画の読み込み (VHS_LoadVideo ノード)
          2. Florence-2モデルのロード (DownloadAndLoadFlorence2Model ノード)
          3. SAM 2モデルのロード (DownloadAndLoadSAM2Model ノード)
          4. Florence-2による物体検出 (Florence2Run ノード)
          5. 検出結果の座標変換 (Florence2toCoordinates ノード)
          6. SAM 2によるセグメンテーション (Sam2Segmentation ノード)
          7. 結果の合成と表示 (MaskToImage, ImageCompositeMasked, VHS_VideoCombine ノード)

          グラフの詳細な解説

          1. 動画の読み込み:
            • 「katana_02.mp4」という動画ファイルを読み込みます。
            • 16フレームを上限とし、5フレームごとに1フレームを選択して処理します。
          2. Florence-2モデルのロード:
            • 「microsoft/Florence-2-large」モデルをFP16精度でロードします。
          3. SAM 2モデルのロード:
            • 「sam2_hiera_base_plus.safetensors」モデルをCUDAデバイスでBF16精度でロードします。
          4. Florence-2による物体検出:
            • 読み込んだ動画フレームに対してFlorence-2モデルを実行します。
            • 「sword」(剣)をプロンプトとして使用し、画像内の剣を検出します。
          5. 検出結果の座標変換:
            • Florence-2の出力をSAM 2で使用可能な座標形式(バウンディングボックス)に変換します。
          6. SAM 2によるセグメンテーション:
            • Florence-2で検出されたバウンディングボックスを使用して、SAM 2モデルでセグメンテーションを実行します。
            • 結果として、検出されたオブジェクト(剣)の詳細なセグメンテーションマスクが生成されます。
          7. 結果の合成と表示:
            • セグメンテーションマスクを画像に変換し、元の動画フレームと合成します。
            • 合成された画像をフレームごとに処理し、最終的な動画として出力します。

          5. ワークフローの解説: 指定箇所のセグメンテーション

          グラフの全体像

          以下がグラフの全体図になります。

          画像

          以下に今回使用するグラフのフローチャートと詳細を示します。

          グラフの主要コンポーネント

          1. 動画の読み込み (VHS_LoadVideo ノード)
          2. SAM 2モデルのロード (DownloadAndLoadSAM2Model ノード)
          3. ユーザーによる点の指定 (PointsEditor ノード)
          4. SAM 2によるセグメンテーション (Sam2Segmentation ノード)
          5. 結果のアニメーションプレビュー (PreviewAnimation ノード)
          6. 座標情報の表示 (ShowText ノード)

          グラフの詳細な解説

          1. 動画の読み込み:
            • 「ballerina_davinci.mp4」という動画ファイルを読み込みます。
            • 16フレームを上限とし、3フレームごとに1フレームを選択して処理します。
          2. SAM 2モデルのロード:
            • 「sam2_hiera_base_plus.safetensors」モデルをCUDAデバイスでBF16精度でロードします。
          3. ユーザーによる点の指定:
            • 動画の最初のフレームを表示し、ユーザーがセグメンテーションしたいオブジェクト(この場合はダンサー)上に点を配置できるインターフェースを提供します。
            • この例では、ダンサーの上半身に2つの正の点が配置されています。
          4. SAM 2によるセグメンテーション:
            • ユーザーが指定した点の情報と動画フレームを入力として、SAM 2モデルでセグメンテーションを実行します。
            • 結果として、指定されたオブジェクト(ダンサー)の詳細なセグメンテーションマスクが生成されます。
          5. 結果のアニメーションプレビュー:
            • 元の動画フレームとSAM 2で生成されたセグメンテーションマスクを組み合わせて、アニメーションとして表示します。
            • これにより、ユーザーはセグメンテーション結果をリアルタイムで確認できます。
          6. 座標情報の表示:
            • ユーザーが指定した点の座標情報を表示します。

          6. ワークフローの実行

          オブジェクト自動検出による画像のセグメンテーション

          今回使用した画像は以下になります。

          画像

          これを「truck.jpg」という名前でLoad Imageの「choose file to upload」でComfyUI上にアップロードします。

          画像

          画像サイズに合わせて、Resize Imageのwidthとheightを変更します。

          画像

          検出するオブジェクトは、wheelのままにします。

          画像

          これでワークフローを実行してみます。メニューの「Queue Prompt」をクリックしてください。
          しばらくすると、検出結果が出力されます。まずは、Florance2によるオブジェクトの検出結果です。しっかり写真に写っているタイヤがすべて検出されています。

          画像

          次にSAM2によるセグメンテーションの結果です。Florance2で検出したタイヤがしっかりとマスクされています。

          画像

          オブジェクト自動検出による動画のセグメンテーション

          まず、検証に使用する動画素材を入手します。以下のリンクから動画をダウンロードします。今回選んだ動画は、女性が牧場ではしゃいでいる動画になります。

          https://www.pexels.com/ja-jp/video/4919748

          今回は実験的にSAM2を動かすので、426×226の小さいサイズをダウンロードします。

          画像

          ダウンロードした動画をComfyUIにアップロードします。Load Video (Upload)の「choose video to upload」から動画をアップロードします。
          Load Video (Upload)の初期設定では、frame_load_cap(*1)が16になっており、最初の16フレーム(*2)のみを読み込むようになっています。検証としては、それで問題ないですが、もし動画を全て読み込んで欲しい場合は、frame_load_capを0に設定してください。
          また、初期設定では、select_every_nthが5になっていますが、これは1に変更してください。select_every_nthは、何フレームごとに1フレームを選択するかを指定するウィジェットです。1を設定することで、フレームをスキップせずに、全てのフレームが対象になります。

          *1 読み込むフレーム数を指定するウィジェット。例えば、24fpsの動画で、frame_load_capに16を指定すると、16/24 ≒ 0.7秒となる。
          *2 動画を構成する個々の静止画であり、1秒間に表示されるフレーム数(fps: frames per second)によって動きの滑らかさが決まります。

          画像

          次に、Florence2Runのプロンプトを変更します。今回は、女性をセグメンテーションするため、「girl」を入力します。

          画像

          これで生成を実行(Queue Prompt)します。以下が最終的な実行結果です。最初に後ろの牛を誤検出しているように見えますが、それ以外は問題ないように見えます。

          画像

          指定箇所のセグメンテーション

          前項の「オブジェクト自動検出による動画のセグメンテーション」で使用した動画を今回も使用します。動画は以下からダウンロードしてください。

          https://www.pexels.com/ja-jp/video/4919748

          前項と同様に、Load Video (Upload)の「choose video to upload」から動画をアップロードします。

          画像

          次にセグメンテーションする箇所を指定します。オブジェクトの指定は、Points Editorで行います。ワークフローの初期状態では、Points Editorにバレエの女性の写真が表示されています。

          画像

          まずは、オブジェクト検出箇所を指定するために、この写真を現在の動画の1フレーム目の画像にする必要があります。それには2つの方法があります。1つは、動画の1フレーム目の画像を用意し、Points Editorに写真の箇所を右クリックして表示されるコンテキストメニューの「Load Image」で画像を差し替える方法です。2つ目は、ワークフローを実行すると、Points Editorに写真の箇所が自動でアップロードした動画の1フレーム目に切り替わる性質を利用して、一先ずワークフローを実行し、オブジェクト検出箇所指定に使う画像を差し替える方法です。後者の方が楽なので、一先ずワークフローを実行し、画像を差し替えます。

          画像

          一度ワークフローを実行すると、以下のように動画の1フレーム目の画像が表示されます。Points Editorにバグがあるようで、左上に赤丸が残った状態になってしまいます。こちらは利用せずに、画像上に緑色の丸が表示されている場合は、女性の上に緑色の丸を配置してください。緑色の丸が表示されていない場合は、女性をクリックすると、新たに緑色の丸を追加できます。

          画像

          これで生成を実行(Queue Prompt)します。以下が最終的な実行結果です。女性が綺麗にマスクされています。

          画像

          7. まとめ: ComfyUIとSAM 2でセグメンテーションがより身近な存在に

          本記事では、画像や動画のセグメンテーションにおいて革新的な進化を遂げた「Segment Anything Model 2 (SAM 2)」について解説し、ComfyUIを用いた具体的な使用方法を紹介しました。

          SAM 2は、従来のSAMと比較して、動画への対応リアルタイム処理高精度なセグメンテーションを実現しており、その応用範囲は多岐に渡ります。

          ComfyUIのワークフローを活用することで、オブジェクトの自動検出によるセグメンテーションや、指定箇所のセグメンテーションを容易に行うことができます。

          SAM 2はまだ発展途上の技術ですが、今後の進化によって、映像制作医療画像解析自動運転など、様々な分野で大きな影響を与える可能性を秘めていると言えるでしょう。

          この記事に「いいね!」と思ったら、いいねとフォロー、おすすめをお願いします!

          https://note.com/aicu/ X(Twitter)@AICUai

          この記事を読んで「ComfyUIをマスターしたい!」と思った方はこちらもおすすめです。

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

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

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

          ComfyUIの世界はまだまだ拡がっていきそうです!

          ✨️本記事は Yas@BizDev支援のエンジニア さんの寄稿をベースにAICU AIDX Labおよび編集部にて加筆・検証したものです。ご寄稿いただきありがとうございました。


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

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

        1. 【超入門 Stability AI API】「モデルとの対話」実習編。Stable Diffusion 3 時代に知っておきたいプロンプトの新常識

          こんにちは、AICU代表の しらいはかせ です。
          本日は重大ニュースがありますので、最後までしっかりお読みください。

          前回、Stability AI API Guideの「超入門」としてライターのRUNO.さんに基本となるGenerate APIと「TextToImageの最近の文法」を総ざらいしていただきました。

          Google Colabを使って、基本的な操作に慣れたところだと思います。

          この記事ではこの先の画像生成の時代に長く役に立つ「モデルとの対話テクニック」とStable Diffusion 3時代に知っておきたいプロンプトの新常識についてお伝えします。

            「Stable Diffusion 3」の時代に知っておきたいプロンプトの新常識

            モデル、TextToImage、プロンプト、CLIP…

            画像生成AI「Stable Diffusion」の最大の特徴は、テキストを入力することで単語をもとに画像を生成できる機能です。これを「TextToImage(t2i)」、AIに対する指示を行うテキストを「プロンプト」と呼びます。その後も多様な画像生成AIが登場していますが、多くはCLIPという画像と言語の対を学習したモデルが内部に使われており、現在も様々な言語理解を特徴として有したモデルが提案・開発されています。新しい画像生成AIサービスやモデルに出会った時に、まずはモデルと対話して、効率的なプロンプトの構造を理解することが重要です。またモデルや、それを利用したネットワーク、学習方法が多様にあり、多くはそのモデルを調教した側のノウハウにもなるため公開はされていません。想像や噂がネット上にたくさんあるのですが「これが完璧」という方法を一様に宣言することは難しいです。最近のモデルはプロンプトを短くすることに努力が割かれていますし、一方では簡単なキーワードで美麗な結果が出すぎるモデルは「過学習」と言えるかもしれません。

            重要なのは「制御性」と仮説検証テクニック

            画像生成の使い手にとって重要なのは品質や速度、簡単さに加えて「意のままに操れること」つまり「制御性」が重要になります。いくつかのポイントをおさえて仮説検証を行いながらモデルと対話すると、短時間でその特徴を理解して制御することが可能になってきます。

            「モデルとの対話」と実用的で再現可能な実験手法

            また公式情報として提供されているStability AI 公式のAPIガイド、そしてサンプルに散りばめられたプロンプトテクニックを読むことも重要なヒントになります。さらにコミュニティの開発者や探求者による情報も重要なヒントがあります。大事なポイントは、噂や推測でなく、自分で手を動かして、それを検証しなが「モデルと対話」していくことです。実用的で再現可能な実験手法です。ここでは、いくつかの実践的な例や実験手法を通して、最新のStable Diffusion 3時代の文法や表現力を引き出すコツをお伝えします。

            例:ネガティブプロンプトの位置づけの変化

            たとえばこちらに、海外で書かれたStable Diffusion 3 Medium (SD3M)に関する検証記事があります。
            How to get the best results from Stable Diffusion 3
            Posted June 18, 2024 by @fofr
            https://replicate.com/blog/get-the-best-from-stable-diffusion-3

            コミュニティのDELLさんが日本翻訳を公開してくれています。
            ■あなたはStable diffusion 3 の真の性能を発揮できていない

            https://qiita.com/nqdior/items/bd980e2664966871272e

            従来のStable Diffusionと SD3Mが異なる要素として、

            1. プロンプトの長さの制限が大幅に緩和され、より詳細な指示が可能になったこと
            2. 3つのテキストエンコーダーが採用され、表現力とメモリ効率のバランスを取れるようになったこと
            3. ネガティブプロンプトが効果を持たなくなり、詳細なポジティブプロンプトと適切な設定が重要になったこと

            などが挙げられています。SD3Mはオープンモデルなので実際にComfyUI等を使ってより詳細に対話することができます。ネガティブプロンプトはノイズを与える程度の意味しかなくなっています。さらにポジティブプロンプトはより具体性が求められ、従来あったCLIP テキストエンコーダーの77トークンの制限を気にする必要はなく、プロンプトは10,000文字、または1,500語以上といった、従来のプロンプトの常識とは異なるモデルになっています。

            前回の復習「プロンプトの文法:モデルとの対話ポイント」

            Stability AI API で提供されている各種モデル(Ultra, Core, SD3Large等)は、上記のSD3Mと同じではなく、上位のSD3を使ってより使いやすくトレーニングされたモデルになっています。
            前回のポイントを復習しながら、実際に手を動かしながら理解を深めてみたいと思います。同じプロンプト、同じシードを設定すると同様の結果画像が出力されますので、是非お手元で試してみてください。

            画像

            それでは実際に、公式で提供されているGoogle Colabサンプルを用いて、
            画像生成してみましょう!

            Stability AI 提供の公式サンプルへのショートカット
            https://j.aicu.ai/SAIci

            APIリファレンスから参照する場合はこちらから
            https://platform.stability.ai/docs/api-reference

            気になるAPI費用も最高画質のUltraでも1枚10円前後ですから文房具代感覚で使っていくと良いと思います。
            加えて、今回の復習でSD3時代の新常識を身につけると、効率よく画像生成ができるので「GPUやそれを運用する電気代より安い…」という感覚がでてくると思います。

            ポイント①:「生成したい画像のイメージを的確にする」

            画像のイメージ、とはなかなか難しいのですが、「主題・背景・その他」と整理しました。わかりやすく表現すれば単に「女の子」ではなく「女の子、どこで?何着ている?どんな画風で?どんなポーズで?どんな表情をしているの?」といった、主題に続く場面、画風、演出を具体的に意識しましょう。
            逆にモデルと対話したい場合は1語「girl」とだけ打ってみて、Seedや画面の縦横比を変えてみると良いです。具体的な指示がなかったときに何が起きるかを把握できるからです。

            ▼「girl」(seed:39, aspect ratio 1:1)Ultraにて生成

            画像

            ▼「girl」(seed:40, aspect ratio 1:1)Ultraにて生成

            画像

            ▼「girl」(seed:39, aspect ratio 16:9)Ultraにて生成

            画像

            どれも美麗な出力結果ですが、具体的に「どこで、どんな画風で、何を着ているの…?」といった対話するための「画像のイメージ」を持つことが大切です。

            ポイント②:「知っておくべきルール」

            • 英語で書く
            • 単語もしくは 文の区切りにカンマ(,)を入れる

            このあたりは基本として変わらないようです。こういうときも「日本語で書いてみると反応するかも?」という視点で試しておくと良いでしょう。

            ▼「日本人」(seed:39, aspect ratio 16:9)Ultraにて生成

            画像

            ▼「日本人」(seed:40, aspect ratio 16:9)Ultraにて生成

            画像

            日本語をある程度解釈していることがわかります。
            フランス語で「フランス人(les Français)」も試してみましょう。

            ▼「les Français」(seed:38, aspect ratio 16:9)Ultraにて生成

            画像

            ▼「les Français」(seed:39, aspect ratio 16:9)Ultraにて生成

            画像

            想像したような画像が出力されておりますでしょうか?
            フランスの法律によれば、「フランス人」は『すべて個人的にフランス国籍を享受する人々であり、また集団として主権領土として、自由な国民または国家としてフランスを享受する人々』ですが、なかなか「人々」を描いてくれません。日本語の学習と他の言語の学習を比較すると一様ではないということでもあります。

            具体的に英語で「人々(people)」を表現してみましょう。

            ▼「French people」(seed:39, aspect ratio 16:9)Ultraにて生成

            画像

            ▼「Japanese people」(seed:39, aspect ratio 16:9)Ultraにて生成

            画像

            ステレオタイプを強化する意図はないですが、「具体的に、英語で指示する」ことが重要なポイントであることが検証できました。

            カンマや順番についても実験しておきます。

            ▼「Japanese, people」(seed:39, aspect ratio 16:9)Ultraにて生成

            画像

            ▼「people, Japanese」(seed:39, aspect ratio 16:9)Ultraにて生成

            画像

            カンマで区切ったり、順番を入れ替えたりすることで、同シード・同じアスペクト比でも全く異なる画像が出る可能性があることがわかりました。

            ロケ地が近いことはなんとなく想像できるのですが、やはり「プロンプトの具体性がないと、画像として美しい絵はしっかり出るけれども、制御が難しい」という「ルール」が体感できたようであればまずは十分です。

            ポイント③:「クオリティプロンプトを使用する」

            過去、Stable Diffusion 1.x時代、Stable Diffusion XL (SDXL)時代に画像生成界隈で言及されてきたプロンプトの常識として「クオリティプロンプト」がありました。例えば、傑作(masterpiece)、高クオリティ(high quality, best quality)、非常に詳細(ultra detailed)、高解像度(8k)といった「定型句」を入れるとグッと画質が上がるというものです。これは内部で使われているCLIPやモデル全体の学習に使われた学習元による「集合知(collective knowledge/wisdom of crowds/collective knowledge)」なのですが、「それがなぜ画質を向上させるのか?」を説明することは難しい要素でもあります。
            Stability AI APIでも上記のクオリティプロンプトは効果があり、意識して使ったほうが良いことは確かですが、過去と同じ使い方ではありません。
            実験的に解説してみます。

            ultra detailed, hires,8k, girl, witch, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, fantasy, vivid color, noon, sunny

            #SD黄色本」からの引用です

            上記のプロンプトをクオリティプロンプトとしての「ultra detailed, hires, 8k,」を変更して、同じシード(seed:39)を使って Stability AI Generate Ultraによる比較をしてみました。

            ▼(seed:39), Stability AI Generate Ultraによる比較

            「girl, witch, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, fantasy, vivid color, noon, sunny」

            実は合成魔法なの…!? 過去と異なるクオリティプロンプト

            最近のモデルの言語理解力は「単語単位ではない」ようです。例えば今回の実験で与えた{hires, 8k, ultra detailed}をそれぞれバラバラに与えた場合、ほんの少し画像への影響はありますが、どれも同程度の変化です。

            しかし、「ultra detailed, hires, 8k」という形で3ワード同時に与えた場合は大きく画風が変わります。

            またベースになっているプロンプトにおいても、どこにも『アニメ絵で描いて』という指定は入っていません。{fantasy, witch} といったワードを外しても、プロンプト全体の雰囲気でファンタジーイラストを生成します。

            ▼「girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, vivid color, noon, sunny」(seed:39) Stability AI Generate Ultraによる生成

            画像

            ▼「girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, vivid color, noon, sunny」(seed:40) Stability AI Generate Ultraによる生成

            画像

            ここで公式のAPIガイドを確認しておきましょう。

            What you wish to see in the output image. A strong, descriptive prompt that clearly defines elements, colors, and subjects will lead to better results.
            To control the weight of a given word use the format (word:weight), where word is the word you’d like to control the weight of and weight is a value between 0 and 1. For example: The sky was a crisp (blue:0.3) and (green:0.8) would convey a sky that was blue and green, but more green than blue.

            出力画像で表示させたいもの。 要素、色、主題を明確に定義するわかりやすい説明的なプロンプトを使用すると、より良い結果が得られます。
            特定の単語の重みを制御するには、(単語:重み)という形式を使用します。単語は重みを制御したい単語、重みは0から1の間の値です。例えば、「空は晴れやかだった(青:0.3), (緑:0.8)」は、青と緑の空を表現しますが、青よりも緑が強調されます。

            という1文があります。
            要素、色、主題、そしてカッコを使った重み構文についての実験と検証もしてみましょう。

            vivid color,を外して、代わりに「(photoreal:1.0)」を入れてみます。

            ▼(photoreal:0.5), girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:40)

            画像

            この構文の数値は「0-1の間をとる」とのことですので、増減させることで、フォトリアル度を制御できます。この数字を減らすことで、アニメ絵に寄せることができるなら便利です。

            (photoreal:0.5), girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:40)

            画像

            (photoreal:0.1), girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:40)

            画像

            上手くフォトリアル-アニメ度を制御できました。

            逆に、1を超えて大きな値をいれるとどうなるでしょうか。

            (photoreal:2), girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:40)

            画像

            うまくリアル度が上がっていきます。
            「さらに大きな値を…」と欲張ってみましたが、ここから先は絵が破綻します。あまりにお見苦しいので興味があるひとはご自身で試してみてください。
            仕様から読み取ることができる使い方としては、複数のワード間の重み付けに使えるので、バランスを取ったり、色指定や表情の指定に使うと良さそうです。

            ▼(photoreal:1) a 10 years old child looks (girl:0.5) (boy:0.5), black robe, hat, long silver hair, sitting, smile, looking at viewer, flower garden, blue sky, castle, noon, sunny (seed:40)

            画像

            男児か女児か微妙な「10歳の子供」が見事に表現できました。

            ポイント④:「ポーズを指定しよう」

            人物画などを生成したいときは、ポーズを指定してみましょう。

            • sitting (座る)
            • raise hands (手を上げる)
            • looking back (振り返る)
            • jumping (ジャンプ)

            こちらも、より深い言語理解を想定して、きちんと人物に係る場所に入れるのが大事です。さらに複数語に渡るワードの強調構文も有効で(AICUの独自実験によると)スペースでもハイフンも認識されるようです。

            (photoreal:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands-on-own-cheeks:1), black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:39)

            画像

            (photoreal:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:39)

            画像

            男児か女児かわからない10歳ぐらいの子供が、「頬に手を当てこっちをみている」が表現できました。

            ポイント⑤:「構図を指定しよう」

            ポーズを指定しても、思ったような絵が出ない場合は、構図を指定すると効果的です。構図を後から変えると絵全体が変わることがあるので、初めからある程度決めておくのがおすすめです。

            • from above (上から)
            • from below (下から)
            • face focus (顔のアップ)
            • from side (横顔)

            さきほどのプロンプトから「looking at viewer, full body」を外して「(from side:1)」を入れてみます。

            ▼(photoreal:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (from side:1) ,flower garden, blue sky, castle, noon, sunny (seed:39)

            画像

            ▼(photoreal:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (from side:1), (face focus:1) ,flower garden, blue sky, castle, noon, sunny (seed:39)

            画像

            いい感じに顔に注目が当たりました。さらに目線をがんばってみたい。

            ▼(photoreal:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (from side:1), (eyes focus:1) ,flower garden, blue sky, castle, noon, sunny (seed:39)

            画像

            顔や目だけでなく、指にも気遣いたいのでバランスを取っていきます。

            ▼(photoreal:1) (from side:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (finger focus:0.5), (eyes focus:0.5) ,flower garden, blue sky, castle, noon, sunny (seed:39)

            画像

            良いプロンプトができました。
            念のため、シードも複数で試しておきますね。

            ▼(photoreal:1) (from side:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (finger focus:0.5), (eyes focus:0.5) ,flower garden, blue sky, castle, noon, sunny Seed:40

            画像
            指もいいかんじですね

            ▼(photoreal:1) (from side:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (finger focus:0.5), (eyes focus:0.5) ,flower garden, blue sky, castle, noon, sunny Seed:41

            画像
            画像
            Seed 42
            画像
            Seed 43

            「中性的な魅力を持った子供っぽい魔法使い」を制御性高く表現できるようになりました。

            まとめ

            Stable Diffusion 3時代に知っておきたいプロンプトの新常識と、その検証方法を整理しました。ファンタジーイラストからフォトリアルまで、完璧に制御できるプロンプトの文法、さらに画風や性別なども数字で表現できるテクニック、シードを使った制御方法やその確認など、今までのTextToImageよりもさらに深い世界が広がっていることを感じていただけたようであれば幸いです。
            これらのテクニックやモデルとの対話方法により、従来のホビー向けイラスト表現や「一発出し」のフリー画像素材的な使い道を超えて、商業広告やグラフィックデザイン、動画制作のようなプロフェッショナル用途に使用できる可能性が大きく拡がっています。しかもライセンス的にもすべて商用利用可能です。

            AICUもさまざまなAI時代のクリエイターとともに、AI時代の商業映像開発、パイプライン開発、教育マテリアル開発などを行っています。

            Stability AI APIは手軽に使えて高機能で、こんなに美麗なグラフィックスが作れるのに、使いこなしのための情報が少ない!
            AICU media編集部ではこれからも Stability AIさんやクリエイティブAIコミュニティのみなさんと協力して、各種読み物メディアで日々APIガイドの日本語情報を発信していきます。

            記事はこちらに集約されています
            マガジン「Stability AI Fan!」
            ▶Stability AI APIガイド(インデックスページはこちら

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

            そして品質の高い技術を開発していただいている、Stability AIさんありがとうございます!

            https://corp.aicu.ai/ja/stability-ai

            そして「ワタシはこんな風に使いこなしてる!」という方、ぜひAICUでクリエイターとして活躍しませんか?ライターや案件など X@AICUai のDMやメンバーシップ、コミュニティDiscordにて随時お話お聞きしております。

            重大ニュース!「Coloso」とのコラボ講座
            超入門: Stable Diffusionではじめる画像生成AI」開講!!

            さて、誰もが簡単に出せるt2iから、プロフェッショナル向け、商業向けレベルの生成AIクリエイティブの新時代もやってきています。
            これはCGの歴史を振り返ってみても確実な流れです。
            ここで重大ニュースの発表です。

            画像
            https://coloso.global/

            世界中のトップクラスのコンテンツばかりを集めたオンライン講座の国際企業「Coloso」(コロッソ)とAICUが一緒に企画した、初めてのクリエイティブAIに関する専門講座「超入門: Stable Diffusionではじめる画像生成AI」が7日後(2024年8月23日)に公開されます!

            画像
            このシリーズ「超入門 Stability AI API」と同じなのでは…?いえいえ違います!

            講座内容はAICU mediaで人気の日々お送りしている生成AIクリエイティブの情報、画像生成AIの歴史や文化、GPU不要・Macでも安心な環境構築、Google Slidesを使ったオリジナルツール、そして「超入門 Stability AI API」でもお送りしている「Stability AI API」を使って基礎の基礎から丁寧に学ぶ「基礎編」、さらに美麗なファッションデザインを自分で制作する「応用編」、広告業界やクリエイティブ業界にとって気になる「広告バリエーション」を生成AIだけで制作する「活用編」、そして画像生成AIにおける倫理など広範になる予定です。

            画像
            受講者はオリジナルファッションブランドのルックブックを作りあげることができます

            全20講座超え、総プログラム時間10時間を超える豊富なカリキュラムで構成されています。
            (AICUクリエイターの夏休みのすべてが凝縮されています!!)

            【代表からのメッセージ】
            世界の動画ラーニングプラットフォームのトップブランド「Coloso」で、AICUから今回の講座を発表できることを嬉しく思います。
            今回、準備しながら感じたこととして。日々の読み物メディアで発信をしつつ、企業向けコンサルティング大企業向けワークショップで数多くのトップクリエーターさん向けにレクチャーを提供させていただいているAICUですが、今回はさらに広い方々向けに動画メディアで短期集中で実用的なテクニックを確実に学べる講座を企画いたしました。このような企画が短時間で実現できたのは、画像生成AI分野を長年研究し「つくる人をつくる」をビジョンに活動するデジタルハリウッド大学発の国際スタートアップ企業「AICU Inc.」と、国際ラーニングメディア「Coloso」とのコラボならでは!と感じています。
            世界を舞台に日々進化する画像生成AIの分野。長期に活用できるようなテクニックを、従来の画像生成の常識を揺さぶりながら、最新のテクニックを短い時間で丁寧に、楽しく集中して学べる良質コンテンツになっておりますので、「これからはじめてみたい」という方々も、画像生成に詳しい方々も、「最先端の使いこなしを知りたい」「社内教育に使いたい」といった方々にもご活用いただければ幸いです。

            講座のカリキュラムが確認できる詳細ページは、7日後
            8月23日に公開される予定ですのでもう少しお待ちください!

            実は今、Colosoで講座の事前通知申請を申請すると
            6,000円の割引クーポンがもらえるので、お得な特典をお見逃しなく!
            ▶事前通知を申請する>> https://bit.ly/3YGSNda

            以上、AICU media編集部・および代表のしらいはかせがお送りしました。
            🙇今後とも皆さんの応援をよろしくお願いいたします🙇

            最後まで読んでいただきありがとうございました!

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

          1. AniFusion最新機能で漫画制作がもっと楽しく!

            こんにちわ。AICU media編集部のはねごろうです。
            ブラウザだけで本格的な漫画が描ける話題の海外サービス「AniFusion」が、2024年8月11日に更なる進化を遂げたとのことで、アップデート内容をまとめてみました。

            https://anifusion.ai

            過去のAICUでご紹介した記事はこちらからどうぞ!

              まずは公式から、アップデート内容の紹介です。

              (日本からのユーザーがとても多いそうで)
              日本語サポートも進んでいます!
              とはいえ、「わかるAIを伝える」をポリシーにしているAICU media編集部はもっとわかりやすい解説をお届けします。

              1. ワークスペースタイプの追加

              画像

              今回新たにコミック制作用のキャンバスが追加されました。
              しかも、欧米コミック・日本コミックそれぞれのフォーマット選択も可能となります!

              2. コマ割りが簡単に!

              画像

              パネル上で左クリックをするとEditモードになります。
              表示されている分割アイコンをクリックすると画像のように簡単にコマの分割を行うことができます。

              3. ストーリー生成機能

              ストーリー生成機能が実装されました。「ストーリープロンプト」に日本語でも英語でも入れると画像とフキダシを生成します。

              画像

              右側の操作パネルから、ページを選択するとモデルのプロンプト・ストーリーのプロンプトを入力する画面が出てきます。
              モデルのプロンプトには従来の通り、キャラクターやシチュエーションなどの指示を書き込みますが、今回の目玉はストーリーのプロンプトです。物語の内容を打ち込むことで、セリフも含めて簡単に自動生成されます。

              4. FLUX.1の搭載

              画像

              なんと、FLUX.1が搭載されております。凄い…!

              どうやら内部ではFLUX.1(おそらく[schnell])が使われているようです。
              言語理解能力の高さを生かした最新の実装事例ですね。

              AniFusionではCivitaiで配布されている独自LoRAを使用することは可能ですが、現在はFLUXに対応しているものは殆どありません。
              もし、LoRAを使用したい場合は、FLUXのチェックをOFFにして他のモデルを使用する必要がありますのでご注意ください。

              5. 実際に作ってみた

              編集部では「デルタもん公式LoRA」を使ってデルタもん漫画を作ってみました。

              モデルを選び「Animagine XL 3.1」を選択しつつ、

              画像

              「+LoRAを追加」から

              画像

              このURLを貼り付けます。

              https://civitai.com/models/492694/deltamon-official-version10

              こんな感じに出来上がります!

              デルタもんのLoRAをはじめ、LoRAを生成する手法やその可能性が更に広がりますね!

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

              「15分で作った(細かいことを気にしなければ 5 分でできます)」
              私の生産性は爆上がりだ

              FLUX.1[dev]も実験されているようです。

              いかがでしたでしょうか?日進月歩で進化を遂げていくAniFusionの今後がますます楽しみになりますね!
              また、手軽に漫画制作を行うことができることから、AI漫画クリエイターが増えていくことも期待ができます。


              画像

              漫画製作のための画像生成AIプラン

              プロフェッショナルな漫画製作のための画像生成AI技術や関連ツール活用技術を紹介するプランです。加えて、サンプルデータなどを提供する[漫画製作メンバー特典マガジン]もございます。

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

              https://note.com/aicu/membership/join


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

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

            1. 【超入門】Stability AI API 公式サンプルで「TextToImageの最近の文法」を総ざらい!

              こんにちは、AICU media編集部です。ライターのRUNO.がお送りします!

              今回は、Stability AI API Guideの「超入門」!
              Generate APIと「TextToImageの最近の文法」を総ざらいします。

                Stability AI APIとは?

                Stability AI APIは、Stability AIが提供するクラウドベースのAPIサービスです。後述のGoogle Colabでの実験環境だけでなく、Google Slidesや独自のアプリなどで、画像生成をはじめとしたパワフルな機能を利用することができます。ユーザーはGPUやサーバーといった演算環境をはじめ、何も用意する必要はありません。
                そして、とても重要な特徴なのですが、Stability AIのAPIはすべて「商用利用可能な画像生成が可能」なのです。これはあまり知られていないことなのですが、後々のトラブルを防ぐためにもプロフェッショナル向けの画像生成において意識しておきたいポイントです。

                APIの種類と特徴について

                Stability AI公式ページでは、2024年8月現在全部で16個の画像系モデルが存在しています(coming soonと記載されたものを含めると18個)。

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

                動画生成、言語、3D、オーディオを含めると23種類となります。

                画像

                画像系は大きくは「Generate」「Upscale」「Edit」「Control」の4つに大別され、それぞれ次のような特徴があります。

                • 「Generate」:いわゆる「TextToImage」です
                  • プロンプト(テキスト)によって画像生成を行う
                  • 現在6つのモデルが提供されている
                • 「Upscale」:高解像度化
                  • ベースとなる画像を入力し、そこにプロンプト(テキスト)で指示を追加し画像生成を行う
                  • 現在{Creative, Conservative}という2つのモデルが提供されている(加えて、Standardがcoming soonとして予告されている)
                • 「Edit」いわゆるImageToImageです
                  • ベースとなる画像を入力し、そこにプロンプト(テキスト)で指示を追加し画像再生成を行う
                  • 現在{Search and Replace, Inpaint, Outpaint, Remove Background, Erase Object}5つのモデルが提供されている
                • 「Control」こちらも いわゆる ImageToImage です
                  • ベースとなる画像を入力し、そこにプロンプト(テキスト)で指示を追加し画像再生成を行う
                  • 現在{Sketch, Structure, Style}3つのモデルが提供されている(加えて、 Recolorがcoming soonとして予告されている)

                https://platform.stability.ai

                今回は最も基本的な「Generate API」について解説していきます。

                Generate APIとは

                新しい画像や既存の画像のバリエーションを生成するためのツールです。
                TextToImage(テキストから画像を生成する)の根幹を担いますが、最高品質の画質と文字を書く能力(タイポグラフィー)、照明、色合い、構成力などに優れています。特にStable Diffusion 3世代のモデルから作られた Ultraは特筆に値します。

                Stable Image Ultra
                Stability AIの最も先進的な「Text to Image」画像生成サービスであるStable Image Ultraは、前例にないほど迅速な言語理解と最高品質の画像を作成します。Ultraは、タイポグラフィー、複雑な構成、ダイナミックな照明、鮮やかな色合い、そしてアート作品全体のまとまり(cohesion)と構成力に優れています。Stable Diffusion 3をはじめとする最先端のモデルから作られたUltraは、Stable Diffusionエコシステムにおける最高のサービスです。

                https://platform.stability.ai/docs/api-reference#tag/Generate  より人力翻訳

                Stable Diffusion 3時代のプロンプトの文法

                まず、Stable Diffusionではテキストを入力することで単語をもとに画像を生成し、これを「TextToImage(t2i)」と呼びます。このAIに対する指示を行うテキストを「プロンプト」と呼びます。
                モデルによって様々な言語理解が特徴としてありますが、まずはモデルと対話して、効率的なプロンプトの構造を理解することが重要です。

                画像

                モデルが多様にあるため「これが完璧」という方法を一様に宣言することは難しいです。想像や噂がネット上にたくさんあるのですが、最近のモデルはプロンプトを短くすることに努力が割かれていますし、一方では簡単なキーワードで美麗な結果が出すぎるモデルは「過学習」とも言えるかもしれません。画像生成の使い手にとって重要なのは品質や速度、簡単さに加えて「意のままに操れること」つまり「制御性」が重要になります。いくつかのポイントをおさえてモデルと対話すると、その特徴を理解して制御が可能になってきます。
                Stability AI 公式のサンプルに散りばめられたサンプルプロンプトを読んでいると、最新のStable Diffusion 3時代の文法や表現力を引き出すコツが見えてきます。ポイントを整理して、実際に手を動かしながら理解を深めてみたいと思います。

                ポイント①:「生成したい画像のイメージを的確にする」

                例として「遠くに小さな小屋の前で、少女が青い小鳥と仲良く遊んでいる」といったイメージがあったとします。これを細部を深めつつ分解して考えてみましょう。

                • 主題:少女、赤いワンピース、赤い靴、三つ編み、青い小鳥…
                • 背景:小屋・青空・草原・森・木々・差し込む光
                • その他:ファンタジー・落ち着いた雰囲気・昼間・晴れている

                ビジュアルを構成する要素を大きく分けると「主題」と「背景」、そしてアニメ風やファンタジーイラスト、フォトリアルなどの「画風」、さらに構図、表情、雰囲気といった演出の要素になります。

                画像

                ポイント②:「知っておくべきルール」

                • 英語で書く
                • 単語もしくは 文の区切りにカンマ(,)を入れる

                例:ルール通りにプロンプトを書く

                • 主題:1girl, red one-piece dress, red shoes, braided hair, a bluebird
                • 背景:a cottage, blue sky, meadow, forest, trees, rays of sunlight
                • その他:fantasy, calm atmosphere, daytime, sunny

                ポイント③:「クオリティプロンプトを使用する」

                これまで画像生成界隈で言及されてきたプロンプトの常識として「クオリティプロンプト」がありました。例えば、傑作(masterpiece)、高クオリティ(high quality, best quality)、非常に詳細(ultra detailed)、高解像度(8k)といった「定型句」を入れるとグッと画質が上がるというものです。Stability AI APIでもクオリティプロンプトは効果があります。

                画像

                ultra detailed, hires, 8k, girl, witch, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, fantasy, vivid color, noon, sunny

                上記のプロンプトをクオリティプロンプトとしての「ultra detailed, hires, 8k,」を変更して、同じシード(seed:39)を使って Stability AI Generate Ultraによる比較をしてみました。

                画像

                なお最近のモデルでは既にこのような常識も学習済みであったり、モデルや出力する画風によっては逆効果になる場合もあります。
                Stability AI API の公式情報によると、

                出力画像で表示させたいもの。 要素、色、主題を明確に定義するわかりやすい説明的なプロンプトを使用すると、より良い結果が得られます。
                特定の単語の重みを制御するには、(単語:重み)という形式を使用します。単語は重みを制御したい単語、重みは0から1の間の値です。例えば、「空は晴れやかだった(青:0.3)」と「(緑:0.8)」は、青と緑の空を表現しますが、青よりも緑が強調されます。

                という指摘があります。AICUでは日々、このような制御構文は研究を進めており、詳しくは別の機会に実験方法とともに解説したいと思います。

                ポイント④:「ポーズを指定しよう」

                画像

                人物画などを生成したいときは、ポーズを指定してみましょう。

                • sitting (座る)
                • raise hands (手を上げる)
                • looking back (振り返る)
                • jumping (ジャンプ)

                ポイント⑤:「構図を指定しよう」

                画像

                ポーズを指定しても、思ったような絵が出ない場合は、構図を指定すると効果的です。構図を後から変えると絵全体が変わることがあるので、初めからある程度決めておくのがおすすめです。

                • from above (上から)
                • from below (下から)
                • face focus (顔のアップ)
                • from side (横顔)

                【実践:基礎】 Google Colabサンプルの動かし方

                それでは実際に、公式で提供されているGoogle Colabサンプルを用いて、
                画像生成してみましょう!

                Stability AI 提供の公式サンプルへのショートカット
                https://j.aicu.ai/SAIci

                APIリファレンスから参照する場合はこちらから
                https://platform.stability.ai/docs/api-reference

                ステップ1:公式Colabにアクセスする

                APIリファレンスを開くと、公式Colabが次のように提供されています。

                画像
                ピンクの枠部分をクリックすると、公式が提供しているColabに飛ぶことができます
                画像

                実際のリンクはこちらになります。

                https://colab.research.google.com/github/stability-ai/stability-sdk/blob/main/nbs/Stable_Image_API_Public.ipynb#scrollTo=yXhs626oZdr1

                ステップ2:画像生成を始めるための準備

                クリックしてColabに飛ぶと、このような画面になります。

                画像生成を始める準備として、上から3つの操作を順番に実行する必要があります。

                画像
                まずはInstall requirementsを実行しましょう

                警告が表示されますが、今回は公式が提供しているColabになるので、
                「このまま実行」をクリックします。

                画像
                青い字で書かれた「このまま実行」をクリックします

                これが完了したら、次にConnect to the Stability APIを実行します。

                画像
                このピンクの枠部分がConnect to the Stability APIの実行ボタンです

                実行すると、このようにAPIキーの入力を求められます。

                画像

                APIキーは、Stability AIにアクセスし、右上のアカウントアイコンをクリックすることで取得することが可能です。

                画像
                右上のアカウントアイコンをクリックしましょう
                画像
                こちらの API key のリンクからでも取得可能です

                https://platform.stability.ai/account/keys

                画像
                ピンクの枠内にAPIキーが表示されています(※マスキングしております)

                「sk-… 」で始まる文字列がAPIキーです。

                これを先ほどのColabの枠内に入力し、Enterを押しましょう。

                完了したら、最後にDefine functionsを実行しましょう。

                画像
                ピンクの枠に示すボタンをクリックし、Define functionsを実行します

                ここまで完了したら、それより下に続くモデルをどれでも利用可能な状態になります。

                ステップ3:モデルを選んで、いざ画像生成!

                今回は、Stable Image Ultraを使って、画像生成をしてみましょう!

                サンプルでは、はじめからこのようなプロンプト例と実行例が表示されています。

                画像
                はじめはこの状態

                既に入力されているプロンプトを削除し、生成したい画像を示すプロンプトを「prompt」箇所に入力します。

                今回は、上で例にとった「遠くに小さな小屋の前で、少女が青い小鳥と仲良く遊んでいる」を生成してみます。

                実際はプロンプトは一行で書きますが、見やすいように要素ごとに分けて記載します。

                prompt:

                • best quality(クオリティプロンプト)
                • 1girl, little girl, wide angle, vertical angle, red one-piece dress, red shoes, gold braided hair(主題1)
                • a tiny bluebird, playing, chatting(主題2)
                • in front of a cottage, blue sky, meadow, forest, trees, rays of sunlight, fantasy, calm atmosphere, daytime, sunny(背景など)

                次に、ネガティブプロンプトを入力します。
                ネガティブプロンプトとは、写って欲しくないものを入力し、出力画像のクオリティを上げるために指定します。

                たとえば、

                • 普通のクオリティ(normal quality)
                • 醜い(ugly)
                • 上手に生成されていない手(bad hands)
                • 暗い雰囲気にしたくないとき(dark)

                今回はシンプルに

                negative prompt:  normal quality, ugly

                とします。

                ちなみに、ネガティブプロンプトは細かく入れすぎると逆効果の場合もあります。できるだけシンプルに入れることで無駄な制約を減らすことができます。

                aspect_ratioは出力画像のサイズを指定します。
                seedは画像の種類に番号が振られているようなイメージで、同じseedかつ同じプロンプトでは毎回同じ出力が得られます。絵柄を固定したい時などに便利です。

                今回はaspect_ratio: 3:2, seed: 39とします。

                それぞれの設定が入力できたら、実行ボタンを押下します。

                画像
                いざ、実行!

                実行が完了すると、画像が表示されます。

                画像
                嬉しい!
                画像
                かわいらしい!そして画質がいい!

                まるでアニメのオープニングのような美しい画像が得られました!

                皆様はイメージ通りの画像が得られましたでしょうか?

                補足1:画像の保存

                この段階で表示された画像を保存したいときは、表示されている画像を右クリックすることで「名前をつけて保存」で保存できます。

                画像

                もう一つの方法はGoogle Colabの左側にあるフォルダタブ📁をクリックして「generated_…」という名前のPNG画像を保存することです。

                画像

                どちらも1216×832ピクセルの同じ画像です。
                これをGoogle Driveに直接保存する方法がありますが、こちらは公式サンプルをほんの少し修正する必要がありますので別の機会に紹介します。

                補足2:Colabをドライブにコピーし、オリジナルのコードを追加する

                左上から「ドライブにコピー」を押すと、ログインしているGoogleアカウントのGoogle driveにColabノートブックをコピーすることができます。

                画像
                自分のドライブ上で自由に生成を楽しもう

                オリジナルのpythonコードを追加して、生成した画像を自動でGoogle drive上のフォルダにアップロードするなど、
                コードを追加すれば様々な処理が可能になります。

                ちなみに、自分のドライブにコピーをしないままコードを追加しようとするとこのようなエラーが出てしまい、実行することができません。

                画像
                コードを追加したいときは最初に自分のドライブにコピーしてから始めましょう!

                【実践:応用】 Upscaler機能紹介とデモ

                Upscalerとは、画像を入力として与え、そこにテキストで追加指示を送ると、高画質に変換してくれるAPIです。

                現在公式が提供しているColab上では「Creative Upscaler」と「Conservative Upscaler」の2つを利用することができます。

                先ほどUltraで生成したColabの画面を下にスクロールすると、Upscaler機能を利用できます。

                画像
                下にスクロールするとUpscalerなど他のモデルがあります

                「Creative Upscaler」と「Conservative Upscaler」の違い

                • Creative Upscalerは、与えた画像にさらにクリエイティブな加工を施すとともに、高画質化して出力します。
                • Conservative Upscalerは、与えた画像を高画質化して出力します。

                先ほどUltraで出力した画像をこの2つのモデルにかけてみましょう。

                Upscalerを始めるための準備

                まずは、画面左側の「ファイルマーク」をクリックします。
                下に示す画像に従って、順番にクリックしていきましょう。

                画像
                画面左側のファイルマークをクリックします
                画像
                次に、一番上のファイルマークをクリックします
                画像
                「content」ファイルにカーソルを当て、右側のマークをクリックします
                画像
                表示されたメニューから「アップロード」をクリックします。

                そして、先ほどUltraで生成した画像を選んで、アップロードします。

                少し待つと、この三角マークを押して表示される「content」フォルダの中にアップロードした画像の名前が表示されます。

                画像
                contentフォルダの中身を確認しましょう
                画像
                アップロードした画像にカーソルを当て、メニューを開きます
                画像
                「パスをコピー」をクリックします

                これで、Upscalerを利用する準備ができました!

                Creative Upscalerを使ってみよう!

                「image」には今コピーしたファイルのパスをペーストします。
                「prompt」には、どのように加工を施すか入力します。
                「negative prompt」には写したくないものや雰囲気を、
                「creativity」には新たに施す加工をどの程度強くするかを設定します。

                今回は
                  prompt: photorealistic, emotional
                  negative prompt: normal quality, ugly
                  seed: 39
                  creativity: 0.30
                としました。

                画像
                入力イメージ

                さあ、実行してみましょう。

                画像
                フォトリアルに変わっています!

                比べてみると、高画質化もされているのがわかります。

                画像
                左がUpscale後の画像、右が元画像です

                Conservative Upscalerを使ってみよう!

                「Conservative」とは「保守的な」という意味です。
                「Creative」に対して、もとの画風を維持します。

                promptには、元画像を生成した時のプロンプトを入れます。
                その他の設定はCreative Upscalerと同じです。

                画像
                入力イメージ

                実行すると、次のような画像が得られました。

                画像
                ぱっと見は変化がわかりづらいかも?

                拡大して比較してみると、確かに高解像度化されているのがわかります。

                画像
                左が元画像、右がUpscale後の画像です

                [体験談] ライターのnoteアイコンを実際にUpscaleしてみた

                Upscale前の元画像がこちらになります。

                画像
                Upscale前の元画像です

                Upscale後の画像がこちらです。今回はConservative Upscalerを使用しました。この状態で見比べても、画質が良くなっていることがわかりますね!

                画像
                Conservative Upscalerで高画質化した後の画像です

                拡大して比較すると、明確にUpscaleされていることがわかります。

                画像
                左が元画像、右がUpscale後の画像です!

                元画像はDALL-Eを活用して生成しました。

                このように、他サービスで生成した画像をStability AI APIと掛け合わせて使うこともできるのですね。

                好みや用途に合わせて使うことで、より創作の幅が広がりますね。

                皆様もぜひ、気に入った画像を高画質化してみてくださいね!

                さいごに

                公式Colabには今回紹介した以外にも多くのAPIが公開されており、
                自由に触ることができます。

                様々なAPIを試し、ぜひ色々なタイプの画像生成にチャレンジしてみてくださいね!

                Stable Diffusionを開発・公開している Stability AI は、HuggingFaceで無償でダウンロード可能な Stable Diffusion をはじめとするオープンモデル以外に「Stability AI API」という有償のAPIも提供しています。高品質で高速、高機能なAPIであり、新しく魅力的な機能もどんどんリリースされているので 開発者向けのAPIガイド として紹介していきたいと思います。

                上記「Stability AI API Guide」noteより

                冒頭でも紹介したStability AI API Guideは随時更新していきます!

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

                最後に Stability AI APIの Stable Image Ultra で生成したカバーアートの探求を共有します。

                AICUのAIキャラクター「全力肯定彼氏くんLuC4」です

                画像
                画像

                3D化して

                画像

                実写化してみました

                画像

                そのまま学位帽をかぶせて3Dアニメーション風に…

                画像

                完成です!

                画像
                best quality, photorealistic, graduation cap, mortarboard, 1boy, very cool high school boy, solo, gentle smile, gentle eyes, (streaked hair), red short hair with light highlight, hoodie, jeans, newest, colorful illuminating dust, in a mystical forest seed:39

                ここまで読んでいただき、ありがとうございました!


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

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

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

                こんにちわ、AICU media編集部です。
                ComfyUIマスターガイド」シリーズの第6回です!
                今回は、ComfyUIの設定画面について、前後編にわけて解説していきたいと思います。

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

                本記事では、ComfyUIの設定で知っているとオトクな詳細項目を初心者の方にも分かりやすく解説します。ロギング、開発者モード、ノード接続線の表示、別名保存、プレビュー品質、ウィジェット更新タイミングなど…。これらの設定をマスターして、ComfyUIを自分好みにカスタマイズしましょう!

                  1. 設定画面の開き方

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

                  画像

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

                  画像

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

                  設定画面には、多くの設定項目がありますが、本記事では重要な機能を紹介します。設定画面の項目の中には、ComfyUIで標準機能として提供されている項目と、ComfyUI Managerで追加機能として提供されている項目があるため、この分類も同時に説明していきましょう。

                  • ロギングの有効/無効(ComfyUI)
                  • 開発者モードの有効化(ComfyUI)
                  • ノードの接続線の表示方法の変更(ComfyUI Manager)
                  • ワークフローを別名で保存機能の有効化(ComfyUI)
                  • プレビュー時の画像品質の指定(ComfyUI)
                  • ウィジェットの更新タイミングの設定(ComfyUI Manager)

                  3. 重要な機能の解説

                  ロギングの有効/無効

                  Logging(ロギング)は、ComfyUIが起動されたブラウザやOSの情報や、拡張機能のロード情報などのシステムに関連する情報をログとして出力します。デフォルトで有効化されていますが、チェックボックスのチェックを外せば無効化することもできます。

                  画像

                  View Logs」をクリックすることで、ログを確認することができます。

                  画像

                  開発者モードの有効化

                  Enable Dev mode Optionsは、開発者モードを有効化する項目です。この項目にチェックを入れることで、開発者モードに移行します。

                  画像

                  開発者モードになると、メニューに「Save (API Format)」という項目が追加され、API用のワークフローを出力できるようになります。

                  画像

                  ComfyUIはAPIとして使用することもできます。ComfyUIのAPI化については後日別記事にて解説しますので、本記事ではAPI化のセーブができるということを知っておいていただければ大丈夫です。

                  ノードの接続線の表示方法の変更

                  Link Render Mode(リンクのレンダーモード)は、ノード間を繋ぐ線の表示方法を変更します。通常は、曲線で描かれますが、これを直線や直角線、表示なしに変更することができます。ぜひ皆さんの見やすい表示方法を探してみてください。

                  画像

                  リンクのレンダーモードは、以下の4種類から選択できます。

                  • Spline
                    デフォルトのモードがSplineで、下図のように接続線が曲線で描かれます。
                  画像
                  • Straight
                    下図のように接続線が直線で描かれます。曲がる箇所は、自動で直角になります。
                  画像
                  • Linear
                    下図のように接続線が直線で描かれます。Straightと異なり、曲がる箇所はなく、すべて一直線で繋がるように描かれます。
                  画像
                  • Hidden
                    接続線を非表示にします。
                  画像

                  ワークフローを別名で保存機能の有効化

                  Prompt for filename when saving workflowは、ワークフローの保存時、標準のファイル名ではなく、別名を付けて保存する機能を有効化する項目です。

                  画像

                  ワークフローの保存は、メニューの「Save」をクリックすることで、JSON形式のファイルで保存できます。

                  画像

                  この機能のチェックボックスにチェックが入っていない場合は、標準のファイル名である「workflow.json」で保存されます。チェックが入っていた場合、下図のように別名を入力するダイアログが表示されます。保存される場所は、いずれの場合もブラウザで設定されているダウンロードフォルダに保存されます。

                  画像

                  プレビュー時の画像品質の指定

                  When displaying a preview in the image widget, convert it to a lightweight image, e.g. webp, jpeg, webp;50, etc.では、生成画像のプレビュー時の画像品質を指定できます。

                  画像

                  例えば、512×512の解像度で画像を10枚生成した場合、プレビューでは512×512の解像度で10枚の画像が表示されます。生成する画像の解像度が高かったり、枚数が多くなると、プレビューの表示が遅くなってしまいます。
                  そこで、この項目に画像形式を指定すれば、低い解像度で生成画像をプレビューでき、表示速度を上げることができます。例えば、「webp;50」と指定した場合、webp形式で品質50%の画像をプレビューに表示します。品質値は、パーセントで指定するため、1-100の間で指定してください。

                  画像

                  ウィジェットの更新タイミングの設定

                  Widget Value Control Modeは、ウィジェットの更新タイミングを指定します。更新タイミングは、「after」と「before」から選択でき、デフォルトでは「after」が設定されています。

                  画像

                  この設定は、固定値ではないウィジェットの更新タイミングを制御する設定です。例えば、ランダム生成時のシード値(*1)が対象になります。ここでは、シード値を例にウィジェットの更新タイミングについて説明します。

                  *1 シード値(seed)は、Stable Diffusionでの画像生成内部で使われる乱数列を決める種(seed)のようなものです。(ゲームやサイコロとは異なり)同じシード値を使えば、同じ乱数列が生成され、結果として同じ画像が生成される可能性が高くなります。いわば画像の性質の種を決める番号と言えるでしょう。

                  「before」の場合(編集部のオススメ)

                  • ウィジェットの値は、ノードの実行直前に更新されます。つまり「Queue Prompt」ボタンを押す前に設定した値が適用されます。
                  • 表示されているシード値は、現在表示されている画像に使用された値です。
                  • 例えば、画像生成を開始する前のシード値が「98765」だったとします。beforeの場合、画像生成の前にウィジェットが更新(シード値が更新)されるため、このシード値は使用されません。ウィジェットの更新後のシード値が「12345」と設定されて画像生成された場合、画像生成後に画面に表示されているシード値は「12345」となり、画像生成に使用されたシード値を画面で確認することができます

                  「after」の場合(デフォルト)

                  • ウィジェットの値は、ノードの実行後に更新されます。つまり、画像生成が完了した後に設定した値が表示されています。
                  • 表示されているシード値は、次回の画像生成で使用される値です。現在表示されている画像のシード値は直接確認できません。
                  • 例えば、画像生成を開始する前のシード値が「1」だったとします。afterの場合は、「1」を使用して画像が生成されます。しかし、その後にシード値が更新され「2」が表示されています。つまり画像生成に使用されたシード値を画面で確認できません
                  画像
                  実験してみました。

                  「before」設定では、同じシード値を再入力することで、以前生成した画像と同じ画像を再現できます。「after」設定では、シード値が自動更新されるため、同じ画像を再現するには、自動更新される前にシード値をメモしておく必要があります。

                  AICU編集部としてはオススメは「before」ですね!
                  説明のためにも、入れた値が表示と一致しているのがありがたいです。

                  本記事では、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

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

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

                  今回のボーナス画像とプロンプトはプラネタリウムに来たLuC4くんです。
                  みなさんは天体観測お好きですか?色々な星座たちが「幾千光年離れた星々のきらめきを繋げて生まれた存在…」と思うと心がとても揺らぎますよね。

                  画像

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

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

                1. [5]ComfyUI カスタムノード徹底解説!機能とメリットを理解しよう

                  こんにちわ、AICU media編集部です。
                  「ComfyUI マスターガイド」第5回目になります。今回は、「カスタムノード」について、実際にインストールをした後の使い方と合わせて掘り下げていきたいと思います。

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

                    1. カスタムノードとは?

                    カスタムノードとは、使う人が独自に機能を拡張することができる、ComfyUIの「拡張パーツ」のようなものです。まるでレゴブロックのように、様々なカスタムノードを組み合わせることができるので、自分だけのオリジナル作品を創造していくことできます。とても楽しそうですね!

                    さて、カスタムノードがなぜあるのか。それは、使う人一人ひとりのニーズや創造性に合わせた柔軟な画像生成環境を提供するためです。標準機能だけでは実現できない、細かな調整や特殊効果、また最新のAI技術の導入などをカスタムノードでは行うことができます!

                    初心者にとって、カスタムノードを理解することは、ComfyUIの可能性を最大限に引き出すための非常に重要な一歩となります。最初は難しく感じるかもしれませんが、この記事を通して、ぜひカスタムノードの基本的な知識を理解いただき、さらにComfyUIの世界をより深く探求するきっかけにしてみてください。

                    2. カスタムノードの基礎知識

                    カスタムノードとは何か

                    カスタムノードは、ComfyUIの機能を拡張するためのユーザー定義のモジュールになります。料理で例えると、標準ノードが「基本的なレシピ」だとすれば、カスタムノードは「その人それぞれの独自のレシピ」と言えるでしょう。

                    例えば、「野菜炒め」という料理を作る際に、野菜を切る、炒める、味付けをするといった基本的な手順は標準ノードでカバーできます。しかし、「特製ソースを使う」「隠し味を加える」といった独自の工夫は、カスタムノードで実現できます。

                    画像

                    カスタムノードの基本的な構造は、標準ノードと同様に、入力 → 処理 → 出力の流れで成り立っています。入力として画像やテキストなどのデータを受け取り、内部でPythonコードによって処理を行い、結果を出力します。

                    例えば、「色調整ノード」であれば、入力として画像データを受け取り、明るさやコントラストなどを調整し、調整後の画像データを出力します。また、「プロンプト拡張ノード」であれば、入力として短いプロンプトを受け取り、それを詳細なプロンプトに拡張して出力します。

                    カスタムノードとPythonの関係

                    カスタムノードの内部処理は、Pythonというプログラミング言語で記述されています。Pythonは、その読みやすさと豊富なライブラリ、活発なコミュニティサポートによって、世界中で広く使われているプログラミング言語です。

                    Pythonがカスタムノードに使用されている理由は、その柔軟性と拡張性の高さにあります。様々なライブラリを活用することで、画像処理、自然言語処理、機械学習など、多岐にわたる機能を簡単に実装できます。

                    Pythonコードの基本構造は、入力の受け取り → 処理 → 出力の生成という流れです。カスタムノードでも、このPythonコードによって入力データを処理し、 望ましい出力を生成します。例えば、以下のようなコードでカスタムノードは作成されています。

                    # カスタムノードの基本構造を示すサンプルコード
                    
                    # 1. 必要なライブラリをインポート
                    import numpy as np
                    from PIL import Image
                    
                    # 2. カスタムノードのクラスを定義
                    class SimpleImageProcessor:
                        # 3. 初期化メソッド
                        def __init__(self):
                            self.brightness_factor = 1.5
                    
                        # 4. 入力を受け取り、処理を行い、出力を生成するメソッド
                        def process_image(self, input_image):
                            # 入力画像をNumPy配列に変換
                            img_array = np.array(input_image)
                    
                            # 画像の明るさを調整
                            brightened_array = np.clip(img_array * self.brightness_factor, 0, 255).astype(np.uint8)
                    
                            # 処理結果を新しい画像として生成
                            output_image = Image.fromarray(brightened_array)
                    
                            return output_image
                    
                    # 5. カスタムノードの使用例
                    if __name__ == "__main__":
                        # 入力画像を読み込む(実際のComfyUIでは自動的に提供されます)
                        input_img = Image.open("input_image.jpg")
                    
                        # カスタムノードのインスタンスを作成
                        processor = SimpleImageProcessor()
                    
                        # 画像を処理
                        result_img = processor.process_image(input_img)
                    
                        # 結果を保存(実際のComfyUIでは自動的に次のノードに渡されます)
                        result_img.save("output_image.jpg")
                    
                        print("画像処理が完了しました!")

                    何が書いてあるかわからない?安心してください!Pythonコードを理解していなくても、カスタムノードを利用できます!ComfyUIは、ユーザーフレンドリーなインターフェースを提供しており、コードを直接操作することなく、カスタムノードの機能を活用できるのです。

                    標準ノードとカスタムノードの違い

                    標準ノードは、ComfyUIにデフォルトで搭載されている基本的な機能を提供するノードです。例えば、画像を読み込む「Load Image」や、プロンプトを入力する「CLIP Text Encode (Prompt)」などが挙げられます。これらのノードは、ComfyUIの基本的な操作を行うために必要不可欠です。

                    しかし、標準ノードだけでは実現できない機能や、より高度な処理が必要になる場合もあります。そこで登場するのがカスタムノードです。カスタムノードでは、標準ノードではカバーできない機能を補完し、ComfyUIの機能を拡張することができます。

                    例えば、複数の標準ノードを組み合わせて行っていた複雑な処理を、1つのカスタムノードにまとめることで、ワークフローを大幅に簡略化することもできます。また、最新のAIモデルを統合したカスタムノードを使用することで、より高品質な画像生成が可能となります。

                    3. カスタムノードの重要性

                    ComfyUIの柔軟性向上

                    カスタムノードは、ComfyUIの柔軟性を飛躍的に向上させます。使う人は自分のニーズや好みに合わせて、様々な機能を追加し、ComfyUIを自分だけのツールへとカスタマイズすることができます。例えば、特定の画風や効果を簡単に適用できるカスタムノードを作成することで、自分だけのオリジナル作品を効率的に制作することも可能です。

                    画像

                    ユーザー体験の改善

                    カスタムノードは、複雑な操作を簡略化しより直感的にComfyUIを使用できるようになります。また、視覚的にわかりやすいアイコンや名称を使用することで、ノードの機能を容易に理解し、スムーズなワークフローを実現できます。

                    例えば、「efficiency-nodes-comfyui」というカスタムノードでは、モデルのロード(Load Checkpoint)、プロンプトの入力(CLIP Text Encode (Prompt))、空の潜在空間の作成(Empty Latent Image)などを1つのノードにまとめ、簡略化を実現しています。
                    実際にインストールをしてみてみましょう。

                    画像

                    ワークエリア上でカチカチッとダブルクリックをして『efficient』と入力したら…出てきました!早速クリックをしてみます。

                    画像

                    補足です。空の潜在空間の作成(Empty Latent Image)とはいつもの text to imageな空の潜在空間では、画像のサイズや生成回数を記入しているノードのことです。

                    画像

                    通常の「Empty Latent Image」ノード
                    ここではempty_latent_width, empty_latent_height, は 512, 512(SD1.5系)もしくは、1024, 1024 (SDXL系)、batch_size(生成回数) 1→15 など、用途に合わせて記入しましょう。

                    画像生成プロセスの最適化

                    カスタムノードは、画像生成プロセスの最適化にも貢献します。最適化されたアルゴリズムを使用することで、処理速度を向上させ、より短時間で高品質な画像を生成できます。また、高度なノイズ除去や詳細強化機能を追加することで、画像の品質をさらに向上させることができます。
                    例えば、「ComfyUI_IPAdapter_plus」というカスタムノードでは、IP-Adapterという参照画像を基に画像生成を行える技術を簡単に使用することができるノードです。標準ノードでは実現が難しい技術をカスタムノードでサポートしています。

                    画像

                    コミュニティ駆動の革新

                    カスタムノードは、ComfyUIコミュニティの活発な活動を促進し、革新的なアイデアを生み出す原動力となっています。使う人々が自由にアイデアを共有し、カスタムノードとして実装することで、多様なニーズに対応した機能が次々と誕生しています。特定の業界や用途に特化したカスタムノードも開発されており、ComfyUIの可能性は無限に広がっています。

                    画像

                    プログラミングの知識がなくても活用できる利点

                    カスタムノードは、プログラミングの知識がなくても活用できるという大きな利点があります。ユーザーフレンドリーなインターフェース、コミュニティによるサポート、豊富な情報源など、初心者でも安心してカスタムノードを利用できる環境が整っています。最初は既存のカスタムノードを使用し、徐々に使い方を学び、最終的には自分でカスタムノードを開発する、といった段階的な学習も可能になってきます。

                    画像

                    4. まとめ

                    カスタムノードは、ComfyUIの機能を拡張することで、ユーザー体験は格段と向上します。Pythonで記述されたこれらのモジュールは、ワークフローの効率化、高度な機能の追加、コミュニティ駆動の革新など、様々なメリットをもたらすことができます。

                    Pythonとカスタムノードの関係を理解することで、ComfyUIの無限の可能性を最大限に引き出すことができます。初心者の方は、まずは既存のカスタムノードを試してみて、その機能や使い方を学んでみましょう!コミュニティのサポートや豊富な情報源を活用することで、徐々にカスタムノードに慣れていくことができます。

                    今回は以上になります。
                    どんどんComfyUIについて学ぶことが出来ているのではないでしょうか?この後のボーナストラックではお得なTipsを公開しております。次回も楽しく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

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

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


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

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