タグ: SD

  • Stable Diffusion 3.5 Medium 登場! 盛り上がる開発者コミュニティ、LoRAやSkip Layer Guidance (SLG)で指も改善?

    2024年10月29日(日本時間)、Stability AIから予告通り、最新の画像生成モデル「Stable Diffusion 3.5 Medium」がオープンリリースされました。

    Stable Diffusion 3.5 Medium が登場しました!

    このオープンモデルは、25億のパラメータを持ち、消費者向けハードウェア上で「箱から出してすぐに」動作するように設計されています。

    ブログにMediumの内容を追加しています。ぜひご覧ください。

    https://x.com/StabilityAI_JP/status/1851268389140119774

    https://ja.stability.ai/blog/introducing-stable-diffusion-3-5

    「消費者向けハードウェア…!?」というドヨメキがAICU media編集部に響き渡ったのですが、Stability AI公式が具体的なモデル名とGPU製品名で推奨動作表を提供しています。

    画像
    https://ja.stability.ai/blog/introducing-stable-diffusion-3-5

    Stable Diffusion 3.5 Medium (以下、SD3.5M) は 2.5B(25億パラメータ)のモデルであり、NVIDIA GeForce RTX 3080 (VRAM 10GB以上) が推奨になっています。NVIDIA GeForce RTX 4060 (VRAM 6GB)では、[!] という黄色いマークがつけられており、「[!] indicates the model requires performance – compromising optimizations, such as quantization or sequential offloading, to run on this device.」(モデルをこのデバイスで実行するには、量子化や順次オフロードなどのパフォーマンスを犠牲にした最適化が必要であることを示します)と書かれています。

    ダウンロードはこちらから、ファイルサイズは4.75GBです。

    https://huggingface.co/stabilityai/stable-diffusion-3.5-medium/resolve/main/sd3.5_medium.safetensors?download=true

    なお、SD3.5 Large (80億パラメータ)も配布されています(ファイルサイズとしては16.5GB!です)。動作させるには32GB VRAMを搭載した NVIDIA H100クラスのGPUが必要とのことです。

    https://huggingface.co/stabilityai/stable-diffusion-3.5-large/blob/main/sd3.5_large.safetensors

    https://github.com/Stability-AI/sd3.5

    Google Colab上でweightをダウンロードするテクニック!

    Google Colab上で、HuggingFaceに置かれたStable Diffusion 3.5 MediumやLargeを活用したい!でもHuggingFaceでの認証が通らないのでwgetすることができない…なんて諦めてしまったひとはいませんか?

    AICU AIDX Labではこんな方法で、自動でダウンロードできるスクリプトを組んでいます。
    まずはGoogle Colabの「シークレット機能」を使って、HuggingFaceのAPIキーを保存します。ここでは「HF_TOKEN」という名前にしてあります。

    画像

    Google Colabノートブック上でこちらのHF_TOKENにアクセスを許可して、以下のようなコードを書きます。

    #!wget -c https://huggingface.co/stabilityai/stable-diffusion-3.5-medium/resolve/main/sd3.5_medium.safetensors  -P ./models/checkpoints
    # %cd /content/drive/MyDrive/ComfyUI/models/checkpoints
    !pip install huggingface_hub
    
    import os 
    from google.colab import userdata
    os.environ['HF_TOKEN'] = userdata.get('HF_TOKEN')
    !huggingface-cli login --token $token
    
    token = userdata.get('HF_TOKEN')
    from huggingface_hub import hf_hub_download
    hf_hub_download(repo_id="stabilityai/stable-diffusion-3.5-medium", filename="sd3.5_medium.safetensors", local_dir="/content/drive/MyDrive/ComfyUI/models/checkpoints")
    

    hf_hub_download(repo_id=”stabilityai/stable-diffusion-3.5-medium”, filename=”sd3.5_medium.safetensors”, local_dir=”/content/drive/MyDrive/ComfyUI/models/checkpoints”)

    と書くことで、HuggingFaceにログインした状態でファイルを指定ディレクトリに直接ダウンロードできます!これは便利。

    画像

    参考:その他のHuggingFaceの使いこなしはこの記事でも扱っています。

    盛り上がる開発者コミュニティ

    AICU media編集部でもSD3.5のリリース直後から評価に入っています。

    日本人などの人種や肌の多様性は確認できましたが、一方で「指の正確さ」については難があるという印象を得ましたが、実はその後、急速にコミュニティ内で改善が見られるので共有したいと思います。

    まずは、sampler をEuler Ancestral (Euler_a) にする!

    集合知的に様々なノウハウが集まってきていますが、SD3.5でMMDiT-Xにモデルが変わっていることもあり、サンプラーについても見直しが必要なようです。

    指に関しては、Euler Ancestral (Euler_a)がよいという説があります。

    世界のKohya氏、LoRA対応を追加。

    LoRA学習スクリプト「sd-scripts」を開発し、世界中のStable Diffusionコミュニティの英雄ともいえるKohya氏がSD3.5M対応をGitHubリポジトリにプッシュしました。

    https://github.com/kohya-ss/sd-scripts/pull/1719

    コメントでは世界中の開発者からの検証結果が寄せられ始めています。

    Civitaiによるマニュアル・ワークフローの提供

    SD3公開直後、荒れた瞬間があったCivitaiコミュニティですが、SD3.5については公式のエデュケーションブログやワークフローの公開が提供されています。

    せっかくなので翻訳を提供していきたいと思います。最新のモデルと専門用語を学ぶうえでも大変役に立ちます。

    Stable Diffusion 3.5 Mediumクイックスタートガイド

    Stable Diffusion 3.5 Mediumは、画質、タイポグラフィ、複雑なプロンプトの理解、リソース効率の向上を実現する、マルチモーダル拡散トランスフォーマー(MMDiT-x)をベースにしたテキスト画像生成モデルです。

    注記: このモデルはStability Community Licenseの下でリリースされています。商用ライセンスについては、Stability AIのサイトをご覧いただくか、当社までお問い合わせください。

    モデルの説明

    • 開発元: Stability AI
    • モデルの種類: MMDiT-Xテキスト画像生成モデル
    • モデルの説明: このモデルは、テキストプロンプトに基づいて画像を生成します。3つの固定の事前学習済みテキストエンコーダー、トレーニングの安定性を向上させるためのQK正規化、および最初の12個のトランスフォーマーレイヤーにおけるデュアルアテンションブロックを使用する改良版マルチモーダル拡散トランスフォーマー(https://arxiv.org/abs/2403.03206)です。

    ライセンス

    • コミュニティライセンス: 年間総収益が100万ドル未満の組織または個人の研究、非商用、および商用利用は無料です。詳細はコミュニティライセンス契約をご覧ください。https://stability.ai/license で詳細をご覧ください。
    • 年間収益が100万ドルを超える個人および組織の場合:エンタープライズライセンスを取得するには、当社までお問い合わせください。

    実装の詳細

    • MMDiT-X: トランスフォーマーの最初の13レイヤーに自己注意モジュールを導入し、マルチ解像度生成と全体的な画像の整合性を強化します。
    • QK正規化: トレーニングの安定性を向上させるためにQK正規化技術を実装します。
    • 混合解像度トレーニング:
      • プログレッシブトレーニングステージ:256→512→768→1024→1440の解像度
      • 最終段階には、マルチ解像度生成パフォーマンスを向上させるための混合スケール画像トレーニングが含まれていました
      • 低解像度ステージでは、位置埋め込み空間を384×384(潜在)に拡張
      • 混合解像度とアスペクト比の全範囲にわたるトランスフォーマーレイヤーの堅牢性を強化するために、位置埋め込みにランダムクロップ拡張を採用しました。たとえば、64×64の潜在画像が与えられた場合、トレーニング中に192×192の埋め込み空間からランダムにクロップされた64×64の埋め込みをxストリームへの入力として追加します。

    これらの機能強化は、マルチ解像度画像生成、一貫性、および様々なテキスト画像タスクへの適応性におけるモデルのパフォーマンス向上に総合的に貢献しています。

    • テキストエンコーダー:
      • CLIP:OpenCLIP-ViT/G、CLIP-ViT/L、コンテキスト長77トークン
      • T5:T5-xxl、トレーニングのさまざまな段階でのコンテキスト長77/256トークン
    • トレーニングデータと戦略:
      • このモデルは、合成データやフィルタリングされた公開データなど、様々なデータでトレーニングされました。

    元のMMDiTアーキテクチャの技術的な詳細については、研究論文を参照してください。

    使用方法と制限事項

    • このモデルは長いプロンプトを処理できますが、T5トークンが256を超えると、生成された画像の端にアーティファクトが発生する場合があります。ワークフローでこのモデルを使用する場合はトークン制限に注意し、アーティファクトが目立ちすぎる場合はプロンプトを短くしてください。
    • MediumモデルはLargeモデルとはトレーニングデータの分布が異なるため、同じプロンプトに同じように反応しない場合があります。
    • より良い構造と解剖学的整合性を得るためには、Skip Layer Guidanceを使ったサンプリングを推奨します。

    実装の詳細

    • MMDiT-X: トランスフォーマーの最初の13層に自己関心モジュールを導入し、マルチ解像度生成と全体的なイメージの一貫性を強化。
    • QK正規化: トレーニングの安定性を向上させるために、QK正規化技術を導入。
    • 混合解像度トレーニング:
      • 段階的なトレーニングステージ:256 → 512 → 768 → 1024 → 1440解像度
      • 最終段階では、マルチ解像度生成性能を高めるために、混合スケール画像のトレーニングを実施
      • 低解像度段階では、位置埋め込み空間を384×384(潜在)に拡張
      • 混合解像度およびアスペクト比の全範囲にわたってトランスフォーマー層の頑健性を強化するために、位置埋め込みにランダムなクロップ拡張を採用しました。例えば、64×64の潜在画像が与えられた場合、192×192の埋め込み空間からランダムにクロップした64×64の埋め込みを、xストリームへの入力としてトレーニング中に追加します。

    これらの強化により、多様なテキストから画像へのタスクにおける、マルチ解像度の画像生成、一貫性、適応性の向上というモデルのパフォーマンス改善に総合的に貢献しています。

    • テキストエンコーダー:
      • CLIPs: OpenCLIP-ViT/GCLIP-ViT/L、文脈の長さ77トークン
      • T5: T5-xxl、トレーニングの異なる段階における文脈の長さ77/256トークン
    • トレーニングデータと戦略:
    • このモデルは、合成データやフィルタリングされた公開データなど、さまざまなデータでトレーニングされています。

    MMDiT-X

    Stable Diffusion 3.5 Medium は、画像品質、タイポグラフィ、複雑なプロンプトの理解、リソース効率の向上を特徴とする、改良された Multimodal Diffusion Transformer with improvements (MMDiT-X; マルチモーダル拡散トランスフォーマー)によるテキストから画像へのモデルです。

    画像

    MMDiTのオリジナルアーキテクチャの技術的な詳細については、研究論文を参照してください。

    使用法と制限事項

    • このモデルは長いプロンプトを処理できますが、T5トークンが256を超えると、生成の端にアーティファクトが発生することがあります。このモデルをワークフローで使用する際はトークン制限に注意し、アーティファクトが顕著になる場合はプロンプトを短くしてください。
    • 中規模モデルは大規模モデルとは異なるトレーニングデータの分布であるため、同じプロンプトに対して同じように反応しない場合があります。
    • より良い構造と解剖学的整合性を得るために、Skip Layer Guidanceでサンプリングすることをお勧めします。

    Skip Layer Guidance (SLG)の推奨

    Stability AIが提案している方法としてはSkip Layer Guidance (SLG)です。Skip Connection(残差接続)についてはこちらの日本語解説が詳しいです。これによって指の改善がStability AIによって提案されており、ComfyUIやHuggingFaceでも試されています。

    https://github.com/comfyanonymous/ComfyUI/pull/5404

    https://github.com/huggingface/candle/issues/2588

    スキップ レイヤー ガイダンス (SLG) は、特定の範囲のサンプリング ステップで元の CFG に追加のガイダンスを追加するサンプリング手法です。追加のガイダンスは、元のモデルからの正の DiT モデル出力から、特定のレイヤー (たとえば、Stable Diffusion 3.5 Medium の場合はレイヤー 7、8、9) が削除されたバリアント モデルからの正のモデル出力を減算して比較することによって計算されます。

    SLG はオプションの選択肢のように見えますが、SAI は Stable Diffusion 3.5 Medium に対して SLG を有効にすることを公式に推奨しているようです。証拠には以下が含まれます:HuggingFace Hub の公式リポジトリでは、 SLG が有効になっているComfyUI ワークフローが提供されています。
    公式リファレンス デザイン GitHub リポジトリStability-AI/sd3.5には、SD3.5-medium の SLG をサポートする最近の変更が含まれています。
    Stable Diffusion 3.5 Medium での SLG の使用について取り上げたReddit (例:こちら) および Twitter/X (例:こちら) の投稿では、SLG の使用は「解剖学的失敗の可能性を減らし、全体的な一貫性を高める」ために重要であると思われると示唆されており、複数の独立した投稿がこの主張を相互検証しています。

    HuggingFaceにおいてワークフローが配布されています。

    https://huggingface.co/stabilityai/stable-diffusion-3.5-medium/resolve/main/SD3.5M_SLG_example_workflow.json?download=true

    さいごに


    今後も、Stable Diffusionを中心としたオープンな画像生成モデルとそのコミュニティの熱狂は続きそうです。

    AICUとしては「つくる人をつくる」をビジョンにする専門AIメディアとして今後も、公平に、Stability AIやコミュニティの活動を応援していきたいと考えています。

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

  • 【最速レビュー】Stability AI 最新ベースモデル「Stable Diffusion 3.5」リリース!Stability AI APIで「日本人の生成」を試してみた!

    2024年10月22日23時(日本時間)、Stability AI による最新ベースモデル「Stable Diffusion 3.5」のオープンリリースがアナウンスされました。
    AICU編集部では「日本人の生成」を通してSD3.5の評価を実施しました。

    最もパワフルなStable Diffusion 3.5をご紹介します。 このオープンリリースには、そのサイズに対して高度にカスタマイズ可能で、民生用ハードウェアで動作し、寛容なStability AI Community Licenseの下、商用・非商用ともに無料で使用できる複数のバリエーションが含まれています。 Hugging FaceのStable Diffusion 3.5 LargeとStable Diffusion 3.5 Large Turbo、そしてGitHubの推論コードを今すぐダウンロードできます。 Stable Diffusion 3.5 Mediumは10月29日にリリースされる予定です。

    https://x.com/StabilityAI/status/1848729212250951911

    日本語版公式リリースより

    リリースされるもの

    • Stable Diffusion 3.5 Large: 80億のパラメータ、1メガピクセル解像度。
    • Stable Diffusion 3.5 Large Turbo: Stable Diffusion 3.5 Large の蒸留版、わずか4ステップで高品質な画像を生成。Stable Diffusion 3.5 Largeよりもはるかに高速。
    • Stable Diffusion 3.5 Medium (10月29日リリース予定): 26億のパラメータ、改良されたMMDiT-Xアーキテクチャとトレーニング方法により、カスタマイズのしやすさと画質を両立させ、コンシューマー向けハードウェアで「箱から出してすぐに使える」ように設計されています。0.25~2 メガピクセルの解像度の画像を生成できます。

    モデルの特徴(公式リリースより)

    モデルの開発にあたっては、柔軟な基盤を構築できるよう、カスタマイズ性を優先しました。これを実現するために、Query-Key Normalization をトランスフォーマーブロックに統合し、モデルのトレーニングプロセスを改善し、さらにファインチューニングや開発を簡素化しました。
    このレベルの下流での柔軟性をサポートするために、いくつかのトレードオフが必要でした。異なるシードを使用した同じプロンプトからの出力に、より大きなばらつきが生じる可能性があります。これは意図的なもので、ベースモデルにおける幅広い知識ベースと多様なスタイルの維持に役立ちます。しかし、その結果、特定性のないプロンプトでは出力の不確実性が増大し、見た目のレベルにばらつきが生じる可能性があります。
    特にMediumモデルでは、品質、一貫性、およびマルチ解像度生成能力を向上させるために、アーキテクチャとトレーニングプロトコルにいくつかの調整を加えました。

    モデルの優位性

    • カスタマイズ性: 特定のクリエイティブニーズを満たすために、モデルを簡単にファインチューニングしたりカスタマイズされたワークフローに基づくアプリケーションを構築したりすることができます。
    • 効率的なパフォーマンス:特にStable Diffusion 3.5 MediumおよびStable Diffusion 3.5 Large Turbo モデルでは標準的な一般消費者向けのハードウェアで高負荷をかけずに実行できるように最適化されています。
    • 多様な出力:広範な指示を必要とせずに、特定の人物だけでなく、さまざまな肌の色や特徴を持つ世界を代表するような画像を作成します。
    画像
    • 多彩なスタイル:3D、写真、絵画、線画など、幅広いスタイルと美しさを生成することが可能です。また、想像可能なほぼすべての視覚スタイルにも対応しています。
    画像

    Stable Diffusion 3.5 Medium は、他の中型モデルを上回る性能を持ち、プロンプトの再現性と画像品質のバランスに優れていますので、効率的で高品質なパフォーマンスを求める場合の最適な選択肢となりうるでしょう。

    画像

    Stability AI Community license の概要

    https://ja.stability.ai/blog/introducing-stable-diffusion-3-5

    community license の概要は以下の通りです。

    • 非営利目的の場合は無料: 個人および組織は、科学研究を含む非営利目的の場合、無料でモデルを使用することができます。
    • 商用利用も無料(年間収益100万ドルまで):年間収益が100万ドル未満のスタートアップ企業、中小企業、クリエイターは、商用目的でも無料でこのモデルを使用できます。
    • 成果物の所有権:制限付きライセンスを伴うことなく生成されたメディアの所有権を保持します。

    年間収益が100万ドル以上の企業は、エンタープライズライセンスをこちらからお問い合わせください。

    ComfyUIが即日対応

    そしてまさかのComfyUIがリリース即日対応を発表しました。

    まさかこんなことが起こるなんて!Stable Diffusion 3.5がリリースされました!Stable Diffusion 3.5モデルシリーズの初日サポート開始をお知らせできることを嬉しく思います!SD3.5の使用を開始するには、当社のブログをフォローするか、ベータ版の「missing model」機能を使用してモデルをダウンロードしてください。スキルは必要ありません!

    https://x.com/ComfyUI/status/1848728525488197963

    昨日リリースされた内容はこちらです。
    missing model機能について、チェックしていかねばですね!

    いますぐ触りたいアナタに!

    HuggingFace Spacesにて試用環境が公開されています
     Stable Diffusion 3.5 Large (8B)

    https://huggingface.co/spaces/stabilityai/stable-diffusion-3.5-large

    公開直後のため、流石に混雑しているようです。同時に公開されたTurboのほうが使えそうです。

    Stable Diffusion 3.5 Large Turbo (8B)

    https://huggingface.co/spaces/stabilityai/stable-diffusion-3.5-large-turbo

    画像

    文字表現についても機能は維持されているようです。
    「gemini boys with a panel written “AICU”」

    画像

    公式APIでの「Stable Diffusion 3.5 Large」

    Stability AI 公式APIマニュアルによると、既にGenerate APIとして提供が始まっています。APIキーを取得し、Open Google Colabにアクセスしてください。

    [AICU版] Stability AI APIガイド
    https://note.com/aicu/n/n4eda1d7ffcdf

    公式Google Colab notebook へのリンク

    デフォルトの解像度は1Mピクセル、1024×1024です。
    modelパラメータのデフォルトが「sd3.5-large」になりました。
    {sd3-large, sd3-large-turbo, sd3-medium, sd3.5-large, sd3.5-large-turbo}
    クレジット消費は「生成成功につき」以下のとおりです。

    ・SD3.5 & 3.0 Largeは一律6.5クレジット
    ・SD3.5 & 3.0 Large Turbo:一律 4クレジット
    ・SD3 Medium:一律3.5クレジット。
    失敗した生成については請求されません。

    AICUによるSD3.5ギャラリー

    SD3.5にて生成
    「gemini girls with a panel which written “AICU”」

    画像
    画像

    SD3.5 Turboにて生成
    「textured palette knife oil painting of a cat riding a surfboard on the beach waves in summer. the cat has a mouse friend who is also riding the surfboard」

    画像

    良いものだけ紹介するのではなく、
    文字の描画を含めた連続生成の歩留まり率を表現してみます。
    「cinematic film still, action photo of a cat with “AICU loves SD3.5”, riding a skateboard through the leaves in autumn. the cat has a mouse friend resting on their head」
    SD3.5・同一プロンプト、Seed=0にて実験

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

    「Japanese girls with a panel which is written “AICU loves SD3.5″」

    画像
    画像

    実写系日本人の表現については、結構特徴掴んでいる感じがします。
    指の再現率については工夫が必要そうです。

    画像
    画像
    画像
    画像
    画像

    ネガティブプロンプトの効果を確認します。
    「bad finger, nsfw, ugly, normal quality, bad quality」を入れることで歩留まり率が上がりました。

    画像

    さいごに、ComfyUIのブログにあったプロンプトを紹介します。

    Prompt: A photorealistic 4K image of a woman with transparent, crystal-like skin, glowing from within with a soft golden light.
    NP:bad finger, nsfw, ugly, normal quality, bad quality

    画像
    画像

    AICU編集部のレビュー

    電撃リリースとなったStable Diffusion 3.5です。
    即日対応を実現したComfyUI、そして商用で試用する上で、APIとしての互換性は高く保たれているようなので安心しました。初期レビューとして少し触ってみた範囲ですが、人種の多様性、特に日本人の描写について多様性と表現力があることを確認しました。
    モデルの特性としての「カスタマイズ性」はどのようなところで発揮されるのか、ファインチューニング関係がComfyUIで登場することを期待します。また既存APIでのモデル間比較やEdit API、Style APIとの関係、そして10月29日に予定されているSD3.5Mリリース以降の動向も注目したいところです。

    【PR】商用でも利用できるStability AI APIを学びたいアナタへ
    超入門:Stable Diffusionではじめる画像生成AI

    https://j.aicu.ai/AICUXColosoJP

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

  • 「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. 「Stable Diffusion 3 Medium ファインチューニングチュートリアル」から読んだ Stability AIの「新モデル」

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

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

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

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

      はじめに

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

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

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

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

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

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

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

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

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

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

      画像

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

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

      notionに書かれた情報から

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

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

      https://j.aicu.ai/SBXL

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

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

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

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

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

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

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

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

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

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

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

      ステップの計算

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

      画像

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

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

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

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

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

      画像

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

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

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

      複数のコンセプト

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

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

      画像

      iコンセプトの場合

      画像

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

      画像

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

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

      LR_SCHEDULEとLR_WARMUP_STEPS

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

      画像
      画像

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

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

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

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

      bash train.sh

      で実行します。

      計算能力に関する考察

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

      画像
      画像

      モデルをどうするか?

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

      画像

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

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

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

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

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

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

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

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

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

      画像
      画像
      画像
      画像

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

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

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

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

      ギャラリー

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

      画像
      画像
      画像
      画像
      画像

      LoRA のトレーニング

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

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

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

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

      画像

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

      画像

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

      画像

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

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

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

      https://github.com/THUDM/CogVLM

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

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

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

      https://github.com/doloreshaze337/taggui

      kasukanra@GitHubリポジトリ

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

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

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

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

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

    2. [11]ComfyUIでのTextToImageを極める!!(1)プロンプトの基本文法

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

      こんにちわ、AICU media編集部です。
      ComfyUI マスターガイド」第11回目になります。
      この記事では、ComfyUIを始めたばかりの方向けに、「text to image」プロンプトによる画像生成の基本から応用、そしてComfyUI特有のテクニックまでを、実用的なプロンプト例を交えながら数回に分けて解説していきます。

      前回はこちら

        1. 今回の対象とするモデル

        今回は、SDXLを対象にプロンプトテクニックを解説します。特定のモデルに焦点を当てて話す理由としては、プロンプトの書き方や使用するノードがモデルの種類やバージョンにより異なるためです。ここでは、複雑性を減らして解説するために、メジャーなモデルのSDXLを利用します。各種モデルの評価については、別記事にて解説予定です。

        ユーザーが知っておくべき「モデルとの対話」について簡単に図解しておきます。

        画像

        ここからの画像生成では、モデル(checkpoint)としてstable-diffusion-xl-base-1.0を使用します。

        • メニューから「Manager」を選択します。
        画像
        • ComfyUI Manager Menuが開きます。ここで「Model Manager」を選択します。
        画像
        • モデルの検索画面が表示されます。
        • 上部の検索バーに「sd_xl_base_1.0.safetensors」と入力すると、モデル一覧にsd_xl_base_1.0.safetensorsが表示されます。
        • sd_xl_base_1.0.safetensors「Install」をクリックしてください。
        画像
        • しばらくすると、インストールが完了し、Refreshを求められます。
        画像
        • トップ画面に戻り、メニューの「Refresh」をクリックしてください。
        画像
        • Load Checkpointsd_xl_base_1.0.safetensorsを設定できるようになります。
        画像

        2. プロンプトと画像サイズ、シードの基本をおさらいしよう

        プロンプトとは、AIモデルに画像を生成させるための指示文のことです。人間が言葉でAIに指示を出すための手段とも言えます。例えば、「夕焼けのビーチで遊ぶ子供たち」というプロンプトを入力すると、SDXLはそのような画像を生成しようとします。プロンプトが具体的であればあるほど、思い通りの画像が生成されやすくなります。

        プロンプト例

        A photo of a cat wearing a Santa hat, sitting on a Christmas present

        このプロンプトは、クリスマスのプレゼントの上に座っている、サンタの帽子をかぶった猫の写真を生成するようにSDXLに指示します。「Santa hat」や「Christmas present」といった具体的な単語を追加することで、よりクリスマスらしい画像が生成されやすくなります。

        画像

        画像サイズとシードを固定して実験

        [TIPS] SD1.5系からSDXLに切り替えたときは、「Empty Latent Image」を[512, 512]から[1024, 1024]に切り替えるのを忘れずに。SDXLは1024×1024に最適化されているので、生成するLatent画像のサイズが小さいと本来の能力が発揮されません。
        なお 1024×1024=1,048,576で必要なピクセル幅で割れば高さが求められますが、例外もあります。特に注意したいのは「16:9」で、割り算するとwidth:1365, height:768が最適…と思いきや、実はSDXL自体がこのサイズで学習をしておらず、推奨の16:9設定は「”1.75″: (1344, 768)」、もしくは「”1.91″: (1344, 704)」(nearly 16:9)となります。

        画像

        実験のためにseedを1234, control_before_generateをfixedにして実験してみます。

        画像

        1368×768 (seed:1234)

        画像

        1344×768 (seed:1234)

        画像

        1344×704 (seed:1234)

        画像

        あんまりわかりやすい違いはありませんが、実用的には以下のようにおぼえておくと良いかもしれませんね!

        ■ComfyUI SDXLでのHDTV(16:9)最適画像サイズ

        1368×768: 非推奨 (AS比1.77) 最適解像度より2,048ピクセル多い
        1344×768: 学習済 (AS比1.75) 最適解像度より16,384ピクセル少ない
        1344×704: 学習済 (AS比1.91) 最適解像度より102,400 ピクセル少ない。noteカバーアートにぴったりサイズ

        画像

        AICU mediaでの実験によると、Google ColabのT4 GPU, RAM13GB, GPU RAM 15GB環境でのSDXLにおいて、1344×768、1344×704が平均23秒/生成(1.15s/it)であるところ、1368×768は28秒/生成(1.27s/it)というところです。なおs/itという単位はiterationといって、1ステップあたりの処理時間であるようです。この場合の設定はstep=20なので、ちょうど計算があいます。

        生成時間が気になるひとは、ぜひログを見てみてください!

        画像
        Google Colab上で確認できます

        3. 基本的なプロンプトの書き方

        SDXLのプロンプトは、基本的に英語で記述します。シンプルな英語で記述しても高品質な画像が生成されますが、より詳細な指示を与えることで、より思い通りの画像を生成できます。

        3.1 プロンプトの構成要素

        プロンプトは、以下の要素を組み合わせて文章形式で記述します。

        • 芸術スタイル: 画像の雰囲気や画風(例:写真、絵画、アニメなど)
          • 例1: oil painting(油絵)
          • 例2: Pencil drawing(鉛筆画)
          • 例3: Concept art(コンセプトアート)
        • 主題: 描写したいもの(例:猫、風景、人物など)
          • 例1: Lion(ライオン)
          • 例2: Panda(パンダ)
          • 例3: A warrior with a sword(剣を持った戦士)
        • 色とトーン: 画像の全体的な色彩や雰囲気を指定
          • 例1: Vibrant colors(鮮やかな色彩)
          • 例2: Monochrome(モノクロ)
          • 例3: Warm tones(暖かい色調)
        • ディテールと複雑さ: 画像の細部の精密さや全体的な複雑度を指定
          • 例1: Highly detailed(非常に詳細)
          • 例2: Intricate patterns(複雑な模様)
          • 例3: Minimalist(ミニマリスト)
        • 技術的特性: 画像の技術的な側面や品質に関する指定
          • 例1: High resolution(高解像度)
          • 例2: Photorealistic(写真のようにリアル)
          • 例3: 8K(8K解像度)

        プロンプト例

        以下にこの構成に従って作成したプロンプトと生成画像を示します。

        oil painting, majestic lion, golden sunset hues, Highly detailed, photorealistic, 8K
        画像

        これらの要素を組み合わせて、より複雑なプロンプトを作成できます。

        3.2 単語の区切りと記号

        • 単語は空白で区切ります。
        • `,`などの記号は、単語区切りとなる場合があります。

        プロンプト例

        A cat, black and white, sleeping on a red, fluffy rug
        画像

        3.3 コメント

        プロンプトにコメントを追加したい場合は、C言語のような記法が使えます。`//` で行末まで、`/* */` で囲まれた部分がコメントになります。

        プロンプト例

        A portrait of a man with a beard // ひげを生やした男性の肖像画
        /* 年齢は30代くらい */ wearing a suit, photorealistic style
        画像
        画像
        イケメンです

        4. プロンプトの強調

        特定の単語やフレーズを強調したい場合は、括弧で囲みます。

        • (単語): 1.1倍強調
          • 例: A portrait of a woman with (green) eyes
        • ((単語)): 1.21倍強調
          • 例: A portrait of a woman with ((long)) blonde hair
        • (単語:数値): 数値で任意の倍率を指定
          • 例: A landscape with a (bright:1.5) blue sky

        プロンプト例

        A fantasy landscape with a (red:1.5) castle on a hill, overlooking a vast forest

        この例では、「red」が強調され、より赤が強調された描画がされやすくなります。以下の画像は、強調前と強調後の比較画像です。両方とも同じシード値を利用して生成しています。強調後は、全体的に赤くなっており、赤が強調されていることが分かります。

        画像
        画像

        5. ComfyUIでのプロンプト入力

        ComfyUIでは、CLIPTextEncodeノードでプロンプトを入力します。このノードは、プロンプトをSDXLが理解できる形式に変換する役割を果たします。

        ComfyUIでのSDXL環境では、ポジティブプロンプトとネガティブプロンプトの両方を同じCLIPTextEncodeノードで指定できます。

        画像
        • ポジティブプロンプト: 生成したい画像の特徴を記述します。
        • ネガティブプロンプト: 生成したくない画像の特徴を記述します。

        それぞれのプロンプト用にCLIPTextEncodeノードを用意し、KSamplerノードの対応する入力に接続します。詳細は、以下の記事をご覧ください。

        6. embeddingでの品質向上

        embedding(エンベッディング)は、特定の概念やオブジェクトを表現する埋め込みベクトルを学習したファイルで、非常に小さなファイルなのですが、これをComfyUIで読み込むことで、画像生成の際に特定のスタイルや要素を反映させたり、ネガティブプロンプトを簡略化することができます。
        例えば、ネガティブプロンプトをまとめたembeddingを使うと、たくさんのネガティブプロンプトを指定する必要がなくなります。

        使用方法

        冒頭で紹介した通り、ComfyUI Manager → Model Manager →検索窓に入れる方法でインストールできるものはそちらの方法がオススメです。例えばSD1.5でよく使われる「EasyNegative」は簡単にインストールできます。

        画像

        今回は、「negativeXL_D」というSDXLで人気の複数のネガティブプロンプトが埋め込まれているembeddingを使用します。ComfyU Manager経由でのインストールではない方法を紹介します。

        https://civitai.com/models/118418/negativexl

        https://huggingface.co/gsdf/CounterfeitXL/blob/main/embeddings/negativeXL_D.safetensors

        • negativeXL_D.safetensorsをダウンロードし、ComfyUI/models/embeddingsフォルダに格納してください。

        このリンクからいったんPC/Macのストレージにダウンロードし、Google ColabかGoogle Driveを使って、アップロードします。

        画像

        メニューの「Refresh」すると反映されます。「Restart Required」と表示された場合は、ComfyUI Managerからの再起動で問題なく利用できますが、それ以外の問題が起きた場合は、念の為Google Colabを再起動しましょう。

        • embeddingを使用するには、プロンプトに「embedding:[embeddingの名前]」を含めます。今回の場合は、ネガティブプロンプトに「embedding:negativeXL_D」を含めます。ポジティブプロンプトは「1girl」のみとします。
        画像

        以下が生成結果です。embeddingありの場合は、リアル調で細部がはっきり描かれています。

        画像

        1344×704 (seed:3) “1girl”のみ

        画像

        1344×704 (seed:3) “1girl” +  ネガティブプロンプトに「embeddings:EasyNegative」を指定

        画像

        1344×704 (seed:3) “1girl” +  ネガティブプロンプトに「embeddings:negativeXL_D」を指定

        画像

        1344×704 (seed:3) “1girl” +  ネガティブプロンプトに「embeddings:EasyNegative, embeddings:negativeXL_D」を指定

        画像

        EasyNegativeとnegativeXL_Dは同じ作者・rqdwdw 氏によるembeddingsであり、近い特性を持っていますが、混ぜて使うことは必ずしも良い結果を産まないようです。¥

        AUTOMATIC1111では「Textual Inversion」という機能で扱われていたembeddingですが、かつてのテクニックもモデルさえ同じであればそのまま使うことができます。 embedding、negative XLについての混合実験についてはこちらの記事もご参照ください。

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

        中間まとめ

        この記事では、ComfyUIでSDXLのプロンプトを記述する基本的な方法をまとめました続いて、応用的なテクニックを紹介していきます。

        <次回に続きます!>

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

        SDXLによる画像生成AIについてしっかり学びたいひとはこちらの書籍「画像生成AI Stable Diffusionスタートガイド」(通称「#SD黄色本」)がオススメです。

        https://j.aicu.ai/SBXL

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

        Originally published at https://note.com on Sept 1, 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. 【超入門 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. 【超入門】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. [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.

            1. AICU media 7月のアクセスランキング発表!みんなが注目したAIトレンド記事はこれだ!

              ジリジリと暑い日が続きますが、AICUマガジン読者の皆さんはいかがお過ごしですか?😎🌴
              今月もAICU media編集部は「つくる人をつくる!」をビジョンに熱いAI情報を毎日!お届けしましたが、中でも特に人気だった記事TOP10を発表しちゃいます!🥁✨

              第1位👑 描画工程を推論する「Paints-Undo」、Google Colabで実際に動作させてみた (2024年7月10日)

              堂々の第1位は、画像編集AI「Paints-Undo」の実践記事!
              研究としても衝撃的な内容で是非を含めてディスカッション可能な状態になっているのが秀逸。さすがLvmin Zhang さん(lllyasviel)です。
              AICUとしてはGoogle Colabで試せるコードを公開しましたが、社会的影響を鑑みて、当面は文末にてメンバーシップのみの公開とさせて頂いております。実際に動かしてみた人の声も多数いただいております。

              第2位🥈 Stability AI、オープンウェイトなテキスト楽曲生成「Stable Audio Open」公開。Google Colabで無料で体験!(2024年7月23日)

              音楽生成AI戦線に激震!? Stability AIの新作「Stable Audio Open」の研究論文がリリースされました。Google Colabで無料体験できるコードも人気です!

              第3位🥉 Stability Matrixで Automatic1111が起動しない…そんなときに試してほしいノウハウ(2024年7月14日)

              大好評の「画像生成AI Stable Diffusionスタートガイド」(通称 #SD黄色本 )で学んだ Stable Diffusionユーザー必見! トラブルシューティング記事がランクイン!「Stability Matrix」×「Automatic1111」の組み合わせで困っている人は意外と多かったのかも…?!GitHubでのソースコード公開に加えて、discordでのサポート、noteメンバーシップ向け掲示板でのサポートがございます、あわせてご参照ください。

              第4位🏅 [保存版] Animagine XL 3.1 生成比較レポート(2024年3月20日)

              ロングラン記録を更新中のこの記事は、漫画制作で話題の「Animagine XL 3.1」を徹底解剖!AniFusionなどでも採用されていますので需要はあるのかもしれませんね。生成画像を比較しながら、その実力を知りたい人が多かったようです!実は英語版の記事もリリースされています。

              https://medium.com/@aicu/collectors-edition-animagine-xl-3-0-vs-3-1-comparison-report-329da2488737

              第5位🏅 img2img入門(1) i2iでできることを知ろう(2024年1月5日)

              画像生成AIを使いこなすための基礎知識!『i2i』とは、image-to-image、画像とテキストプロンプトをもとにして、新たな画像を生成する方法のことです。これにより、テキストのみでは伝えにくかった細かい雰囲気や色味などが再現しやすくなります。「SD黄色本」に収録されているので詳細を知りたいひとはぜひ書籍かメンバーシップどうぞ!

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

              https://j.aicu.ai/SBXL

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

              第6位🏅 AUTOMATIC1111 v1.10.xリリース – Stable Diffusion 3 Mediumをサポート(2024年7月28日)

              2024年7月28日に、Stable Diffusion WebUI「AUTOMATIC1111」の最新版 v1.10.0 がリリースされました。最新の画像生成AIモデルの一つである Stable Diffusion 3 Medium (SD3M) が公式にサポートとなりました。

              第7位🏅 【まだ間に合う!!】賞金400万円超えのAI映像コンテストに投稿してみた(2024年7月11日)

              実際に挑戦した方のレポートは貴重ですね!
              さらにレポートしたAICUコラボクリエイターの ぽんずさん(@ponzponz15)部門賞を獲得しています!おめでとうございます、さすがです!

              第8位🏅 【初心者向け!】Runway Gen-3 Alphaでプロンプト自動生成して簡単動画制作(2024年7月15日)

              動画生成AIもどんどん身近になっていますね!
              「Runway Gen-3 Alpha」を使った簡単な動画制作術がランクイン!
              その後、Gen-3には静止画から動画を生成する image to video (i2v)や、Last Frame機能がリリースされました。

              第9位🏅 FLUX.1[dev]の実力は?比較しながらGoogle Colabで動かしてみた。(2024年8月5日)

              話題の画像生成AIモデル「FLUX.1[dev]」をGoogle Colabで試してみました!
              他のモデルとの比較も参考になりますね!

              第10位🏅 日本人が開発した「Regional Prompter」がなかなかすごい!(2024年1月15日)

              こちらもロングラン記事です。日本人開発のAIツールに注目が集まりました!「Regional Prompter」とは…?!

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

              まとめ

              2024年7月は、画像生成AI関連の記事はもちろん、音楽生成AIや動画生成AIなど、幅広いジャンルのAIツールが人気を集めました!

              「AICUマガジン Vol.3」では2024年上半期のランキングを特集しています。さらなるトレンドに興味がある方はぜひご購読ください。

              ■「AICUマガジンVol.3」Kindle Unlimitedにて無料配信開始!!

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

              今後も最新のクリエイティブAIの使いこなしテクニックに関する情報、コンテスト情報などを発信していきます、お楽しみに!😎🌻

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