カテゴリー: 画像生成AI

画像生成AIの使い方や最新情報についてお届けします。

  • [ComfyMaster23] 特別編: 画像の髪型を自由自在に変えてみよう!

    ComfyUIを使いこなしている皆さん、画像生成の可能性をさらに広げてみませんか?今回は特別編、画像内の髪型をAIが自動で検出し、思い通りの髪型に自由自在に変換する、一歩進んだ応用ワークフローをご紹介します。

    人物画像の髪型を変更したいと思った時、従来の画像編集ソフトでは、髪を選択して細かく加工する必要があり、非常に手間がかかりました。しかし、ComfyUIとStable Diffusionを組み合わせることで、プロンプトで指定するだけで、まるで魔法のように髪型を変更することが可能になります。

    こんにちわ、AICU media編集部です。
    ComfyUI マスターガイド」第22回目になります。
    この記事では、Florence2とSAM2による髪と人物のマスク作成、背景の自動補完、インペイントによる髪型生成、そして最終的な画像合成と補正といった、ワークフローの全貌を詳細に解説します。ComfyUIのノードを活用した高度な画像処理をマスターし、Stable Diffusionによる画像生成を新たなレベルに引き上げましょう!

    前回はこちら

    ▼[ComfyMaster22] レイアウトそのままにアニメを実写化!image-to-imageとスタイル変換で実写化レベルを制御 #ComfyUI

      1. 今回実装する処理のフロー

      髪型の変更については既に、インペイントのモデルコンディショニングを使って、こちらの記事で解説いたしました。
      ▼[ComfyMaster20] ComfyUIの高度インペイント技術で自然な髪型変更を実現!#ComfyUI #InpaintModelConditioning

      今回の処理は、髪型を変更したい画像に対して、自動で髪の毛を検出し、プロンプトで指定した任意の髪型に変更するワークフローです。大まかな処理の流れは、以下になります。

      1. Florence2とSAM2で髪と人物のマスクを別個で作成する
      2. 背景から人物を取り除き、人物がいた箇所を補完する
      3. 髪のマスクと、人物のマスクを反転させて作成した背景のマスクを合成し、髪と背景のマスクを作成する
      4. 髪と背景のマスクを利用してインペイントを実行し、任意の髪型を生成する
      5. 補完した背景と、任意の髪型に変更した人物の画像を合成し、1枚の画像にする
      6. 合成した画像に対して、低めのDenoising strengthでサンプリングを行い、人物と背景を馴染ませる

      このフローにより、画像とプロンプトを与えることで、自動で髪型を変更することができます。

      2. 使用するカスタムノード

      今回使用するカスタムノードは、以下の通りです。それぞれComfyUI Managerからインストールしてください。

      ComfyUI-Florence2

      ComfyUI-Florence2は、Florence2をComfyUIで使用するためのカスタムノードです。Florence2は、Microsoftが開発した視覚言語基盤モデルで、画像キャプション生成、物体検出、ビジュアルグラウンディング、セグメンテーション、文字認識、など、幅広いビジョンタスクを実行できます。今回は、プロンプトからのオブジェクト検出(髪と人物)を実現するために使用します。
      なお、Florence2に必要なモデルは、インストール時に「ComfyUI/models/LLM」フォルダに自動でダウンロードされます。
      リポジトリは、以下になります。

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

      ComfyUI-segment-anything-2

      ComfyUI-segment-anything-2は、SAM2 (Segment Anything Model 2) をComfyUIで利用するためのカスタムノードです。SAM2は、Metaが開発した最新のオブジェクトセグメンテーションモデルで、画像と動画の両方に対応しています。今回は、Florence2で検出した髪や人物をセグメンテーションし、マスクを作成するためにSAM2を使用します。
      SAM2に必要なモデルは、Kijai氏のHugging Faceのリポジトリから「ComfyUI/models/sam2」フォルダに自動でダウンロードされます。
      リポジトリは、以下になります。

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

      comfyui-tensorop

      ComfyUI-TensorOpは、ComfyUIでテンソル操作を行うためのノードセットです。今回のワークフローで、このノードを直接使用することはありませんが、ComfyUI-Florence2内で使用されているため、インストールが必要になります。
      リポジトリは、以下になります。

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

      ComfyUI WD 1.4 Tagger

      ComfyUI WD 1.4 Taggerは、画像からDanbooruタグを取得するためのカスタムノードです。背景と人物の合成後の調整でのサンプリングの際に、画像からタグを抽出し、それをプロンプトとして利用するために使用します。
      リポジトリは、以下になります。

      https://github.com/pythongosssss/ComfyUI-WD14-Tagger

      ComfyUI Inpaint Nodes

      ComfyUI Inpaint Nodesは、画像のインペイント(欠損部分の補完)をより効果的に行うためのノードセットです。変更後の髪の生成に使用します。
      リポジトリは、以下になります。

      https://github.com/Acly/comfyui-inpaint-nodes

      ComfyUI-KJNodes

      ComfyUI-KJNodesは、ComfyUIの既存ノードの機能を組み合わせて作成された便利なノードを提供しています。今回使用するサンプルワークフローで、このカスタムノードを使っているため、インストールが必要になります。インストールは、ComfyUI Managerから可能です。
      リポジトリは、以下になります。

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

      3. 使用するモデル

      チェックポイント

      今回は、RealVisXL_V4.0を使用しました。他のSDXLモデルでも問題ありません。以下のリンクよりダウンロードし、「ComfyUI/models/checkpoints」に格納してください。

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

      LoRA

      LoRAにMidjourney Mimicを使用します。Midjourney Mimicは、Midjourneyのような美麗な画像を生成するためのLoRAです。全体的に綺麗な画像を生成できるように、このLoRAを使用しています。以下のリンクよりLoRAをダウンロードし、「ComfyUI/models/loras」フォルダに格納してください。

      https://huggingface.co/imagepipeline/Midjourney-Mimic-v1.2/blob/main/2ac68c15-7d9b-49e0-a4a2-796d3093a555.safetensors

      ControlNet

      ControlNetには、AnyTest V4を使用します。AnyTest V4は、形状維持をしつつ、スタイル変換の余地を残した柔軟なControlNetです。以下のリンクよりダウンロードし、「ComfyUI/models/controlnet」フォルダに格納してください。

      https://huggingface.co/2vXpSwA7/iroiro-lora/blob/main/test_controlnet2/CN-anytest_v4-marged.safetensors

      インペイント

      インペイントで使用するモデルにMAT_Places512_G_fp16を使用します。以下のリンクよりダウンロードし、「ComfyUI/models/inpaint」フォルダに格納してください。

      https://huggingface.co/Acly/MAT/blob/main/MAT_Places512_G_fp16.safetensors

      4. 使用する画像素材

      今回は、以下の画像に対して髪形変更処理を行います。

      画像

      ☆ワークフローのJSONファイルと画像ファイルは文末にございます

      5. ワークフローの全体像

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

      画像

      このワークフローをフローチャート化したものが以下になります。

      画像

      各ノードの詳細は以下になります。グループごとに解説します。

      1. 画像読み込み: 元の画像を読み込みます。
      2. 物体検出: Florence2モデルを使用して、元の画像内の髪と人物を検出します。
      3. 領域分割: SAM2(Segment Anything Model 2)を使用して、髪と人物の正確なマスクを作成します。
      4. マスク処理: 人物のマスクを反転し作成した背景マスクと、髪のマスクを合成し、インペイント用の領域を作成します。
      5. 背景生成: 人物マスクを利用して、マスクされた領域を埋めるための背景を別のプロセスで生成します。
      6. インペイント: 背景マスクと髪マスクを合成したマスクを利用して、髪型を変更するインペインティングを行います。
      7. 初期サンプリング: 背景マスクと髪マスクを合成したマスクを利用したインペインティングで、新しい髪の初期バージョンを作成します。
      8. 人物マスクの再作成: Florence2とSAM2を再度使用して、初期サンプリングで生成された画像から人物を検出し、マスキングします。
      9. 画像合成: 再作成された人物マスクを利用して、背景画像と初期サンプリングで生成された画像を合成します。
      10. 最終サンプリング: 合成された画像を弱いdenoiseでサンプリンクし、最終的な画像を洗練します。

      6. ワークフロー解説

      ここでは、セクションごとに処理内容を解説します。

      Florence2によるオブジェクト検出

      画像
      • まず、DownloadAndLoadFlorence2ModelノードでFlorence2のモデルをロードします。ここでは、基本モデルのFlorence-2-baseを選択しました。
      画像
      • 次に、ロードしたFlorence2モデルと対象画像をFlorence2Runノードに入力します。ここでは、taskにcaption_to_phrase_groundingを選択し、テキストに「human, hair,」を入力しました。caption_to_phrase_groundingは、入力したテキストに対応する画像領域を特定するタスクです。今回は、人物と髪を検出したいので、テキストに「human, hair,」を入力しています。
      画像
      • 以下がFlorence2Runノードの実行結果です。Florence2Runノードのimage出力をPreview Imageノードで表示しています。人物全体と髪がバウンディングボックスで検出されていることが確認できます。
      画像
      • Florence2Runノードのdata出力は、Florence2 Coordinatesノードに接続されます。dataはリストになっているため、ここでリストのどのデータを使用するかをindexで選択します。今回の場合、「human, hair,」と入力したので、index0がhuman、index1がhairになります。
      画像

      SAM2によるセグメンテーション

      画像
      • Florence2の結果を利用してセグメンテーションするためにSAM2を利用します。まず、(Down)Load SAM2ModelノードでSAM2のモデルをロードします。ここでは、modelsam2_hiera_base_plus.safetensorsを選択しました。このモデルは、中程度のサイズと性能を持ち、精度と速度のバランスが取れているモデルです。今回は、画像1枚を処理するので、segmentorsingle_imageになります。
      画像
      • 次にSam2Segmentationノードでセグメンテーションを行います。入力には、ロードしたSAM2モデル、対象画像、Florence2の検出結果のバウンディングボックスを入力します。今回は、髪と人物を別々でセグメンテーションするので、individual_objectstrueに設定します。
      画像
      • セグメントの結果は以下になります。左が人物全体、右が髪をセグメントでマスクした結果になります。
      画像
      • 人物のマスクは、InvertMaskで反転させ、背景マスクを作成します。
      画像

      背景の補完

      画像から人物を削除し、背景のみの画像を生成します。

      画像
      • SAM2で生成した人物マスクをGrowMaskノードで拡張させます。
      画像
      • インペイントで使用するモデルをLoad Inpaint Modelノードでロードします。
      画像
      • Inpaint(using Model)ノードに拡張したマスク、ロードしたインペイントモデル、対象画像を入力し、インペイントを実行します。
      画像
      • 以下のようにインペイントが上手くいかない場合は、マスクの拡張範囲を広げたり、シード値を変えて生成を繰り返してください。
      画像

      マスクの合成

      髪マスクと背景マスクを合成し、人物以外をインペイントするためのマスクを作成します。

      画像
      • MaskCompositeノードのdestinationに背景マスク、sourceに髪マスクを入力し、マスクを合成します。operation(合成方法)はaddにします。
      画像
      • 必要に応じて、合成したマスクを拡張してください。
      画像
      • ImageAndMaskPreviewノードに対象画像と合成したマスクを入力し、結果を確認します。しっかり人物以外がマスクされていることを確認できました。
      画像

      髪の生成

      指定した髪形に変更します。

      画像
      • まず、Load CheckpointRealVisXLをロードします。
      • 次にLoad CheckpointMODELCLIP出力をLoad LoRAに接続します。Load LoRAでは、Midjourney Mimicをロードします。
      • Load LoRACLIP出力は、2つのCLIP Text Encode (Prompt)ノードに接続します。上のCLIPがポジティブプロンプト、下のCLIPがネガティブプロンプトになります。
      • ポジティブプロンプトには、髪形を入力します。今回は「afro」を入力しました。
      • ネガティブプロンプトには、以下のプロンプトを入力しました。
      worst quality, low quality, illustration, 3d, 2d, painting, cartoons, sketch, nsfw, accessories, human,
      画像
      • 次にControlNetの設定です。まず、Load ControlNet ModelノードでAnyTest V4をロードします。
      • Apply ControlNet(Advanced)にポジティブ/ネガティブプロンプト、ロードしたControlNetモデル、対象画像を入力し、ControlNetを適用します。strengthは弱めに設定してください。
      画像
      • 次にインペイント用のLatentを作成します。VAE Encode (for inpainting)ノードに対象画像、Load CheckpointのVAE出力、背景マスクと髪マスクを合成したマスクを入力します。必要に応じて、grow_mask_byの値を調整し、マスクを拡張してください。
      画像
      • KSamplerノードには、Load LoRAMODEL出力、Apply ControlNet(Advanced)positive/negative出力、VAE Encode (for inpainting)LATENT出力を入力し、髪の生成を行います。
      • KSamplerノードの生成結果のLATENTは、VAE Decodeノードで画像に変換します。
      画像

      人物と背景の合成と補正

      新たに髪を生成した画像から人物を抽出し、背景と合成します。その後、合成した画像に弱いノイズでサンプリングを行い、画像を補正します。

      画像
      • まず、新たに髪を生成した画像から人物を抽出するために、Florence2RunFlorence2 CoordinatesSam2Segmentationノードで人物マスクを再作成します。Florence2Runノードには、新たに髪を生成した画像と「Florence2によるオブジェクト検出」でロードしたFlorence2モデルを入力します。Florence2Runノードのテキストには、「human,」を入力します。その他は、「Florence2によるオブジェクト検出」セクションで説明した内容と同じです。
      画像
      • 次にImageCompositeMaskedノードで背景と人物を合成します。destinationには「背景の補完」で生成した背景画像を、sourceには新たに髪を生成した画像を、maskには再作成した人物マスクを入力します。
      • 合成した画像は、VAE EncodeノードでLatentに変換します。
      画像
      • 合成した画像の補正に使用するControlNetを新たに用意します。「髪の生成」セクションで使用したControlNetは、ポジティブプロンプトが「afro」のみであり、画像の特徴を捉えたポジティブプロンプトではないため、新たにポジティブプロンプトを作成し、補正の精度を上げます。
      • WD14 Taggerノードで合成画像からタグを抽出します。それをCLIP Text Encode(Prompt)ノードに入力し、その出力をApply ControlNet (Advanced) ノードに入力します。
      • CLIP Text Encode(Prompt)ノードのclip入力には、Load LoRAノードのCIP出力を入力します。
      • Apply ControlNet (Advanced)ノードのnegative入力には、「髪の生成」セクションのネガティブプロンプトのCLIP Text Encode(Prompt)ノードの出力を入力します。control_netには、「髪の生成」セクションのLoad ControlNet Modelノードの出力を入力します。image入力には、合成画像を入力します。strengthの値は、少し強めの1.10を設定しました。画像のテイストを崩さないように補正するためです。
      画像
      • 最後にKSamplerノードで補正を実行します。KSamplerノードのmodel入力には、「髪の生成」セクションのLoad LoRAノードの出力、positive/negative入力にはApply ControlNet (Advanced)ノードの出力、latent_imageには合成画像をLatentに変換したものを入力します。
      画像

      7. ワークフローの実行

      それでは、ワークフローを実行してみます。以下が髪形をアフロに変換した画像です。しっかりアフロに変換されています。色を指定していなかったので、この時は金髪になっています。

      画像

      他の髪型にも変更してみました。以下が一覧になります。

      画像

      いかがでしたでしょうか?ComfyUIを上手く使うと、このように実用的な画像の生成システムの構築が可能になります。みなさんも様々な画像生成に挑戦してみてください!

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

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

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

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

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

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

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

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

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


      ■ボーナストラック:今回のワークフローファイルと画像


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

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

    1. 「CGWORLD vol.315」画像生成AIによる表紙メイキング、大公開。

      2024年10月10日発売、CGWORLD vol.315 (2024年11月号)の表紙の制作に、AICU代表・白井暁彦が画像生成AIによるアートを提供いたしました。
      本稿ではその制作の裏側、画像生成AIによる商業出版およびVFX技術の実際の進行とワークフローを紹介したいと思います。

      ★本件は白井個人への依頼制作であり、個人クリエイターとしての寄稿となります。

      デジタルハリウッド大学30周年おめでとうございます。

      https://amzn.to/4dKt3jP

        実は、画像生成は全てStable Diffusion,  Stability AI APIで行っています。

        クレジットをご記載いただきました。

        画像

        本稿ではその制作の裏側を紹介させていただきます。

        画像

        杉山知之学長によるコンセプト解説です。

        1994年年末のデジタルコミュニケーションの夜明けから30年、歴史的な様々なトピックがありましたが、その世界が暮れていきます。だから、夕日をバックに、新たな夜明けを見る方向に向かって座っています。新たな夜明けは、AIと暮らす世界、シンギュラリティ・エラの到来を告げます。表4にキャラクターを乗せるアイデアは白井暁彦先生からです。メタバースなど様々なデジタル空間にパラレルで生きる姿の象徴です。アバターを引き連れて、新たな世界へ行きます(杉山学長)

        ・画像生成AIサービス
        背景・人物:Stability AI API, 主に Stable Image Ultra、Google Colabでの独自開発システムにより生成

        ・プロンプト(一部抜粋)
        背景:hippy style, (photoreal:2), futuristic, orange toned urban sight scene, cyber worlds with a nature fusioned, skyscraper buildings. seed = 59.
        人物:cyberpunk-themed mechanical robotic guitar hero, with a headset, neon-lit circuit tattoos on face, glowing white lines, looking at viewer, smile, passionate 40 years old man, prosthetic hand, with artificial respirator, with a super detailed guitar, color scheme of orange, dramatic orange and white lightings, intense expression, super detailed mechanical design,

        プロンプトによるtext to imageだけではなく、様々な技術を駆使していますが、まずは画像生成以外の制作の裏側を可能な限りで紹介していきたいと思います。

        最新のVFX技術による実写撮影

        まず、この杉山学長は本物、御本人による撮影です。
        2021年にALSを発症された杉山知之先生は、現在、人工呼吸器と車椅子の上で学長業務を遂行されています。

        祝辞などは本人の人工合成ボイスで行われています。

        https://note.com/dhu/n/nb71507b6921a

        筋肉の自由が奪われたとしても、呼吸を奪われたとしても、CG・VFX技術により、3D高解像度アバターや人工合成ボイスによって、人々に礼をして、若き才能を称賛する姿は、勇気を与えます。そう、これはALSという難病だけではなく、我々高度長寿化社会を生きる人生そのものをみているのかもしれないのです。

        人は生きるうえでは、社会とコミュニケーションしていかねばなりません。
        その姿をいかに、楽しいものにしていくか、挑戦の日々が続きます。

        御本人による直接のディレクション

        まず本件は、杉山知之学長自身のFacebookメッセンジャーによるDMによって直接のディレクションが行われました。

        画像

        https://note.com/mojo_sugiyama

        依頼は2024年8月16日17:41に届いたメッセージからはじまりました。

        画像

        左が杉山学長、右が白井です。

        画像

        Google DriveでCGWORLDの表紙レイアウトが届きました。
        間に、だれも、仲介や介在はいません。

        その日のうちに作ったプロト

        画像

        代表的な1枚をお送りしていますが、DriveのURLには専用の画像生成システムから生成した高品質画像が100枚ほど収められています。

        画像

        杉山学長の公式写真をベースにスタイル学習を行い、さまざまなポーズ、衣装、表情、レイアウトのバリエーションを作っていきます。
        シードとプロンプトを固定して、再現性を高く探求しています。

        たとえば1つのファイルを紹介します。

        “S40_PP_neon-punk style….MF0.50.png”というファイル名に、シードや処理の系統、プロンプトの一部が埋め込まれています。

        画像

        Stability AI APIと公式のGoogle Colabノートブックがベースになっていますが、その中の最新APIのなかでも特に高品質な「Stable Image Ultra」と、その公式サンプルが使われています。

        https://platform.stability.ai

        公式サンプルの状態では、画像の保存やプロンプトの探求は難しいので、画像の生成やスタイル学習のサンプルを改造して、以下のような機能が追加されています。

        画像

        ・APIキーの自動参照(セキュリティ機能)
        ・Google Driveへの画像保存
        ・プロンプトの3分割
        ・シードとフィデリティの制御

        テキスト画像生成だけでは制御性の高い画像は作れません。また未来的な雰囲気、杉山先生のヒッピーカルチャー、ギターなど難度の高い要素も盛り込んでいきつつ、画風としても写実性とキャラクターイラスト風を交えていきます。

        画像
        画像
        画像

        今回、ALSである現実を、そのまま世間にさらしたいという気持ちがあり、車椅子に乗って喉にパイプを通している姿は写真で行きます。 しかし白井先生の生成した人物を見ると、市民全員が高度に発達したVision Proのようなデバイスを付ければ、それぞれの人物が観られたい姿に変容して、相手に見え、誰に観られるかによって姿が変わる世界が可能と感じます。

        (視線入力や呼気式入力装置で、こんなふうに長い文章を打つのがどんなに大変か…)と思いながら、返信していきます。

        画像

        ・デジハリ風オレンジ
        ・表4(裏表紙)にアバターが登場するのもあり
        ・未来の自然と調和した街
        ・現実かメタバースかわからない感じ

        画像

        (信じられてしまった……)

        これはとても大事なポイントではありました。
        人を信じる、作風を信じる、という信じ方はあるとおもいますが
        「感覚を信じる」という点で、バランス感覚や遊びの感覚、かっこよさなども委託されつつも、感覚への信頼・信用が相互にかかってくる感じです。

        遊びつつも、襟を正しつつ、世界観と品質と、心象風景の画像化、共有を繰り返していきます。

        最新のVFX技術による実写撮影

        初期の依頼から10日経過、日々の業務の中でもかなり忙しく制作をしている月末の土日のやり取りです。

        画像

        どうやら撮影手法が珍しいことになりそうです。

        画像

        こんな動画が届きました。

        横浜のスタジオWADAYAさんは、デジハリ卒業生による運営です。
        とてもポップで楽しい感じの動画が、撮影環境を見事に説明してくれていて助かりました!

        WADAYA Studio80 https://wadaya.info/

        ちょうどこの8月末はこんな出来事が並列していました

        https://www.bunka.go.jp/seisaku/chosakuken/aiandcopyright.html

        https://youtu.be/bD0Kp5PiP8o

        https://note.com/o_ob/n/ne4d9735ab5cb

        会社として編集長としての制作をバリバリこなしながらも、ちょこちょこ個人としての制作や発信も行っているところが読み取れましたら幸いです。

        本制作のワークフローと「裏側のキャラクター」について

        さて、いよいよ本制作のワークフローです。
        詳細を解説していきます。

        最終的な完成品、表4には印象的な未来都市の夕暮れ、そして小さな人物があしらわれています。

        画像

        これは、サイバネティクス技術を駆使して生き生きとエレキギターを演奏する未来の杉山学長アバターです。人工呼吸器、胸のジェネレーター、義手、顔のマスクなどは私の趣味です。

        画像

        このキャラクターにたどり着くまでのプロトタイプも紹介しておきます。

        美しい猫耳をもったビジュアル系ロックバンドのギタリスト。
        ギターのフレットが別次元になっているのですが、全体的に美しい。

        画像

        元気なお年寄り。これも美しいけどなにか違う。

        画像

        逆に若返らせてみたり、

        画像

        ハッスルさせてみたり。

        画像

        杉山学長の意思として「ALSである現実を、そのまま世間にさらしたいという気持ち」と、この美しくて元気なキャラクターたちは、何か方向性が違うことに気づきます。筋肉に指令を出す神経が難病により歩くことも呼吸すらもできなくなるという現実や、70歳という年輪、そして「市民全員が高度に発達したVision Proのようなデバイスを付ければ、それぞれの人物が観られたい姿に変容して、相手に見え、誰に観られるかによって姿が変わる世界が可能と感じます」というメタバースの30年という歴史を振り返って、私自身と杉山先生の30年を振り返ってみました。

        まず描くべきは、世界。

        未来都市のメタボリズム、自然との調和。そしてオレンジ。
        更に私の中での杉山先生に見え隠れする「ヒッピー文化」(私自身が60年代米国文化に憧れがあったのかもしれません)そういったものをまずはプロンプトにして世界を描いていきます。

        画像

        未来の御茶ノ水ソラシティを思い描いたり、

        画像
        画像

        自然との調和に重きをおいてみたり、何十枚も生成していきます。

        画像

        そうしてベースラインとして選択された1枚がこちらでした。

        画像
        画像
        「水没都市の夕日世界」(S59)

        これで描くべき世界が決まりました。
        作品名は『水没都市の夕日世界』(S59)です。
        「S59」とはシード番号です。同じモデル、同じシード、同じプロンプトで再現性があります。

        仮のレイアウトとトーンを出していきます。

        画像

        ちなみに白井は写真工学の出身であり、白黒写真は高校時代からの積み上げがあります。プロをたくさん輩出した有名な「写真部」に所属し、白黒写真のトーニングやレタッチは3年ほど積み上げがあり、写真作品でちょっとした賞をもらったり、街の現像店を任されるぐらいのスキルはありました。さらにそのバイト代で買ったMacとPhotoshop2.0、2.5、3.0のあたりでデジタルに移行して写真部の仲間からは「異端扱い」されます。それがちょうど30年前の21歳のときに経験した出来事です。漫画を描いたり、ミニコミ誌を作ったり、いまの画像生成AI時代の狂乱に似たようなムーブメントがデジタルクリエイションの世界に起きていました。
        大学4年生のとき、日本バーチャルリアリティ学会設立総会での基調講演で、「デジタルハリウッド構想」をホリプロ所属のバーチャルアイドル「伊達杏子 DK-96」や長野オリンピックでのボブスレーシミュレータなどとともに熱量込めてお話する数学出身の杉山先生との出会いでした。

        https://tachilab.org/jp/addendum/vrsj.html

        まさかその25年後に白井がそこで教鞭をとるとは考えてもいなかったのですが、運命とは不思議なものです。そう、まるで魅力的なバンドメンバーを引き入れていくボーカリストのような杉山先生やその仲間たちを描かねば。
        たとえ使われなくても、リアルだけど、美しすぎず、かつその世界で「わいわいしている」、楽しそうな、コンヴィヴィアリティ※があるキャラクターを描かねば……!

        ※「コンヴィヴィアリティ」については杉山知之先生執筆の「私のコンピュータ文化史 TOKYO1964 – TOKYO2020」という論文を引用しておきます。

        画像
        画像
        画像

        DNA “Entertainment. It’s Everything!”

        https://school.dhw.co.jp/about/dna.html

        創立から30年。
        開学のころからずっと変わらず伝えていることは『すべてをエンタテインメントにせよ!』ということ。
        受講生・卒業生だけでなく、講師・スタッフのモットーでもあります。
        卒業制作のクオリティはもちろん、1回の授業の組み立て方、就職活動のあり方、卒業後の仕事まで、すべてをエンタテインメントになるまで追求する文化がここにあります。
        「すべてをエンタテインメントにする!」という強い思い。それが世界中で活躍する9万人の卒業生に共通するDNAです。

        https://school.dhw.co.jp/about/dna.html

        画像
        画像

        ……と思う存分、遊んでいるように見えるかもしれませんが、実際には大真面目です。しかも激務のさなかです。神奈川県「ともいきメタバース講習会」という障がい者向けクリエイティブワークショップの開発などの現場指揮を行いながらの制作でした。
        全てをエンターテインメントにしないと、やってられないよ!!

        現場撮影用の画像

        さてWADAYAスタジオさんでのLEDディスプレイウォールスタジオでの撮影です。残念ながら白井はワークショップの開発があったので立会はできない日程なので、撮影現場に任せるための素材をお渡しして祈るしかありません。
        3000mm x 1686mmの高輝度高ピッチLEDウォールスタジオを背景に、

        画像

        ここに未来都市を配置して、杉山先生が車椅子でやってきます。

        画像

        専門のライティング担当さんもいらっしゃる。

        画像

        用意すべきはこのレイアウト案を示しつつ、レイヤーを分けた素材もわかりやすく提供する必要があります。しかもスマートに、Google DriveのURLだけでお渡ししたい。

        画像

        Stability AI APIのフル活用

        もともと商用利用できるプロフェッショナル向けAPIでもあるStability AI APIですが、具体的にはこんな使い方もあります。「背景除去」です。

        一見なんということはない「背景除去」なのですが、

        画像

        実はそんなことはありません。
        ウェービーヘアの銀髪は、マスクを切るのがとても大変です。

        画像

        ですが、このマスクは背景除去(Remove background)ですぐに生成できました。もはやPhotoshopよりもGoogle Colabのほうが便利なときもあるのです。

        画像

        さらに印刷原稿を想定して、高解像度化を行っていきます。
        こちらも Stability AIのUpscale機能を使って高解像度化、特にConservative(コンサバ=保守的)なアップスケールを行います。この際は、生成に使ったプロンプトを再利用します。

        hippy style, (photoreal:2), futuristic, orange toned urban sight scene, cyber worlds with a nature fusioned, skyscraper buildings,

        (photoreal:2)とは、Stability AI APIにおける強調構文です。

        画像

        この時点でも高解像度ですが「商業誌の表紙」という、最高品質印刷原稿を想定して、さらにAUTOMATIC1111の Extraを使って高解像度化していきます。

        BG02026-16448×9408.png (186.7MB) という強烈な解像度ですが、ご興味あるようでしたらダウンロードしてみてください。

        全てが終わったのは朝の5時ですね。
        Google DriveのURLをお届けして祈りました。

        画像

        商業誌の制作を「商業政策」と間違えて書くぐらいには疲れていたようですが、「クリエイティブのヤマ」を超えた清々しさが伝わったようでしたら幸いです。

        SD黄色本」で長年お世話になったAUTOMATIC1111の超解像化技術が、最後の最後の品質に貢献したことは特筆に値すると思います。

        全ての画像生成AIの貢献者、オープンソース開発者に感謝を述べさせてください。

        撮影の現場より

        後日談としてWADAYA Studioの和田圭介さんより写真とメッセージが届きましたので紹介させていただきます。

        画像
        画像
        画像
        画像
        画像

        特に問題は無いのですが、僕がデジタルハリウッドを卒業しているわけではなく、創立3年目に入社した、元スタッフです。 デジタルコンテンツについては、杉山先生の教えで、この道にたどり着いたので、杉山先生の教え子であることには間違いないと思います(笑) ある意味、スタッフも含め卒業なんででしょうね。 ありがたいことに退職した後も、杉山先生からはいろいろなご相談お声掛けをいただき、20周年の時は、メッセージ映像を撮影し、そして30周年でこのコラボレーションが実現しているのが、何とも感慨深いのです。 デジハリからいただいた、この3人の縁も含めて、それを活かして何かしていかなければいけないなと、再度えりを正しました。 これからが楽しみです!!

        WADAYA Studio 和田圭介さんより

        (テスト撮影のデータから)

        画像

        どう考えても「Entertainment, it’s everything!」なDNAが感じられる会社紹介ですね。今後もよろしくお願いいたします。

        さいごに:画像生成AIの過去と未来と人類のクリエイティビティの1ページによせて。

        以上、1998年からCGの世界、世界のCGを届け続けてきた「CGWORLD」さんの表紙、しかも日本のCG・デジタルクリエイター教育とともにあるデジタルハリウッドの30周年を記録する特集、さらにそれを最新のLEDディスプレイウォールによるインカメラVFXで撮影するための画像生成AIによる世界素材の提供…というクリエイター冥利に尽きる仕事の一部始終を個人ブログ形式でお送りさせていただきました。

        この30年、テクノロジー、デジタルツール、生成AIによって楽になったこともあります。しかし、クリエイターはその効率化によって生まれた時間を余暇に費やすのではなく、制作やクオリティ、そして「不可能を可能にする挑戦」に費やしていきます。その姿勢は30年経っても何も変わらないと思います。

        さらに、画像生成AIは、世界中の画像という画像を食べて育った化け物です。イラストやデザインだけではありません。写真出身の私にしてみれば、「写真表現とは何か」を常に突きつけられてきた30余年です。Stable DiffusionやStability AIのAPIに何か言いたいことがあるひとはたくさんいると思います。しかし世界中のクリエイティブをLatent Spaceに詰め込んで、高品質、かつ高速なAPIを提供し、新たな人類のクリエイティビティに挑戦させていただいて、さらに商業利用可能であるとなると、それはホビーでもなんでもなく、プロのクリエイターとして勝負せねばなりません。
        ローカルのGPUも、APIのクレジットも、糸目なく投じて、きちんとクリエイターとしてCGの歴史に爪痕を残す仕事ができたようであれば幸いです。

        なお、公開当初からのStable Diffusion、そしtStability AIのAPIの使い手としてはこの技術を伝承するために、毎日のように個人ブログやAICU mediaを通して解説を発信していることはお気づきかと存じます。

        さらに、こちらの動画教材としてはColosoからこちらのラーニングメディアで公開予定です。
        ■「超入門:Stable Diffusionではじめる画像生成AI」
        https://j.aicu.ai/AICUXColosoJP

        書籍「画像生成AI Stable Diffusion」(SD黄色本)もおかげさまで好調であり、まだまだお問い合わせやサポートなどを通して読者の皆様と交流させていただいております。

        今後、広告、グラフィックス、ゲーム、漫画やアニメといった分野に画像生成AIは一般的に使われるようになるでしょう。

        その時に、これらの作品は、枯れ葉や土壌のような存在になっている事でしょう。それでいいんだとおもいます。
        でも、クリエイティブAIの使い手として、大事なことは道具や、その使い方だけじゃないんです。
        「おもしろそうだな」「やってみよう」「すごいね」「かっこいいね」「おもしろいね」「もっとすごいものがつくれそう」「ぼくもやってみたよ」そういった「つくる人をつくる」という心に火を付ける活動そのものが、きちんと作品を通して他の人の心に伝わったか?それが大事なんです。

        そしてクリエイターの世界は真剣です。偉かろうが、社会的に立場があろうがなかろうが、上手であったり、美しかったりも大事ですが、それだけではなく、最終的なアウトプットにどれぐらいのピクセルが露出するのか、しないのかといった効率だけでなく、その世界とか、メッセージとか、コンテキストとか、モチベーションとか、恥ずかしがらずに馬鹿になってやり続けることが、とても大事だったりします。

        デジタルハリウッド30周年、「CGWORLD」26周年、おめでとうございます。今日、本誌が物理的に届きましたが、その重さ、厚さ、関わった人の多さとニオイに咽んでおります。今後とも、この分野の皆様のご健勝ご盛栄をお祈り申し上げますとともに、この個人ブログの筆を置きたいと存じます。

        謝辞:ご依頼いただいた杉山知之先生、クレジット、およびCGWORLD本誌に掲載できなかったメイキング公開へのご快諾、また本寄稿へ「CGWORLD」のロゴ利用などご許諾いただきましたCGWORLD編集部の藤井さま、ありがとうございました。
        Stable Diffusion開発チーム、Stability AI APIおよびStability AI Japanの皆様、特にご支援いただいたJerry Chiさん、ありがとうございました。この場をお借りして感謝の意を記させていただきます。

        Thank you to the all of Stable Diffusion development team, Stability AI API and Stability AI Japan, and especially to Jerry Chi for your support. I would like to take this opportunity to express my gratitude.

        AICU Inc. 代表・白井暁彦, Akihko SHIRAI, Ph.D (@o_ob)

        画像

        ▼デジタルハリウッド 創立30周年記念ページ

        https://www.dhw.co.jp/30th

        ▼杉山先生の音楽ブログ「Sound Scape of Mojo」
        画像生成によるカバーアートも見どころですね!

        https://note.com/mojo_sugiyama/n/n600cce7f4b69

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

      1. 日本語で魔法のようにGAS開発がはかどる「GASSISTANT」

        2024年10月7日、日本語で魔法のようにGASコーディングがはかどる「GASSISTANT」(ガシスタント)なるツールがリリースされました。

        https://gassistant.vercel.app

        開発したのは日本人の横田大伍さん(@daigo_3_8)。

        https://note.com/chaen_channel/n/n0be3b13a0e04

        これはよさそう、と思ったのですが、一方で「実際にお役に立ちそうなGASのユーザー、特にローコードと初心者の間を行ったりきたりするようなGASコーディングですら難しい人にはちょっととっつきづらそう…」、そして、逆に「ClaspのようなTypeScriptでGASを書いている人」にも「とっつきづらそう…」という印象もありました。これは試さねば。

        ★このあたりは開発者の横田さんよりメッセージを頂いております(文末)

        なおAICU media編集部やAIDX Labには しらいはかせをはじめとして10年来のGAS開発者がいます。普段からClaudeのArtifactsや、vercel「v0」のような対話型のコード支援環境も使っていますが、ストレスもあります。ブラウザのタブをいったりきたりする必要がありますし、時々「全文を出力して」といったお願いをしないと、コードの差分に悩まされることも多々ありました。CursorやCopilotのようなコード補完だけでなく、GitHubのdiffを見ながら、相談しながらテスト環境を動かしてデプロイからテストまで実行していきます。しかもこの方法ではコードが視界を通過しているだけで、頭の中で判断として残りません。AIがアシストしているわりに、危険なコードが大量に生成される可能性もあります。

        GASSISTANTはそんな悩みを解決してくれそうです。AIがコードの提案からデバッグまでを自動で行ってくれるので、コーディングが驚くほどスムーズになることを確認できました。

        実際に使ってみた!

        まず、個人のGmailアカウントを使って、テスト用にひとつGoogle Spreadsheetを作りましょう。実験用にGASSISTANTというスプレッドシートを作成して、拡張機能→Apps Scriptでエディタを開きました。

        画像

        GASエディタのURLを設定する準備をします。URLの赤い部分がスクリプトIDですが、URLそのものをコピーして貼り付けると、GASSISTANTのエディタ側でIDをリンクしてくれますので、これで準備OKということになります。

        画像

        GASSISTANTにGoogleアカウントでログインし、GASSISTANT のプライバシー ポリシー利用規約をご確認ください。

        なお、初回はチュートリアルが起動しますので、いったんスキップするか終わらせるかしてみてからでなければ設定に入れません。軽くチュートリアルの内容を紹介します。

        画像

        右下のチャット窓に相談をすると解説とともにGASのコードが生成されるようです。

        画像

        左側のエディタ画面に提案が表示されます。
        全て反映するか、断るかを個々のコードブロックで選べるようです。
        GitHubでのDiffよりも便利かもしれません!

        画像

        コードの提案を反映させたら「保存してデプロイ」を押します。数秒待つと保存が終わります。

        画像

        「実行して自動修正」を押すと、右のチャット履歴にテストデータが投げられ、実行されている様子が見えます。

        画像

        右のチャット履歴にはコードの「反映」や「コピー」、そして説明やテストパラメータのJSONが表示されます。

        画像

        ※チュートリアルとしては、ここで「反映」ボタンを押すと進みます。
        (チュートリアルから抜けられなくて慌てました)
        追記:このあたりは早速改善が入ったようです!

        画像

        さて、丁寧なチュートリアルは終わりです。
        用意した「GASSISTANT」スプレッドシートのエディタからURLを貼り付けましょう。

        画像

        ちなみにチュートリアルが終わった時点で300クレジットが279クレジットになっていました(汗)

        アップグレードすると月額2980円だそうです。クレジットが増えるのか、使い放題になるのかは、まだよくわかりません(問い合わせしました!文末に回答をまとめています)。

        画像

        Slack通知機能を追加してみた

        チュートリアルは「A列にメールアドレスの束があるのでメールを送信して」というお願いでコードが生成されていました。
        追加のリクエストとして、以下のようなリクエストを右下のチャット窓に打ち込んでみました。

        実行開始時と終了時にSlack通知。WebHookのエンドポイントはScriptPropertiyの SLACK_WEBHOOK_URL で指定します。

        GASSISTANTからの返答は以下の通りでした。

        • Slackに通知を送信するために、Google Apps ScriptにSlackのWebhookを使用するコードを追加しましょう。以下のコードでは、メール送信の開始時と終了時にSlack通知を送信するようにしています。
        • コードブロック
        • 説明: `sendSlackNotification`関数を追加し、SlackのWebhook URLを使ってメッセージを送信します。`PropertiesService.getScriptProperties().getProperty(‘SLACK_WEBHOOK_URL’)`でWebhook URLを取得します。事前にScript PropertiesにこのURLを設定しておく必要があります。メール送信の開始時と終了時にそれぞれSlackに通知を送信します。 このコードを使う前に、Script Propertiesに`SLACK_WEBHOOK_URL`を設定してください。これにより、指定されたSlackチャンネルに通知が送信されます。

        以下が生成されたコードです。

        function sendEmails() {
          const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
          const lastRow = sheet.getLastRow();
          const emailColumn = 1; // A列
        
          // メールの件名と本文を設定
          const subject = "件名をここに入力";
          const body = "本文をここに入力";
        
          // Slack通知: メール送信開始
          sendSlackNotification("メール送信を開始します。");
        
          for (let i = 1; i <= lastRow; i++) {
            const emailAddress = sheet.getRange(i, emailColumn).getValue();
            
            if (emailAddress) {
              try {
                MailApp.sendEmail(emailAddress, subject, body);
                logEmailStatus(emailAddress, "送信成功");
              } catch (error) {
                logEmailStatus(emailAddress, `送信失敗: ${error.message}`);
              }
            }
          }
        
          // Slack通知: メール送信終了
          sendSlackNotification("メール送信が完了しました。");
        }
        
        function logEmailStatus(email, status) {
          const logSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("AI Log");
          if (!logSheet) {
            // "AI Log"シートが存在しない場合は作成
            logSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet("AI Log");
          }
          logSheet.appendRow([new Date(), email, status]);
        }
        
        function sendSlackNotification(message) {
          const webhookUrl = PropertiesService.getScriptProperties().getProperty('SLACK_WEBHOOK_URL');
          if (!webhookUrl) {
            Logger.log("Slack Webhook URLが設定されていません。");
            return;
          }
        
          const payload = JSON.stringify({text: message});
          const options = {
            method: 'post',
            contentType: 'application/json',
            payload: payload
          };
        
          UrlFetchApp.fetch(webhookUrl, options);
        }

        コードの差分に「Accept」「Reject」が表示されています。

        画像

        どれも大丈夫そうなコードですが、いちおう一つづつ確認して「Accept」してもいいですし、画面上にある「すべて適用」を押してもいいと思います。日本語UIは新鮮ですね!

        「保存してデプロイ」を押してみます。確認のために本家GASのコードエディタの方をリロードしてみると、反映されているようです。

        画像

        なお、従来通りのGASエディタでのコード修正も問題なくできそうです。修正して保存したあとはGASSISTANT側の「同期」で現在のコードを吸い上げることができます。
        ちょうど 「Google Apps Script GitHub アシスタント」に動作が近いと思いました。

        https://chromewebstore.google.com/detail/google-apps-script-github/lfjcgcmkmjjlieihflfhjopckgpelofo?hl=ja

        さて、スクリプトプロパティにSlackのWebHookのURLを指定する機能はなさそうなのでGASエディタ側で設定します。

        画像

        「プロジェクトの設定」から「スクリプトプロパティ」で自分が決めた「SLACK_WEBHOOK_URL」を設定します。このURLはSlack上でIncoming Webhookを設定することで取得できます。

        画像

        ここでは別のプロジェクトの開発で使ったボットのIncoming Webhookを再利用しています。

        GASSISTANTに戻って「実行して自動修正」を実行します。するとアラートが出て実行が止まりました。

        画像

        外部(Slack)にアクセスする処理を加えたので当然、新たな権限承認が必要になったようです。GASエディタに行って権限を確認してきます。
        デバッグ実行を行って、権限承認ダイアログから、

        画像

        左下の「無題のプロジェクト(安全ではないページ)に移動」を選んで権限の許可を実施します。

        画像

        これでA列にメールアドレスを書いておけば、メールも無事に送信できるようになります。誤爆に注意しましょうね。
        このへんで終わっておけばいいのですが、さらに「実行して自動修正」を押すと、なんだか更に改善したいようです。

        エラーメッセージから、`doGet`関数が見つからないことが原因でエラーが発生していることがわかります。このため、`doGet`関数を追加して、GETリクエストからパラメータを受け取り、`sendEmails`関数を呼び出すようにします。 以下は修正されたコードです。

        画像

        最終的にはdoGet(e)関数から sendEmails(subject, body)を呼ぶ形になりました。テストJSONを受け取るにはこのほうが良いかもしれませんね。

        デバッグ結果を見ると、GETリクエストを使用してメールが正常に送信され、スプレッドシートの「AI Log」シートに送信結果が記録されています。すべてのメールが「送信成功」となっており、特に問題は見られません。 現時点でコードに改善が必要な箇所はありません。メール送信機能が期待通りに動作していることが確認できました。このまま引き続きご利用いただけます。 もし追加で何か特定の改善点や機能追加のリクエストがあればお知らせください。

        function doGet(e) {
          const subject = e.parameter.subject || "件名をここに入力";
          const body = e.parameter.body || "本文をここに入力";
          
          sendEmails(subject, body);
          
          return ContentService.createTextOutput("メール送信が完了しました。");
        }
        
        function sendEmails(subject, body) {
          const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
          const lastRow = sheet.getLastRow();
          const emailColumn = 1; // A列
        
          // Slack通知: メール送信開始
          sendSlackNotification("メール送信を開始します。");
        
          for (let i = 1; i <= lastRow; i++) {
            const emailAddress = sheet.getRange(i, emailColumn).getValue();
            
            if (emailAddress) {
              try {
                MailApp.sendEmail(emailAddress, subject, body);
                logEmailStatus(emailAddress, "送信成功");
              } catch (error) {
                logEmailStatus(emailAddress, `送信失敗: ${error.message}`);
              }
            }
          }
        
          // Slack通知: メール送信終了
          sendSlackNotification("メール送信が完了しました。");
        }
        
        function logEmailStatus(email, status) {
          const logSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("AI Log");
          if (!logSheet) {
            // "AI Log"シートが存在しない場合は作成
            logSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet("AI Log");
          }
          logSheet.appendRow([new Date(), email, status]);
        }
        
        function sendSlackNotification(message) {
          const webhookUrl = PropertiesService.getScriptProperties().getProperty('SLACK_WEBHOOK_URL');
          if (!webhookUrl) {
            Logger.log("Slack Webhook URLが設定されていません。");
            return;
          }
        
          const payload = JSON.stringify({text: message});
          const options = {
            method: 'post',
            contentType: 'application/json',
            payload: payload
          };
        
          UrlFetchApp.fetch(webhookUrl, options);
        }

        さらに追加機能を実装していく…!

        この時点で「残りクレジット: 119」となりました。まだまだ無料で遊べそうです。さらなる改造をしてみましょう。

        ・B列には送信相手のフルネーム、C列には送りたいメッセージの本文が入ります。
        ・D列には送信日時を入れてください。
        ・Webhookには送信者名、メールアドレス、送信内容を1件毎通知してください。
        ・全体の処理の件数と所要時間を計測してレポートしてください。
        ・いちど送信した相手には2週間以上期間をあけてから送信してください。
        ・毎週火曜日朝9時に実行するトリガーを設定してください。

        こんな感じに実行できました!メールも届いています!

        【送信履歴が付いたスプレッドシート】

        画像

        【Slackでの通知】

        画像

        気になった点

        基本的にはよくできていると思いました!
        ・クレジットが何なのか、月額プランが何なのかよくわからなかった(わかれば課金したい気持ちも出てきます!)
        ・実行したい関数が何なのか、軽く指定できるといいのかもしれないです。この例でもdoGetに落ち着くのはいいことかなと思いますが、一方でトリガー設定は実行されていませんでした。実行しようとするとGASエディタからマニュアル操作になるし、権限承認ダイアログもあるのでこれでいいのかもしれません。

        画像

        ・改善が終わらない。
         「実行して自動修正」というボタンの都合上かもしれないのですが、方向感なく改善を続けてしまいがちです。コードを評価したり「これで完成です」といってGitPushしたりする機能があるといいのかも。

        ・一度許可したシートへのアクセスを解除する方法がわからない。
         このままだとコードが固定できないので本番運用には問題があるかもしれません。データを外部に漏らさないためにもシートへのアクセスを解除したいところです。もしくは生成したコードを本番用に移植するといった作業は必要かもしれませんね。

        おまけ「GASSISTANT Opener」

        同じ作者さんが開発したChrome拡張です。
        GASエディタを開くとGASSISTANTを開けと言われ続けるようになります。

        https://chromewebstore.google.com/detail/gassistant-opener/nhkidgdaohjomakblaafjblkphnlmije

        GASエディターを開いたらGASSISTANTを開く提案をします

        GASSISTANT(https://gassistant.ai-zen.co.jp/)は初期設定が最小限に抑えられていますが、スクリプトID設定は手動で行う必要があります。 この拡張機能では、GASエディタからGASSISTANTを開きスクリプトIDを設定するフローが自動化されているため、ワンクリックでGASSISTANTを使い始めることができます。

        便利もありますが、不便になる要素もあるかも!?
        今後のアップデートに期待です。

        追記:開発者さんに聞いてみた!

        早速ご返信いただきました。

        料金について

        アップグレードすると即時3000クレジットに増加し、以降毎月3000クレジット付与されます。
        なおクレジットは追加ではなく、毎月3000にリセットされる形です。
        また、アップグレードするとAIの処理を自分のDify上でホストすることが可能になります。
        この設定をした場合、クレジットは消費されません(Dify側でAPI利用料がかかります)。

        セキュリティについて

        秘匿情報の取り扱い・Webアプリとして公開するなどの自明なリスクについては開発者に任せる想定でしたが、より丁寧な運用ガイドも用意すべきだと感じています。

        想定ユースケースについて

        想定ユースケースはclaspを使うほどでもない規模の開発です。

        本番運用でGASSISTANTを使う際は、セキュリティ面で言うとアップグレードしてDifyをセルフホスト、後日実装する実行可能APIでのデプロイをお勧めしております。

        セキュリティについて

        セキュリティについても引き続き注視し、安心してお使いいただけるようリスク低減に努めてまいります。

        GASSISTATN開発者

        まとめ

        GASSISTANTは、GASコーディングを劇的に効率化する革新的なツールです。GASコーディング初心者から中上級者まで、幅広い人におすすめできる感じがあります。いわゆる「ひとり情シス」みたいな方には強い味方ですね!

        アップグレードすると自分のDify上で使えるのはいいですね。
        機密情報の取り扱いや開発のワークフローなども理解して使えば、かなり革新的なAI活用ができそうです!

        注意

        GASSISTANT のプライバシー ポリシー利用規約をご確認ください。
        ※AICU編集部注:Google Apps Script経由で外部ツールを使って個人情報や売上情報を扱うような用途になる場合は特に注意して読んで理解してから試用することをおすすめします。内部で使用されているLLMの動作やログの収集内容、組織のポリシーによっては利用に適さない可能性もあります。(本稿に限らず)AIの使用による事故や過失の責任は使用者にあります。また積極的に開発者にお問い合わせしましょう。

        GASSISTANT – AIネイティブなGASエディタ
        https://gassistant.vercel.app
        https://gassistant.ai-zen.co.jp/

        【予告】「GASSISTANT」についてはAICU Magazine「 #サクッと先取り !クリエイティブAIツール」のコーナーでも扱っていきたいと思います!

        #サクッと先取り !クリエイティブAIツール #AICUmagazine
        #GASSISTANT  #GAS #GoogleAppsScript

        https://j.aicu.ai/MagV5

        https://j.aicu.ai/MagV4

        https://j.aicu.ai/MagV3

        https://j.aicu.ai/MagV2

        https://j.aicu.ai/MagV1

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

      2. 【超初心者向け】DreamStudioを無料で試してみよう – 画像生成レッスン

        超初心者向け動画で解説する「画像生成レッスン」。「つくる人をつくる」AICUでは、2022年の夏に始まった画像生成AIのイノベーションを子どもでもわかる言葉で一気に学べる無料動画シリーズを公開しています。
        今回リリースした動画は、DreamStudioとStability AIの開発者向けプラットフォーム「Stability AI API」です。特にDreamStudioを無料で試してみたいと思います。

        DreamStudio https://dreamstudio.ai/

        Stability AI API https://platform.stability.ai/

        Stability AIは画像生成AIの分野で最初に有名になった会社です。

        このプラットフォームでは、Stable Diffusion 3 APIという最先端のAPIが提供されています。APIとは、アプリケーションプログラミングインターフェースの略で、アプリケーションを開発するためのインターフェースです。つまり、画像生成を行うためのインターフェースと考えてください。

        このAPIを使うと、GPU搭載のPCなど高性能なマシンがなくても、高速で高品質な画像生成が可能です。GPU搭載のPCでは数十分かかる画像生成が、わずか数秒で完了するほど高速なのです。

        APIキーの取得

        プラットフォームにアクセスしたら、Googleアカウントでログインします。

        https://platform.stability.ai

        ログインすると、APIキーを取得することができます。初回登録時には、25クレジットが無料で付与されるので、実際に画像生成を試すことができます。購入する場合は10ドルで1000クレジットです。

        APIキーは、Stability AIのアカウント設定から取得できます。

        APIキー取得画面  https://platform.stability.ai/account/keys

        画像

        APIキーは、クリップボードにコピーして保存しておきましょう。このキーを使って、Stability AIのサービスを利用します。

        DreamStudio

        APIキーを取得したら、いよいよDreamStudioにアクセスしてみましょう。DreamStudioは、画像生成AIの初期段階から使用されているアプリケーションです。

        DreamStudio https://dreamstudio.ai/

        最近は Stable Assistant も並列して開発されており、こちらは3日間無料で使用できます。

        DreamStudioでは、Stable Diffusion XL (SDXL) を使って、画像生成を試すことができます。

        利用規約について

        DreamStudioを利用する前に、利用規約をよく読んでおきましょう。特に、無料とはいえ、画像生成の利用規約は、かなり重要です。

        画像
        スクリーンショット:利用規約の翻訳

        https://dreamstudio.ai/terms-of-service

        Stability AIはイギリスの会社なので、ヨーロッパ基準の厳しい規約になっています。特に重要なのが、クリエイティブMLオープンライセンスです。このライセンスは、画像生成の世界では非常に重要なものであり、画像生成AIによって生成された画像の利用方法を定めています。

        禁止されている行為

        利用規約では、以下のような行為が禁止されています。

        • 第三者のプライバシーやパブリシティの権利を侵害すること
        • 犯罪、わいせつ、児童搾取を助長するコンテンツを生成すること
        • 人間の尊厳、人種、民族、宗教、性別の差別や中傷的なコンテンツを生成すること
        • ディープフェイクなどの偽物のコンテンツを生成すること
        • 他人を傷つけたり、迷惑をかけたりするようなコンテンツを生成すること

        許可されている行為

        逆に、利用規約では、以下のような行為が許可されています。

        • 個人的な利用目的での画像生成
        • 商業的な利用目的での画像生成(ただし、利用規約に準拠する必要がある)

        DreamStudioの使い方

        DreamStudioでは、プロンプトを入力することで、画像を生成することができます。プロンプトとは、画像生成AIに指示を与えるためのテキストのことです。

        DreamStudioでは、プロンプトの入力以外にも、スタイルや解像度などを設定することができます。

        プロンプトの例

        ChatGPTを使うことで、1つのプロンプトをもとに、英語でのプロンプトも難なく大量生成できます。

        画像

         # 命令
        Stable Diffusion, DreamStudioで画像生成をします。
        プロンプトを10個作ってください。

        # やりたいこと
        ・先程の課題を引き継いで(別の話題がすでにある場合)
        ・イマジネーションのヒントになるような画像
        ## sample prompt
        Giant redwoods in a misty forest, with towering trees and lush vegetation, peaceful, serene, high detail, forest landscape

        なお、もとのプロンプトはDreamStudioに与えられていた「霧に包まれた森の中の巨大なレッドウッド、そびえ立つ木々と青々とした植物、平和、静寂、ハイディテール、森林風景」というプロンプトです。

        生成されたプロンプトから未来都市を描くことができました。

        画像

        まとめ

        DreamStudioは、2022年からリリースされており、現在でもユーザーが多い無料で試せる画像生成AIのサービスです。SD1.6やSDXLでを使って手軽に画像を生成することができます。利用規約をよく読んで、理解して、安全に楽しく利用しましょう。

        #画像生成レッスン
        #超初心者向け #画像生成AI #生成AIと倫理

        Colosoでフルバージョンが観れます!
        「生成AIクリエイティブ AICU」シリーズ

        ■超入門:Stable Diffusionではじめる画像生成AI

        https://j.aicu.ai/AICUXColosoJP

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

      3. 【超入門】Stability AI APIの革新的機能(2)Edit APIの活用

        この記事では、Stability AI APの革新的機能「Edit API」について解説します。

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

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

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

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

        前回はEdit APIからInpaintとOutpaintを紹介しました。

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

        プロンプトの文法」編でもご紹介したように、Stability AI APIの画像生成系の機能は2024年10月現在、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

        今回扱うSearch & Replace、Erase、 Search and Recolor、Remove backgroundは、このうちの「Edit API」に当たります。

        Edit APIの6つの機能

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

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

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

        全部で5つのEdit機能が公開されています。

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

        Search & Replace機能とは?

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

        Search & Replace機能サービスは、マスクを必要としないインペインティングの特殊バージョンです。ユーザーは「search_prompt」を使って、置き換えたいオブジェクトを簡単な言葉で特定することができます。 サービスは自動的にオブジェクトを分割し、プロンプトで要求されたオブジェクトに置き換えることができます。

        実際にSearch & Replaceを使ってみよう!

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

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

        動画でみたい方はこちら

        https://j.aicu.ai/AICUXColosoJP

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

        Edit機能を使う際は、Colabに画像をアップロードし、その画像パスを取得する必要があります。

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

        画像

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

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

        画像

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

        Erase Object機能とは?

        Erase Objectサービスは、画像マスクを使用して、肖像画のシミや机の上のアイテムなど、不要なオブジェクトを削除します。 マスクは2つの方法のいずれかで提供されます
        (1)「mask」 パラメータ経由で別の画像を明示的に渡す。
        (2)「image」 パラメータのアルファチャンネルから派生させる。

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

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

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

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

        まずは、元画像のパスを取得しましょう。
        マスクを必要とする機能を使う場合、マスク画像とピクセルがずれた画像を入力したり、本来の画像とは関係のない部分(画像をGoogle Slideなどに貼り付けた場合の余った余白の部分など)を含む画像を入力すると、マスク画像とうまくリンクせずに画像が揺れてしまうことがあります。
        そのため今回は、Google Slideを使って丁寧にマスクをしていきます。
        まず、今回使うinpaint対象の元画像がこちらです。

        画像

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

        画像

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

        画像

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

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

        元画像に、Google Slideの機能を使って白い丸を乗せて、マスクしました。
        これはまだ「マスク画像」ではないので、注意してください。

        画像

        次に、先ほどと同じように、背景を黒に設定します。
        重要な工程なので、スキップしないようにお願いします。
        背景が黒に設定できたら、元画像を削除し、黒背景とマスクのみが残る状態にしてください。

        画像

        ここまで完了したら、ファイル>ダウンロード>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:いざ、実行!

        さあ、画像を生成してみましょう。
        得られた画像が、こちら!

        画像

        Search and Recolor機能を使ってみよう

        Search and Recolorは新しく登場した機能です。まずはサンプルどおりの結果を見ていただくのが良いと思います。

        画像
        画像

        select prompt”chiken”をprompt”green chiken”で置き換えています。

        画像

        つまり、髪色の置き換えなども簡単にできます。

        画像
        画像
        画像

        Remove background機能とは?

        こちらもサンプルどおりに実行してみます。
        プロンプトは特にありません。自動で背景が削除されます。

        画像

        Google Slidesで背景に文字を打ってみました!

        画像

        以上、Stability AI APの革新的機能、「Edit API」について解説しました。

        みなさんの使いこなしアイディアがありましたら X@AICUai でお寄せください

        こちらの動画ラーニングメディアで詳しく紹介していきます!
        「生成AIクリエイティブ AICU」シリーズ
        ■超入門:Stable Diffusionではじめる画像生成AI 

        https://j.aicu.ai/AICUXColosoJP

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

      4. [ComfyMaster22] レイアウトそのままにアニメを実写化!image-to-imageとスタイル変換で実写化レベルを制御

        アニメ風のイラストを、レイアウトそのままに、実写化したいと思ったことはありませんか?ComfyUIのimage-to-imageでスタイル変換と実写化レベルのコントロールを使いこなしてみましょう。

        ComfyUI マスターガイド」第22回は、image-to-image (i2i)の応用編です。以前、スタイル変換について説明しました。

        今回は、i2iでのスタイル変換をさらに掘り下げて、denoiseの値がi2iの生成結果にどのような変化を与えるのかを確認してみたいと思います。

        前回はこちら
        ▶[ComfyMaster21] ComfyUIのAPI化 – Websocketで外部保存

          1. 今回の目的: 犬のイラストを「レイアウトをそのままに」実写に変換

          画像

          今回は、i2iで犬のイラストを「レイアウトをそのままに」実写に変換します。変換元の犬のイラストをLatentに変換し、それをKSamplerノードのLatentに入力することで、元の画像の特徴を保持しながら生成を行います。

          スタイルの変換には、モデルとプロンプトの影響が大きいです。そのため、モデルには実写に強いモデルを利用し、プロンプトには「realistic, photorealistic」といった生成画像が実写になるようなプロンプトを入力します。

          そして、今回は、KSamplerのdenoiseの値の変化による生成結果の違いを比較します。denoiseの値がどのような変化を与えるのかを確認してみます。

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

          モデル

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

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

          変換元画像

          変換元画像には、以下の犬のイラストを使用します。

          画像

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

          https://note.com/api/v2/attachments/download/1988f0a474e2e82c2d1527822db10c53


          [おしらせ]【Coloso講座】ComfyUIマスター:カスタムノードとアプリ開発

          https://j.aicu.ai/Coloso3

          ブログや書籍といった文字で読みたい方に加えて「動画で学びたい!」という方に向けて、Coloso x AICUコラボ動画コンテンツ第3弾「ComfyUIマスター:カスタムノードとアプリ開発」を開発しています。
          詳しくはこちら


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

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

        1. 【Coloso講座】ComfyUIマスター:カスタムノードとアプリ開発

          Colosoとコラボ製作第3弾

          生成AIクリエイティブ集団 AICU が贈る、ComfyUIマスター講座!
          画像生成AIの最前線を行くツール「ComfyUI」を徹底的に使いこなすための、実践的なオンライン講座が登場しました。

          詳細はこちら
          「生成AIクリエイティブ AICU」シリーズ
          ■ComfyUIマスター:カスタムノードとアプリ開発

          https://j.aicu.ai/Coloso3

          講座の特徴

          • 基礎から応用まで!画像生成に必要なAIスキルを習得:
            初心者にも分かりやすい丁寧な解説からスタートし、徐々に高度なトピックへと進むカリキュラム設計。環境設定から、text2image、image2image、ControlNet、LoRA、API開発まで、ComfyUIの機能を網羅的に学習できます。
          • 実践的なアプリケーション開発を通した技術の応用:
            講座後半では、VFXパイプラインやAPIの利用、LINEチャットボットの開発など、実際のアプリケーション開発に挑戦!学んだ知識を活かして、 すぐに仕事に役立つ実践的なスキルを身につけることができます。
          • 生成AI時代の著作権と倫理、そして今後の展望:
            生成AIを取り巻く法的・倫理的な問題、そして今後の展望について深く考察。AI技術を正しく、責任を持って活用するための知識と実践的なガイドラインを学び、持続的な創作活動を行うための基盤を築きます。

          講座内容

          • 基本的なワークフローの理解と構築
          • 高度な画像生成技術の習得
          • プロンプトエンジニアリングと画像の最適化
          • API統合と自動化
          • 実践的なアプリケーション開発と統合
          • 責任あるAI活用のための倫理と未来予測

          受講対象

          • 画像生成AIに興味のある方
          • ComfyUIをもっと使いこなしたい方
          • AIスキルを身につけて、これからの時代に活躍したい方
          • デザイン、アート、広告など、クリエイティブな仕事に携わっている方
          • 業務で画像生成AIを活用したい企業クリエイターの方

          【講師紹介】


          [早野康寛] DX支援企業「ポノテク株式会社」代表取締役、ChatGPT登場以来、生成AIの情報を追い続け、画像生成AIを中心に実用的な情報発信や社会実装に尽力。

          こんにちは、早野康寛です。DX支援をするポノテク株式会社の代表取締役を務めています。ChatGPTの登場以来、生成AIの情報を追い続け、今は画像生成AIを中心に実用的な情報の発信や、生成AIの社会実装に尽力しています。また、画像生成AIの情報を発信する中で、AICU Inc.と関わりを持ち、ComfyUI連載「ゼロから学ぶComfyUI」に掲載する記事の執筆や、先日、渋谷で開催されたComfy Org公式ミートアップでの発表などを行っています。

          連載「ゼロから学ぶComfyUI」より
          [ComfyMaster20] ComfyUIの高度インペイント技術で自然な髪型変更を実現! https://ja.aicu.ai/comfymaster20-20240920/

          【経歴/受賞歴】
          2024年 Bond University MBA取得
          2023年 Ponotech Inc. CEO
          2020-2021年 数億円のM&Aの売り手側を担当
          2019-2023年 ソフトウェア開発企業にて受託開発のリーダーを務める
          2018年 半導体製造装置の量産化対応を担当
          2013-2016年 海外向けプレス機械の制御設計として活躍

          早野康寛 ポノテク株式会社 代表取締役
          X (Twitter) https://x.com/earlyfield8612

          [白井暁彦] 生成AIクリエイティブ「AICU」代表、AICU media編集長。デジタルハリウッド大学大学院特任教授、エンタメ・メタバース技術研究者、ホワイトハッカー作家。

          こんにちは、白井暁彦です。エンタメ・メタバース技術の研究開発に携わりながら、ホワイトハッカー作家として活動しています。また、デジタルハリウッド大学大学院の客員教授と、デジハリ発の国際スタートアップ企業「AICU Inc.」のCEOを務めています。そして、生成AI 時代に「つくる人をつくる」をビジョンに、英語と日本語、フランス語、プログラミング言語などで、オープンな作家活動を続けています。

          【経歴/受賞歴】
          2023年 デジタルハリウッド大学大学院 特任教授
          2023年 AICU Inc. CEO
          2018-2023年 グリーグループでメタバースの研究開発ディレクター
          2018年 デジタルハリウッド大学大学院 客員教授
          2010-2018年 神奈川工科大学 情報学部 情報メディア学科 准教授
          2008-2010年 日本科学未来館 科学コミュニケーター
          2004-2007年 フランス国立工芸大学ENSAM客員研究員
          2003-2007年 NHK-ES研究員にてバーチャルセット技術研究
          2003年 東京工業大学 総合理工学研究科 知能システム科学にて博士取得
          1998-2001年 キヤノングループで英国リアルタイムグラフィックスエンジンの開発

          【主な著書】
          – 2024年 『画像生成AI Stable Diffusion スタートガイド 』(SBクリエイティブ)
          – 2022年 『AIとコラボして神絵師になる 論文から読み解くStable Diffusion』(インプレスR&D)

          白井暁彦 AICU Inc. CEO / デジタルハリウッド大学大学院特任教授
          X (Twitter) https://x.com/o_ob

          【講師陣のメッセージ】

          早野 康寛: ComfyUIは、コードを書くことなく誰でも簡単に画像生成AIを活用できる、非常に優れたツールです。本講座は、エンジニア、デザイナー、クリエイター、研究者など、さまざまなニーズに対応できるよう設計されています。初心者の方でも、講座を通してComfyUIをしっかりと習得し、思い描いた画像を自由に生成できるようになるでしょう。ぜひご受講ください!

          白井 暁彦: Colosoさんとのコラボ企画第3弾は「ComfyUI」です。ComfyUIを触り始めて約1年。Automatic1111をキャッチアップした「SD黄色本」のときは「まだ早すぎる」という判断があったのですが、画像生成からシステム開発まで広範な内容を動画でわかりやすい教材として開発を進めています。
          もちろんお気づきのように「ゼロから学ぶComfyUI」の連載でのノウハウが生きています。「つくる人をつくる」AICU mediaとともに沢山の方々に応援されているこの連載が、さらに動画ラーニングメディアとして、世界中の方々に「わかるAIを届ける」活動としてお届けできることを嬉しく思います。

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

          AICU開発! 本講座だけの特典

          • AICUによるComfyUIの知識が詰まった講座動画24講を期間制限なしで受講可能
          • 講座を通して12個の課題を通してAIスキルを習得
          • 講座で使用するワークフローを含むPNGデータなどの資料を提供
          • 画像生成ワークフロー集
          • AICUのノウハウが詰まったPDF資料を提供

          今すぐ予約して、ComfyUIマスターを目指そう!

          2024/10/5 (土) に販売価格が上がります。
          今ならお得な割引価格で受講できます。

          さらに、今なら先着100名様限定で、この講座限定で5,000円割引が受けられるシークレットクーポンも使えるみたいです!ぜひチェックしてください。

          【クーポン情報】
          ●割引金額:5,000円
          ●クーポンコード:[AICU3SECRET]
          ●使用期限:9月30日~10月7日23時59分まで

          詳細はこちら

          「生成AIクリエイティブ AICU」シリーズ
          ■超入門:Stable Diffusionではじめる画像生成AI
          https://j.aicu.ai/AICUXColosoJP
          ■初級者:広告企画から動画制作までのプロセス
          https://j.aicu.ai/ColosoJPXAICU
          ■ComfyUIマスター:カスタムノードとアプリ開発
          https://j.aicu.ai/Coloso3


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

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

        2. [ComfyMaster21] ComfyUIのAPI化 – Websocketで外部保存

          「ComfyUIをサービスに組み込みたい!」
          そんな方は、ComfyUIをAPI化すればOK!ComfyUIは、最初からAPI化する機能を持っているので簡単です!

          ComfyUIを自社のサービスに組み込むための基本テクニックは、先日、渋谷で開催されたComfyUIミートアップでも話題になりました。

          こんにちは、AICU media編集部です。
          ComfyUI マスターガイド」第21回目になります。
          本記事では、ComfyUIをAPIとして外部から利用する方法を解説します。

          前回はこちら

          今回は、ComfyUI APIサーバー化する上での基本的な使い方を解説します。15,000文字ぐらいでVSCodeやPythonのインストールから、API経由でWebsocketを使った画像保存まで、自分のPythonコードで実装していきます。今回解説する内容は「かなり玄人向け、システム開発などに用途が限られるかも?」という印象があるかもしれませんが、アニメーションシステムへの応用や、インタラクティブな体験開発、AWSでのインスタンスから画像を保存したり、UnityやUnreal Engineなどのリアルタイム処理のアプリから画像をリクエストしたり、DiscordサーバーやDifiなどのチャットシステムのAPIエンドポイントとして使用したり……と、使用するワークフローを多様にすることで、様々な用途で使用することができるでしょう。用途は無限大なので、ぜひ活用して X@AICUai にてフィードバックをいただければ幸いです。

          1. 前提条件

          今回の記事では、以下の前提条件に基づき、APIを実行します。

          • Google ColabでComfyUIを動作させる
          • ローカルPCからPythonでComfyUIのAPIを実行する
          • ワークフローは、標準ワークフローを使用する
          • 生成画像は、ローカルPCにダウンロードして保存する

          今回使用するPythonコードは、ComfyUIの公式が提供しているwebsockets_api_example_ws_images.pyというサンプルコードを基に、Google Colabで動作するComfyUIと通信できるように改修したものになります。公式のサンプルコードは、以下のリンクより確認できます。

          https://github.com/comfyanonymous/ComfyUI/blob/master/script_examples/websockets_api_example_ws_images.py

          以下が今回使用するPythonコードのフローになります。

          画像
          1. ユーザーがプログラムを開始します。
          2. メインプログラムが「workflow_api.json」ファイルを読み込みます。
          3. プロンプトのテキストとシードが修正されます。
          4. 修正されたプロンプトがComfyUIサーバーのキューに追加されます。
          5. サーバーからprompt_idが返されます。
          6. WebSocket接続が確立され、状態更新の待機が始まります。
          7. サーバーが状態更新を送信し、キューが空になるまで続きます。
          8. 画像データが送信されます。
          9. プログラムが次の画像番号をファイルシステムから取得します。
          10. 生成された画像がファイルシステムに保存されます。
          11. ユーザーに完了が通知されます。

          2. ComfyUIのAPIについて

          ComfyUIは、起動と同時にAPIとして利用することが可能になっています。これは、Prompt Serverで実現されています。Prompt Serverは、API を通じてフロントエンドと連携し、ユーザーが複雑なワークフローを構築し、画像生成プロセスを制御することを可能にします。

          旧来のRESTfulなAPIや、FastAPIやAutomatic1111とも異なる設計のようです
          RESTfulならステートレス性(Stateless)が必要ですが、今回の例ではWebsocketを使って画像を転送します。HTTPをベースにしたステートレスなクライアント/サーバプロトコルではないですが、セッション等の状態管理をして、リアルタイム性や高速転送を実現しているように読み取れます。

          WebSocketによる状態把握

          Prompt Serverは、WebSocketを利用し、フロントエンドとの双方向通信を実現しています。これにより、キューの状態変化、ノードの実行状況、モデルのダウンロード進捗など、リアルタイムな更新をフロントエンドに通知することができます。本稿を執筆した2024年9月29日時点での実装ベースで分析した主な WebSocket イベントは以下になります。

          • status: キューの状態 (実行中のタスク数、待機中のタスク数など) を更新します。
          • executing: 現在実行中のノードの情報を提供します。
          • progress: KSamplerなどのサンプリング処理の進捗状況を通知します。
          • execution_success: ワークフローの実行が完了したことを通知します。

          エンドポイント

          • /: ComfyUI のフロントエンド (index.html) を提供します。
          • /embeddings: 使用可能な埋め込みのリストを取得します。
          • /models/{folder}: 指定されたフォルダ内のモデルのリストを取得します。
          • /extensions: 使用可能な拡張機能のリストを取得します。
          • /upload/image: 画像をアップロードします。
          • /upload/mask: マスク画像をアップロードします。
          • /view: 画像を表示またはダウンロードします。
          • /view_metadata/{folder_name}: safetensors ファイルのメタデータを取得します。
          • /system_stats: システムの統計情報を取得します。
          • /prompt: プロンプトをキューに追加します (POST) またはキューの状態を取得します (GET)。
          • /queue: キューを操作 (クリア、プロンプトの削除など) します。
          • /interrupt: 実行中の処理を中断します。
          • /free: メモリを解放します。
          • /history: プロンプトの履歴を取得または操作 (クリア、履歴の削除など) します。
          • /internal/models/download: 指定された URL からモデルをダウンロードします。
          • /object_info: 全てのノードまたは特定のノードクラスの情報を取得します。

          3. Pythonコード実行環境の準備

          今回は初のPythonコード実行環境の準備になります。WindowsやMac環境で共通の解説を行っていきます。一見難しそうですが、初心者向けに丁寧に解説していきますので、ぜひついてきてください!


          画像生成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/n1d717357047f

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

        3. 速報: ComfyUIを開発する 「Comfy Org」が東京・渋谷で初のミートアップを開催。画像生成AIの未来を拓く37名が参加!

          画像生成AI界隈で熱い注目を集めるノードベース画像生成フレームワーク「ComfyUI」。その開発を手がける Comfy Org が、2024年9月27日、東京・渋谷にて初のミートアップを開催しました。

          会場には、ComfyUIユーザーや開発者、画像生成AIに興味を持つ人々など、総勢37名が集結。ComfyUIの最新情報や今後の展望、活用事例などが共有され、熱気あふれる一夜となりました。

          開発チームによるプレゼンテーション:新機能、新モデル、そして未来へ

          イベントは、Comfy Orgを率いるYoland氏のオープニングアドレスで幕開け。チームメンバーの紹介やComfyUIへの熱い想いが語られました。

          続いて、HCL氏とRobin氏による、今後のベータ版Electron、フロントエンド、Electronに関する発表が行われ、参加者からは期待と興奮の声が上がりました。

          さらに、ComfyAnoymous氏からは新モデルに関する発表、kosinkadink氏からはADEとモデルパッチングに関する発表があり、ComfyUIの進化を目の当たりにする貴重な機会となりました。

          熱い議論が交わされたQ&Aセッション

          プレゼンテーション後には、開発チームとのQ&Aセッションが設けられました。参加者からは、ComfyUIの使い方や機能に関する質問だけでなく、画像生成AIの未来に関する質問も飛び出し、活発な意見交換が行われました。

          多彩なLT&ワークフロー共有:ユーザー同士の交流が深まる

          イベント後半には、ユーザーによるライトニングトーク(LT)とワークフロー共有の時間が設けられました。

          ComfyUIに関連するあらゆるテーマが歓迎され、様々な活用事例や独自のワークフローが披露されました。参加者同士が知識や経験を共有し、互いに刺激を与え合う、貴重な学びの場となりました。

          ★AICU media編集部からのお願いです。こちらについて、シェアいただける登壇者がいらっしゃいましたらぜひAICU media編集部にご寄稿ください(謝礼あり)。

          交流会&アフターパーティー:ComfyUIコミュニティの熱気を感じて

          イベント終了後には、参加者同士が自由に交流できるネットワーキングの時間と、アフターパーティーが開催されました。

          ComfyUIという共通の話題で盛り上がり、新たな出会いも生まれたのではないでしょうか。

          画像
          フェイスシールはAICUメディアの編集長による処理(人力)

          今回のミートアップは、ComfyUIコミュニティの熱気と、画像生成AIの未来に対する期待を感じさせるイベントとなりました。ComfyUIの進化は、私たちに新たな創造の可能性をもたらしてくれるでしょう。

          #ComfyUI #画像生成AI #AI #ミートアップ #渋谷 #ComfyOrg

          ★AICU mediaはComfyUIを応援しています!

          https://www.comfy.org


          ComfyUI Community Gathers in Shibuya for First-Ever Meetup: Shaping the Future of Image Generation AI

          ComfyUI, the node-based image generation framework making waves in the AI art scene, saw its development team, Comfy Org, host its first-ever meetup in Shibuya, Tokyo on September 27, 2024.

          The event drew a crowd of 37 enthusiastic attendees, including ComfyUI users, developers, and AI art enthusiasts. The night was filled with excitement as they delved into the latest updates, future prospects, and innovative applications of ComfyUI.

          Presentations by the Development Team: Unveiling New Features, Models, and the Future of ComfyUI

          The evening commenced with an opening address by Yoland, the leader of Comfy Org, who warmly introduced the team and shared their passion for ComfyUI.

          Next, HCL and Robin took the stage to unveil upcoming features for the beta version of Electron, the frontend, and Electron itself, generating a wave of anticipation and excitement among the attendees.

          ComfyAnoymous then presented insights into new models, followed by kosinkadink, who shed light on advancements in ADE and model patching. These presentations provided a valuable glimpse into the ongoing evolution of ComfyUI.

          Engaging Q&A Session: Deep Dive into ComfyUI and the Future of AI Image Generation

          Following the presentations, attendees had the opportunity to engage in a Q&A session with the development team. The discussion was lively, covering topics ranging from practical aspects of using ComfyUI to broader questions about the future of AI image generation.

          Lightning Talks & Workflow Sharing: Fostering Connections and Collaboration

          The latter half of the event was dedicated to lightning talks (LTs) and workflow sharing by ComfyUI users.

          画像
          The face seals were applied by the editor-in-chief of AICU media (human processed).

          With a diverse range of topics related to ComfyUI, attendees showcased their creative applications and unique workflows. This segment fostered a valuable learning environment where participants shared knowledge, experiences, and inspiration.

          ★ Call for Contributions: We at AICU media encourage speakers who shared their insights at the meetup to consider contributing their presentations to our platform. We offer compensation for published articles.

          Networking and After-Party: Building the ComfyUI Community

          The evening concluded with a networking session and an after-party, providing ample opportunities for attendees to connect and mingle.

          The shared passion for ComfyUI sparked lively conversations and fostered new connections within the growing community.

          This inaugural meetup served as a testament to the vibrant ComfyUI community and the high expectations surrounding the future of AI image generation. As ComfyUI continues to evolve, it promises to unlock new creative possibilities for artists and developers alike.

          #ComfyUI #ImageGenerationAI #AI #Meetup #Shibuya #ComfyOrg

          ★ AICU media is a proud supporter of ComfyUI!

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

        4. 「Stable Assistant を 知らないの?」Day1:無料トライアル3日間でこんなにお得!?

          AICU営業部の私がStable Assistantを触ってみたら、想像以上にすごかった…😳✨

          みなさん、毎度ありがとうございます AICU営業部 です!
          生成AI時代に「つくる人をつくる」をビジョンに活動するAICUメディアのお手伝いしながら、AICUのナレッジを「もっと売る」をミッションとして活動しております。

          最近、AIを使った副業が話題ですよね!私も興味津々なんですが、編集部のみなさんがふだん開発している AUTOMATIC1111 や ComfyUI の内容は「なんか難しそう…」と二の足を踏んでいたんです。
          でも、そんな私に朗報が!
          Stable Diffusionでおなじみの Stability AI がリリースした「Stable Assistant」が、想像以上に高性能で使いやすいと編集部で話題に!

          私「Stable Assistant、試してみていいですか?」
          編集長「いいよ!ただし自腹でお願いしますね~(笑顔)」
          私「えっ自腹!?いやです(キッパリ)」
          編集長「そうなの?全機能が3日間無料で試せるよ?」
          私「えっ無料なの?」
          編集長「しかもこの品質ならココナラあたりで案件がこなせるのでは…?」
          私「いいんですか?」
          編集長「業務外でゲットした案件は個人の副業でどうぞ~!」

          これは試してみるしかない! ということで、 ココナラ初心者、Stable Assistant初心者の私が実際に使ってみました!

          まず初日は、Stable Assistantの基本機能と、私が実際に案件を想定して使ってみた感想をスクショ付きでご紹介します!

            Stable Assistantってどんなツール?

            Stable Assistantは、画像生成AI「Stable Diffusion」の最新版に加えて、動画生成、音楽生成、テキスト生成までできる、まさにオールインワンのAIクリエイティブツールなんです!😲

            しかも、難しい設定は一切不要!
            チャットで指示を出すだけで、プロもびっくりなコンテンツが作成できちゃうんです!

            ✨️用意するツールとアカウントについては文末で紹介します!

            🎨 画像生成:Stable Diffusionの最新版で、高画質・ハイクオリティな画像を生成!

            Stable Assistantの画像生成は、あのStable Diffusionの最新版がベース!
            だから、高画質で美しい画像を生成できちゃうんです。

            例えば、「紫色の髪をした女の子、森の中、幻想的、花に囲まれている」といったテキストを入力すると…

            じゃーん!

            画像
            image: Girl with purple hair, in forest, fantastic, surrounded by flowers

            ね?すごいクオリティじゃないですか!?

            人物、風景、物体、どんなものでも、Stable Assistantなら自由自在に生成できます!
            もちろん、画像の雰囲気やタッチも自由自在に変えられます。

            左上から2番目のアイコン(Reinvent all creations)で”New Image with Same Structure”を選んで…

            画像

            デフォルトで「In anime style」(アニメ風で)が出てきますのでそのまま「Confirm」(確認)します。

            画像

            いきなりかわいくなりました!

            画像

            さらに「New Image with Same Structure」を使って、今度は「Japanese anime style」としてみました。

            画像

            うーん、ちょっと日本人顔になったけど、もうちょいがんばりたい!
            無料なので。

            画像

            左上の「Generate another version」を選びます。

            画像

            右側に追加されていきます。

            画像

            黒髪とブロンドで悩む私でした。

            画像
            画像

            「New Image with Same Structure」の使い方

            同じ構図と構造を維持しながら、周囲の環境を変化させて、コーヒーカップをある景観から別の景観へと移動させてみましょう。この例では、夕暮れの森の中に置かれたコーヒーカップの画像を入力として、このツールを使用して新しい画像を生成します。アシスタントに生成を指示するだけで、
            > create a picture of a cup of coffee placed in a forest at sunset
            (夕暮れの森の中に置かれたコーヒーカップの画像を作成)
            次に、ツール設定のプロンプトセクションに文字を入力することで、構造はそのままに、この画像のスタイルと内容を変更することができます。
            > a cup of coffee in the desert at sunset
            (夕暮れの砂漠に置かれたコーヒーカップ)

            公式ヘルプの翻訳です

            画像

            日本のアニメっぽい画風にはならなかったけど、これはこれで高品質でよいのでは…!??

            今度はこんな感じのイラストで一度試してみます。
            「働く女性をイメージ」

            画像

            アニメ風に変換!できた!

            画像

            さて、ウォーミングアップは終わりにして、そろそろ案件に向けて次の機能をチェックしておきます。

            🔨 画像編集:痒い所に手が届く!豊富な編集機能で思い通りの作品に!

            Stable Assistantは、画像編集機能も超優秀!

            画像の一部だけを変更したり、別の画像と合成したり…
            まるでPhotoshopで何時間もかかるような編集作業も、Stable Assistantならチャットで指示を出すだけ!

            ▼ Stable Assistantの画像編集機能例 ▼

            • オブジェクトの追加・削除・置換
            • 背景の変更・削除
            • 画質の向上
            • 色調調整
            • テキストの追加
            • 特定のオブジェクトだけを別のスタイルに変換

            例えば、先ほど生成した画像の背景を除去してみましょう。

            画像

            ね?簡単でしょ?

            最近、さらに機能が追加されたようです!

            🎵これだけじゃない!3D・動画・音楽生成機能まで!

            Stable Assistantのスゴイところは、画像生成・編集だけじゃないんです!
            なんと、動画生成と音楽生成までできちゃうんです!

            🎬 動画生成:Stable Videoで、画像やテキストから動画を自動生成!

            Stable Assistantに搭載されている「Stable Video」を使えば、ボタン一発で静止画を動画に変換したり、テキストから動画を生成したりできます。

            画像

            (ブログで見やすくするために)GIFにしてみました

            画像

            MP4はこちらです

            https://note.com/api/v2/attachments/download/5540f286753dccfc93ff27211cde77d3

            実は3D化もボタン一発でできちゃいます。

            https://note.com/api/v2/attachments/download/4531d0af313fa3a88f2b37d16773fca0

            画像
            画像

            🎼 音楽生成:Stable Audioで、最大3分の高品質音楽を生成!

            「Stable Audio」機能を使えば、なんと最大3分間の高品質な音楽を生成できます!

            「モーニングカフェ風のジャズ」

            画像

            こちらのリンクから試聴できます!

            https://assistant.stability.ai/share/5d40047b-69fd-4f45-a90e-e06f3e9e6f61

            著作権フリーなので、YouTubeなどの動画BGMにも安心して使えますね!

            用意するツールとアカウント

            ココナラのアカウント
            ・クレジットカード
            Stable Assistantのアカウント登録
            Google Gemini (あると嬉しい)
            ・DeepL無料版(なくても大丈夫)

            ココナラのアカウントはこちらから登録すると紹介ポイントが手に入ります。

            画像
            https://coconala.com/invite/QJD66V

            準備編:Stable Assistant の3日間無料トライアルで、副業の可能性を広げよう!

            Stable Assistantは、3日間無料トライアルを実施しています。
            期間中は、Stable Assistantの全機能を無料で体験できます!

            画像

            【Stable Assistant 3日間無料トライアルの登録方法】

            1. Stable Assistantのサイトにアクセス
            2. 「Start your free trial」をクリック
            3. メールアドレスを入力し、登録
            4. 登録したメールアドレスに届くメール内のリンクをクリック
            5. アカウントを作成(クレジットカード情報を入力する必要がありますが、無料トライアル期間中は課金されません)

            利用料を払ったとしても、年間90ドルでほぼ使い放題です!

            画像
            https://j.aicu.ai/StaiAs

            Stable Assistantで、あなたの副業をレベルアップさせましょう!

            Day2では、Stable Assistantを使って実際の案件に挑戦します!

            Day2に続きます!

            #StableAI #StableAssistant #画像生成AI #AI音楽生成 #副業 #ココナラ #AICU営業部

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