カテゴリー: Stability AI

  • アカデミー賞受賞監督ジェームズ・キャメロン氏、Stability AIの取締役に就任!

    カリフォルニア州ロサンゼルス 2024年9月24日 – 生成AIのリーディングカンパニーであるStability AIは、伝説的な映画監督、技術革新者、そして視覚効果のパイオニアであるジェームズ・キャメロン氏が取締役会に加わったことを発表しました。この発表は、Stability AIのCEOであるプレム・アッカラージュ氏によって行われました。

    ジェームズ・キャメロン氏は、最先端技術と先見性のあるストーリーテリングを融合させる原動力となってきました。監督、脚本家、プロデューサーとして、映画の限界を押し広げ、「ターミネーター」、「エイリアン」、「アビス」、「タイタニック」、「アバター」シリーズなど、史上最も象徴的で技術的に進んだ映画に命を吹き込んできました。

    キャメロン氏の参加は、Stability AIのビジュアルメディア変革というミッションにおける大きな前進となります。キャメロン氏とStability AIは共に、新興技術と創造性の交差点で活動しています。キャメロン氏のアーティスト中心の視点と、ビジネスおよび技術的な洞察力は、Stability AIがかつては想像もつかなかった方法でストーリーを語る力をクリエイターに与える、新たな機会を開拓し続けることを支援するでしょう。

    Stability AIのCEOであるプレム・アッカラージュ(Prem Akkaraju)氏は、「ジェームズ・キャメロン氏は未来に生きており、私たちが追いつくのを待っている」と述べています。「Stability AIの使命は、クリエイターにアイデアを実現するためのフルスタックAIパイプラインを提供することで、次の100年間のビジュアルメディアを変革することです。ジェームズのような技術と創造性のビジョナリーが、当社の最高レベルに参画することで、この目標を達成するための比類なき優位性を得ることができました。これはStability AIだけでなく、AI業界全体にとって画期的な出来事です」とアッカラージュ氏は付け加えました。「ビジュアルメディアの次のフロンティアは、アーティストとテクノロジーの真の融合によって築かれるでしょう。そしてStability AIはその先頭に立っています。」

    Stability AIのオープンモデルは、世界で最も広く使用されている基盤AI画像モデルであり、世界中のクリエイターと開発者の最大のエコシステムを育成しています。同社のモデルは、オープンソースプラットフォームHugging Faceでも最も人気のある画像モデルです。主力モデルであるStable Diffusionは、1億5000万ダウンロードを突破しました。大手企業を含む数千の企業が、クリエイティブワークフローを強化するためにStability AIのモデルに依存しています。

    LIGHTSTORMの会長であり、Stability AIの取締役であるジェームズ・キャメロン氏は、「私は、信じられないほどのストーリーを語るために、可能なことの限界を押し広げる新興技術を探し求めてきました。30年以上前にCGIの最前線に立ち、それ以来、最先端であり続けてきました。今、生成AIとCGI画像作成の交差点が次の波です。これら2つの全く異なる創造エンジンの融合は、アーティストがかつて想像もできなかった方法でストーリーを語るための新しい方法を切り開くでしょう。Stability AIはこの変革をリードする態勢を整えています。ビジュアルメディアの未来を形作るStability AIのチームであるショーン、プレム、そしてStability AIのチームと協力できることを嬉しく思います。」と述べています。

    キャメロン氏は、Greycroftの共同創設者兼マネージングパートナーであるダナ・セトル(Dana Settle)氏、Coatue ManagementのCOO兼ゼネラルパートナーであるコリン・ブライアント(Colin Bryant)氏、起業家、慈善家、そしてFacebookの元社長であり、執行会長を務めるショーン・パーカー(Sean Parker)氏など、他の新任取締役に加わります。

    Stability AIの執行会長であるショーン・パーカー氏は、「ジェームズ・キャメロン氏は、映画監督としての芸術的ビジョンと、先駆的な技術者としての役割の両方において、伝説的な人物です。彼のような才能を持つアーティストが取締役会に加わることは、Stability AIにとって新しい章の始まりとなります。生成メディアプラットフォームと芸術コミュニティとの間の無限の可能性を秘めた創造的なコラボレーションに、私たちは非常に興奮しています」と付け加えました。

    アカデミー賞を受賞した視覚効果会社Weta DigitalのCEOを務めた後、CEOに就任したプレム・アッカラージュ氏は、取締役会および経営陣と緊密に協力しながら、Stability AIの戦略的方向性を引き続き導いています。

    Stability AIについて

    Stability AIは、人工知能(AI)を通じてビジュアルメディアを変革することを目指すグローバル企業です。現在、Stability AIは、画像、ビデオ、3D、オーディオ、言語のための幅広い生成AIモデルを開発しています。適切な保護対策を講じた上で、これらのモデルはAIにおける透明性と競争を促進するためにオープンに共有されています。Stability AIの主力画像モデルであるStable Diffusionは、AI生成画像の最大約80%を支えるオープンソース画像モデルファミリーです。テキストからオーディオへのウェブアプリケーションであるStable Audioは、最近、TIME誌の2023年のベスト発明の1つに選ばれました。

    ジェームズ・キャメロンについて

    ジェームズ・キャメロン(James Cameron)氏は、カナダ出身の伝説的な映画監督で、技術革新者、海洋探検家でもあります。過去30年間で最も記憶に残る映画のいくつか、「ターミネーター」、「エイリアン」、「アビス」、「トゥルーライズ」、「タイタニック」、「アバター」シリーズを制作してきました。「アバター」は、現在、国内および世界中の興行収入記録を保持しており、世界で29億ドル以上の興行収入を上げています。23億ドルの「アバター:ウェイ・オブ・ウォーター」と22億ドルの「タイタニック」を含め、史上最高の興行収入を記録した映画の4つのうち3つはキャメロン氏の作品です。彼は3つのオスカー、2つのエミー賞、そしてその他数々の賞を受賞しています。

    近年では、原爆をテーマにした新作映画「ラスト・トレイン・フロム・ヒロシマ(原題)」の製作も発表しており、大きな注目を集めています。この作品は、広島と長崎で原爆を生き延びた日本人男性、山口彊さんの実話を中心に据えた作品となる予定です。キャメロン監督は2009年に山口さんと面会しており、山口さんから直接体験を託されたという経緯があります。

    過去20年間、キャメロン氏はビジュアルメディアのための業界を定義する技術を開発してきました。彼は、新しいディスプレイデバイスを考慮して、メディアの消費方法を変革する3Dルネッサンスの先頭に立っています。キャメロン氏はまた、前例のない海洋技術も開発してきました。彼は、2012年にチャレンジャー海淵に潜航したDEEPSEA CHALLENGER潜水艇と科学プラットフォームを共同設計および共同エンジニアリングし、歴史上初めて単独操縦士として地球の最深点に降下しました。

    Based on original article by Stability AI.


    SF映画という映像メディアから世界中の人々の「未来の常識」を開拓してきたキャメロン氏が、今後 Stability AI をスクリーンにしてどのような未来を描くのか、ワクワクが止まりません!AICU mediaも応援しています!

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

    #StabilityAI #JamesCameron #ジェームズ・キャメロン

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

  • Stability AI も登壇!「AIが変える 美容&ファッションのミライ」

    グローバルビューティー&ファッションAIフォーラムが開催!注目の講演内容は?

    美容とファッションの未来を創る、AIとデータの力とは?

    2024年9月27日 神田スクエアルームにて開催の「2024グローバル ビューティー&ファッションAIフォーラム in Tokyo」では、資生堂、花王、アイスタイル、そして Stability AI など業界の最先端を走る企業のエキスパート達が登壇!

    AI、CRMデータ、UI/UXなど、ホットなキーワードを軸に、パーフェクト株式会社が提供する革新的なビューティーテックソリューションを体感できる貴重な機会です。

    ✨見逃せないセッション内容を一部ご紹介!✨

    【セッション① 生成AIが生み出す新たなブランド価値】

    Stability AI 滝澤琢人氏、資生堂 Omer Iqbal氏、パーフェクト株式会社 磯崎順信氏が登壇。 生成AIは、ビューティー&ファッション業界にどのような変革をもたらすのか? 熱い議論に期待が高まります!

    【セッション② 成果が出るユーザージャーニーとは?UIUXの最適解を探る】

    株式会社Sprocket 曾我博規氏、株式会社エキップ 鳥橋葉子氏が、顧客体験を最大化するUI/UX戦略を解説。 デジタル時代のブランド成功の鍵を握る、顧客との最適な関係構築に迫ります!

    画像

    【セッション③ “スキンケア難民”の救世主?スキンケアテック最前線】

    BeautyTech.jp編集長 矢野貴久子氏オーガナイズで、花王 菊池祥氏、株式会社Kireii 堀井麻友美 氏、株式会社ユーブローム 柴田未央氏が登壇。 個別化が進むスキンケアニーズに応える、パーソナライズドソリューションに注目が集まります!

    【セッション④ 急拡大する美容医療市場。脅威か商機か?】

    株式会社トリビュー 毛迪氏、東京イセアクリニック 田儀里紗氏、INFASパブリケーションズ 牧田英子氏、パーフェクト株式会社 中川良子氏が、美容医療市場の現状と将来展望を徹底分析。 ビューティー&ファッション業界との融合、新たなビジネスチャンスを探ります!

    【セッション⑤ デジタル戦略のカギ、散在するユーザーデータの攻略法】

    アイスタイル 押野卓也氏、資生堂 大黒泰平氏が、複雑化する消費者行動を捉えるデータ分析の重要性を解説。 パーフェクト株式会社の最新ソリューションも交え、顧客エンゲージメントを高める戦略に迫ります!


    その他にも、注目のセッションが目白押し!

    参加費無料のこの機会に、ぜひ会場でビューティー&ファッション業界の未来を体感してください!

    ▼詳細&チケット申し込みはこちら(無料)▼

    EventRegist https://j.aicu.ai/Perfect240923

    日時:2024/09/27(金) 13:00 ~ 17:00
    場所:KANDA SQUARE 3F SQUARE ROOM (東京都 千代田区神田錦町二丁目 2番地1)
    参加費:無料
    主催:パーフェクト株式会社

    美容業界のトレンドに興味がある方、AI活用に興味がある方、自社のビジネスにAIを取り入れたい方など、皆様のご参加を心よりお待ちしております。本フォーラムを通じて、AIが描く未来を一緒に探求しましょう。

    【関連情報】


    ▼Kireiiは化粧品の選び方を変える成分検索プラットフォーム、デジタルハリウッド大学院がMOU締結で支援
    https://beautytech.jp/n/n56a63aa96d7f

    ▼コスメ系スタートアップの株式会社Kireiiとデジタルハリウッド大学大学院が産学共同研究でMOU締結

    https://prtimes.jp/main/html/rd/p/000002287.000000496.html

    ✨️本記事は株式会社Kireiiのご提供でお送りしております✨️

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

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

  • [Stability AI API] Stable Fast 3DをGoogle Colabで動かす

    魅力的な機能をたくさん備えた「Stability AI API」を使いこなすシリーズです。今回は、2024年8月に公開された「Stable Fast 3D」を使ってみます。このAPI は、単一の 2D 入力画像から高品質な 3D アセットを生成します。

    試してみる

    API キーを取得し、Google Colab サンプルにアクセスしてください。

    ▶基本はこちら
    【超入門】Stability AI API 公式サンプルで「TextToImageの最近の文法」を総ざらい!

    Fast 3DのGLBファイル生成はGoogle Colabでほんの3-5秒ぐらいです

    背景画像の除去は自動で処理されます。

    画像

    ちゃんと後頭部の厚みがあります。

    画像
    画像

    例えば漫画の構図出しとか、アクリルキーホルダーのバーチャル試作といった使い道もあるかもしれませんね。

    画像
    画像
    画像

    ちゃんと後頭部の厚みがあります。

    画像

    マテリアル推定がうまくいかないときもあります。

    画像

    犬沢某(@InsBow)さんのキャラクターイラストで実験。かわいいです。

    画像

    同じく、キャラクターイラストより。ちゃんと見えないところも3D化しています。

    画像

    全体としてイラストレーションのほうがうまくいく印象がありました。

    APIの詳細

    POST リクエストでエンドポイント
    https://api.stability.ai/v2beta/3d/stable-fast-3d
    を呼び出してください。
    Colabのサンプルコードより

    #@title Stable Fast 3D
    
    #@markdown - Drag and drop image to file folder on left
    #@markdown - Right click it and choose Copy path
    #@markdown - Paste that path into image field below
    #@markdown <br><br>
    
    image = "/content/cat_statue.jpg" #@param {type:"string"}
    texture_resolution = "1024" #@param ['512', '1024', '2048'] {type:"string"}
    foreground_ratio = 0.85 #@param {type:"number"}
    
    host = "https://api.stability.ai/v2beta/3d/stable-fast-3d"
    
    response = image_to_3d(
        host,
        image,
        texture_resolution,
        foreground_ratio
    )
    
    # Save the model
    filename = f"model.glb"
    with open(filename, "wb") as f:
        f.write(response.content)
    print(f"Saved 3D model {filename}")
    
    # Display the result
    output.no_vertical_scroll()
    print("Original image:")
    thumb = Image.open(image)
    thumb.thumbnail((256, 256))
    display(thumb)
    print("3D model result:")
    display_glb(filename)
    

    リクエストのヘッダーには、authorization フィールドに API キーを含める必要があります。リクエストの本文は multipart/form-data でなければなりません。

    リクエストの本文には、以下を含める必要があります。

    • image

    リクエストの本文には、オプションで以下を含めることもできます。

    • texture_resolution
    • foreground_ratio
    • remesh

    注: これらのパラメーターの詳細については、以下のリクエストスキーマを参照してください。

    出力

    出力は、JSON、バッファー、画像を含む glTF アセットを含むバイナリ BLOB です。詳細については、GLB ファイル形式仕様 を参照してください。

    クレジット

    生成が成功するごとに 2 クレジットの定額料金がかかります。生成が失敗した場合、課金されません。
    ※10USD = 1,000 creditsなので、2セント、3円ぐらいですね。

    APIリクエストスキーマより

    • image (必須): 3D モデルを生成する画像。
      1. サポートされている形式:
        • jpeg
        • png
        • webp
      2. ルール:
        • 各辺は少なくとも 64 ピクセルである必要があります
        • 合計ピクセル数は 4,096 ~ 4,194,304 ピクセルの間である必要があります

    Colabのサンプルでの引数

    画像
    • texture_resolution (オプション): デフォルト: 1024。列挙型: 1024, 2048, 512。アルベド(カラー)マップ法線マップの両方に使用されるテクスチャの解像度を決定します。解像度はピクセル単位で指定され、値が大きいほどテクスチャのディテールレベルが高くなり、サーフェスをより複雑かつ正確にレンダリングできます。ただし、解像度を上げるとアセットサイズも大きくなるため、読み込み時間とパフォーマンスに影響を与える可能性があります。1024 は適切なデフォルト値であり、変更する必要はほとんどありません。
    • foreground_ratio (オプション): デフォルト: 0.85。フレーム内で処理されるオブジェクトの周囲のパディング量を制御します。この比率は、フレーム全体のサイズに対するオブジェクトの相対的なサイズを決定します。比率が高いほどパディングが少なくなり、オブジェクトが大きくなります。比率が低いほどパディングが増え、フレーム内のオブジェクトのサイズが効果的に小さくなります。これは、車やバスなどの長くて狭いオブジェクトを正面(狭い側)から見た場合に役立ちます。この場合、前景比を下げると、生成された 3D アセットが押しつぶされたり歪んだりするのを防ぐのに役立つ可能性があります。デフォルト値の 0.85 は、ほとんどのオブジェクトに適しています。
    • remesh (オプション): デフォルト: none。列挙型: none, triangle。3D モデルの生成に使用されるリメッシュアルゴリズムを制御します。リメッシュアルゴリズムは、入力画像から 3D モデルをどのように構築するかを決定します。「none」のデフォルト値は、リメッシュなしでモデルが生成されることを意味し、ほとんどのユースケースに適しています。「triangle」オプションは、三角形の面を持つモデルを生成します。

    Blenderでみたメッシュの状態

    画像

    GLB形式なので、Mozilla HubsやDOOR.NTTをはじめ、多様なWeb3D系で利用できます。Unityの場合はUniGLTFを使えばできますね。

    なお、Stable Fast 3DのAPI提供ではなくセルフホストのためのモデルデータも入手可能です。以下のHugginFaceで公開されています。
    stabilityai/stable-fast-3d · Hugging Face
    https://huggingface.co/stabilityai/stable-fast-3d

    なお、ライセンスは「Stability AI Community License」が適用されており、年間収益100万ドル(約1億5000万円)以内の個人または組織なら商業利用も可能とのことです。

    実はStability AI の 3D関連APIは、Stable Zero123など他にもあります。

    https://ja.stability.ai/3-d

    Stable Fast 3D

    Stable Fast 3Dは、TripoSRを基にした重要なアーキテクチャの改善と強化された機能により、単一の画像からわずか0.5秒で高品質な3Dアセットを生成します。これはゲームやVRの開発者、リテール、建築、デザイン、およびその他のグラフィック集約型の分野の専門家に役立ちます。

    Stable Video 4D

    Stable Video 4Dは、単一の動画をアップロードすることで、8つの視点からダイナミックな新視点動画を受け取ることができるモデルです。単一のオブジェクト動画を複数の新視点動画に変換し、約40秒で8つの視点から5フレームの動画を生成します。カメラアングルを指定することで、特定のクリエイティブニーズに合わせて出力を調整できます。これにより、新たなレベルの柔軟性と創造性が提供されます。

    Stable Zero 123

    Stable Zero123は、3Dオブジェクトの生成に特化した高度なAIモデルです。さまざまな視点からオブジェクトがどのように見えるべきかを正確に解釈する能力に優れており、3Dビジュアライゼーションの分野で重要な進歩を遂げています。

    Stable Video 3D

    SV3Dは、Stable Video Diffusionのパワーを活用し、斬新なビュー合成において優れた品質と一貫性を保証することで、3D技術における新たなベンチマークを設定します。このモデルには2つの異なるバリエーションがあります: SV3D_uは単一画像から軌道動画を生成し、SV3D_pは単一画像と軌道画像の両方からフル3D動画を生成するための強化された機能を提供します。

    Stable TripoSR

    Tripo AIとのコラボレーションによる、3Dオブジェクト再構築モデル「TripoSR」です。この新しい画像から3Dへのモデルは、エンターテインメント、ゲーム、工業デザイン、建築の専門家の高まる需要に応えるために設計されており、詳細な3Dオブジェクトの視覚化に対応するレスポンシブな出力を提供します。

    画像
    画像

    https://ja.stability.ai/self-hosted-license

    Stable Fast 3DのStability AI APIによる利用は、高度な演算基盤を持っていなくても1回3円で高速ならAPI利用が可能になります。
    ゲームやメタバースプロジェクトへの活用が期待されますね。

    以上、Stable AI API より Fast 3D をお伝えいたしました。

    マガジン「Stability AI Fun!」、各API解説への目次はこちらです。

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

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

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

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

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

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

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

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

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

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

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

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

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

      https://platform.stability.ai

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

      Edit APIとは?

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

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

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

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

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

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

      Inpaint機能とは?

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

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

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

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

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

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

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

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

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

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

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

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

      画像

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

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

      画像

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      画像
      inpaint後の画像がこちら

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

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

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

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

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

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

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

      Outpaint機能とは?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      得られた画像がこちら!

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

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

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

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

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

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

      さいごに

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

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

      上記「Stability AI API Guide」noteより

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

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

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

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

      画像

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

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

      画像
      画像

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

      画像

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

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

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


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

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

    1. Stability AI:動的多視点動画生成を実現する「Stable Video 4D」を発表

      2024年7月24日、Stability AI は同社の初の Video to Video生成モデルである動的多視点動画生成技術「Stable Video 4D」を提供開始しました。1本のビデオから8つの新しいアングルの動的で斬新な視点の動画を生成できます。

      この発表に合わせて、このモデル開発で達成された方法論、課題、ブレークスルーを詳述した包括的な技術レポートも公開されています。

      Stable Video 4D (英語ページ)

      日本語公式リリース

      https://ja.stability.ai/blog/stable-video-4d

      主なポイント:

      • Stable Video 4D は、1つの目的の動画から、8 つの異なる角度/視点からの斬新な複数視点動画に変換します。
      • Stable Video 4D は、1回の推論で、8視点にわたる 5フレームを約40秒で生成します。
      • ユーザーはカメラアングルを指定して、特定のクリエイティブニーズに合わせて出力を調整できます。
      • 現在研究段階にあるこのモデルは、ゲーム開発、動画編集、バーチャルリアリティにおける将来的な応用が期待されており、継続的な改善が進められています。Hugging Face で現在公開中です。

      仕組み

      ユーザーはまず、単一の動画をアップロードし、目的の3D カメラの姿勢を指定します。次に、Stable Video 4D は、指定されたカメラの視点に従って 8 つの斬新な視点動画を生成し、被写体の包括的で多角的な視点を提供します。生成された動画は、動画内の被写体の動的な 3D 表現を効率的に最適化するために使用できます。

      現在、Stable Video 4D は 8 つの視点にわたって 5 フレームの動画を約 40 秒で生成でき、4D最適化全体には約 20 ~ 25 分かかります。開発チームは、ゲーム開発、動画編集、バーチャルリアリティにおける将来的な応用を構想しており。これらの分野の専門家は、オブジェクトを複数の視点から視覚化する機能から大きな恩恵を受け、製品のリアリズムと没入感を高めることがが可能になります。

      最先端のパフォーマンス

      画像拡散モデル、動画拡散モデル、多視点拡散モデルの組み合わせからサンプリングする必要がある従来のアプローチとは異なり、SV4D は複数の斬新な視点動画を同時に生成できるため、空間軸と時間軸の一貫性が大幅に向上しています。この機能により、複数の視点とタイムスタンプにわたって一貫したオブジェクトの外観が保証されるだけでなく、複数の拡散モデルを使用した煩雑なスコア蒸留サンプリング (Score Distillation Sampling: SDS) を必要としない、より軽量な 4D 最適化フレームワークが可能になります。

      Stable Video 4D は、既存の事例と比較して、より詳細で、入力動画に忠実で、フレームと視点間で一貫性のある斬新な視点動画を生成できます。

      研究開発

      Stable Video 4D は Hugging Face で公開されており、Stability AI 初の動画から動画への生成モデルであり、エキサイティングなマイルストーンとなっています。現在トレーニングに使用されている合成データセットを超えて、より幅広い実際の動画を処理できるように、モデルの改良と最適化に積極的に取り組んでいます。

      テクニカルレポート

      この発表と併せて、このモデルの開発中に達成された方法論、課題、ブレークスルーを詳述した包括的な技術レポートが公開されています。

      https://sv4d.github.io/static/sv4d_technical_report.pdf

      リポジトリより(VRAM40GB以上必要)

      Hugging Face でのモデル配布は実施されていますが、そのまま試すことは難しい状態です。AICU AIDX LabではローカルおよびGoogle Colab Pro環境で実験してみました(結論はVRAMが40GB以上必要で、動作確認には至っていません)。ノートブックへのリンクは文末にて。

      Stability AI の GitHub では Generative Models というリポジトリでサンプルコードが提供されています。
      SV4D helper
      https://github.com/Stability-AI/generative-models/blob/main/scripts/demo/sv4d_helpers.py
      Sample code
      https://github.com/Stability-AI/generative-models/blob/main/scripts/sampling/simple_video_sample_4d.py

      事前準備

      まず Hugging Face で以下のモデルについてライセンス登録を行う必要があります。

      https://huggingface.co/stabilityai/sv4d

      https://huggingface.co/stabilityai/sv3d

      次にGPUメモリが40GB以上搭載された環境をご準備ください。
      Google Colab Pro+ でA100環境をご準備ください。

      Hugging Face Access Token キー を HF_TOKEN という名前で Google Colab左側の「シークレット」に設定します。

      画像

      sv4d.safetensors と sv3d_u.safetensors を ./checkpoints/ にダウンロードします。

      SV4Dは、5つのコンテキストフレーム(入力映像)と、同じサイズの8つの参照ビュー(SV3Dのようなマルチビュー拡散モデルを使用して、入力映像の最初のフレームから合成された)が与えられ、576×576の解像度で40フレーム(5ビデオフレームx8カメラビュー)を生成するように訓練されています。より長い新規のビュー動画(21フレーム)を生成するために、まず5つのアンカーフレームをサンプリングし、次に時間的な一貫性を保ちながら残りのフレームを高密度にサンプリングするという、SV4Dを用いた新しいサンプリング方法を提案します。

      例えば21フレームの単一の入力動画でSV4Dを実行するには:

      generative-models ディレクトリから
      以下のコマンドを実行します。

      python scripts/sampling/simple_video_sample_4d.py –input_path <path/to/video>

      起動時パラメータとしては以下のとおりです。

      • input_path: 入力動画は、
        • assets/test_video1.mp4のような gif または mp4 形式の単一のビデオファイル
        • .jpg、.jpeg、または.png形式の(連番)ビデオフレームの画像を含むフォルダ
        • ビデオフレームの画像に一致するファイル名パターン
          を指定できます。
      • num_steps: デフォルトは20です。より高い品質を得るには50に増やすことができますが、サンプリング時間が長くなります。
      • sv3d_version: 参照マルチビューを生成するために使用するSV3Dモデルを指定するには、SV3D_uの場合は –sv3d_version=sv3d_u、SV3D_pの場合は –sv3d_version=sv3d_p を設定します。
      • elevations_deg: SV3D_p(デフォルトはSV3D_u)を使用して、指定された仰角(デフォルトの仰角は10)でノベルビュー動画を生成するには、 python scripts/sampling/simple_video_sample_4d.py –input_path test_video1.mp4 –sv3d_version sv3d_p –elevations_deg 30.0 を実行します。
      • 背景削除: 無地の背景を持つ入力動画の場合、(オプションで) –remove_bg=True を設定することで、rembgを使用して背景を削除し、ビデオフレームをトリミングします。ノイズの多い背景を持つ現実世界の入力動画でより高品質の出力を得るには、SV4Dを実行する前に、Cliipdropを使用して前景オブジェクトをセグメント化してみてください。

      # このままだと A100 GPU (40GB)でも動作しない
      #!python scripts/sampling/simple_video_sample_4d.py –input_path assets/test_video1.mp4 –output_folder outputs/sv4d


      import os
      os.environ[‘PYTORCH_CUDA_ALLOC_CONF’] = ‘max_split_size_mb:512’
      #パラメータを小さくしてみましたが動かず
      !python scripts/sampling/simple_video_sample_4d.py \
          –input_path assets/test_video2.mp4 \
          –output_folder outputs/sv4d \
          –model_path checkpoints/sv4d.safetensors \
          –model_path_sv3d checkpoints/sv3d_u.safetensors \
          –batch_size 1 \
          –height 32 –width 32 \
          –num_steps 1

      # どなたか動作確認していただける方を募集します!

      Stable_Video_4D.ipynb https://j.aicu.ai/SVD4D

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

    2. Stability AI、オープンウェイトなテキスト楽曲生成「Stable Audio Open」公開。Google Colabで無料で体験!

      2024年7月22日、Stability AI が「Stable Audio Open」の研究論文をリリースしました。
      「Stable Audio Open」というタイトルで 論文プレプリントサイト arXiV に 7月19日付けで投稿された論文は、

      オープンな生成モデルはコミュニティにとって非常に重要であり、ファインチューニングを可能にし、新しいモデルを提示する際のベースラインとして役立ちます。しかし、現在のほとんどのテキスト音声生成モデルは非公開であり、アーティストや研究者がその上に構築することはできません。ここでは、クリエイティブ・コモンズのデータで学習させた新しいオープンウェイトのテキスト音声モデルのアーキテクチャと学習プロセスについて説明します。我々の評価では、このモデルの性能は様々なメトリクスにおいて最先端のものと遜色ないことが示されています。特に、報告されたFDopenl3の結果(世代のリアリズムを測定)は、44.1kHzでの高品質なステレオサウンド合成の可能性を示しています。

      https://arxiv.org/abs/2407.14358
      Translated
       by AICU

      この研究論文では、Creative Commons データを使用してトレーニングされた Stability AI の新しい”オープンウェイトなテキストオーディオ”(open-weights text-to-audio)モデルのアーキテクチャとトレーニングプロセスについて解説しています。
      このオープンなモデルは Hugging Faceで公開されています。このモデルは Stability AI Community Licenseに基づいてリリースされており、年間収益(annual revenue)が 100 万ドル以下の個人または組織による非商用および商用利用が可能です(エンタープライズ ライセンスについては問い合わせ)。

      ・このモデルは、テキスト プロンプトから 44.1kHz の高品質ステレオ オーディオを生成でき、リアルなサウンドやフィールド録音を合成するために使用可能。

      ・Stable Audio Open はコンシューマーグレードの GPU 上で実行されるため、学術目的や芸術的なユースケースに利用可能。

      アーキテクチャ

      Stable Audio Openは、3つの主要コンポーネントを備えたテキスト音声モデルを導入しています:
      ・管理可能なシーケンス長に波形を圧縮するオートエンコーダ
      ・テキスト調整のためのT5ベースのテキスト埋め込み
      ・オートエンコーダの潜在空間で動作するトランスフォーマベースの拡散モデル(DiT)。

      このモデルは44.1kHz、最大47秒の可変長ステレオ音声を生成します。オートエンコーダは21.5Hzという低い潜在レートを達成し、音楽やオーディオに対応できます。Stable Audio Openは(2024年4月3日に公開された)Stable Audio 2.0の亜種ですが、異なるデータセット(Creative Commonsデータ)で学習されています。このアーキテクチャは似ていますが、CLAPの代わりにT5テキストコンディショニングを使用しています。

      学習データ

      Stable Audio Openは、CC-0、CC-BY、またはCC-Sampling+でライセンスされた約50万件の録音を使用してトレーニングされました。このデータセットは、Freesoundの472,618件とFree Music Archive (FMA)の13,874件から構成されています。

      著作権で保護された素材が含まれていないことを確認するため、このコンテンツは、PANNs audio taggerを使用してFreesoundの音楽サンプルを特定することにより、慎重にキュレーションされました。特定されたサンプルはAudible Magicのコンテンツ検出会社に送られ、データセットから著作権で保護されている可能性のある音楽を確実に削除しました。

      ユースケース

      Stable Audio Openは、生成されるコンテンツの長さを調整したり、様々な業界やクリエイティブなプロジェクトの正確なニーズを満たすなど、音声生成をカスタマイズするために微調整することができます。ユーザーは、A6000 GPUを使ってローカルでモデルをトレーニングできます。プロンプトの作成については、Stable Audio 2.0のヒントをご覧ください。

      ここでは、このモデルをすぐに使用したり、微調整したり、ワークフローに統合したりするためのアプリケーションの例をいくつか紹介します

      🎧️ぜひとも公式サイトで音源をきいてみてください📢
      https://stability.ai/news/stable-audio-open-research-paper

      サウンドデザイン

      サウンドエフェクトとフォーリーエフェクト(音効)

      足音、ドアのきしみ音、環境音など、映画、テレビ、ビデオゲーム、ゲーム開発に使用できる効果音を生成します。

      アンビエントサウンド


      シーンのムードや雰囲気に合ったサウンドスケープや背景テクスチャを作成できます。

      サンプル作成

      音楽トラックを制作するためのドラムループと音楽サンプルを生成します。

      商用およびマーケティング用途


      オーディオブランディング

      広告用のサウンドエフェクトを作成したり、オーディオロゴやブランドサウンドを開発し、カスタムオーディオエレメントを通じてブランドの認知度やアイデンティティを高めます。

      教育と研究

      学術プロジェクト

       オーディオ合成、機械学習、音楽学の研究にこのモデルを使用し、生成されたオーディオの実験と分析を行います。

      このデモでは、より多くの例と、Stable Audio Openのパフォーマンスが他のモデルとどのように比較されるかを見ることができます。

      Google Colabでの実験

      まず Stability AI の非商用/コミュニティライセンスを取得します。

      https://stability.ai/community-license

      画像

      続いて、 Hugging Face 上のStable Audio Open の公開ページでライセンスを取得します。

      https://huggingface.co/stabilityai/stable-audio-open-1.0

      画像

      ご注意:商用利用の場合は、https://stability.ai/license をご参照ください。 sai@aicu.ai でもご相談をお受けいたします。

      公式サンプルをGoogle Colab環境で動作確認したAICU版のコードをこちらで公開しています。

      https://j.aicu.ai/StableAudioOpen

      次に Hugging Face のトークンを取得します。
      https://huggingface.co/settings/tokens
      Google Colabのシークレットに設定します。

      画像

      あとは実行するだけ!長さや冒頭の空白も設定できます。

      # Set up text and timing conditioning
      conditioning = [{
          “prompt”: “128 BPM tech house drum loop”,
          “seconds_start”: 0,
          “seconds_total”: 30
      }]

      サンプルコードのデフォルトプロンプト

      output.wav として生成されているので、ダウンロードして聴いてみましょう。

      画像

      以下は実際に生成した例です。
      “128 BPM NES, 8 bit action game BGM”

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

      “128 BPM techno pop” 

      https://note.com/api/v2/attachments/download/7b6626ad5756ddc578dd2d64e096afcd

      “sound of the rain hitting the roof”

      https://note.com/api/v2/attachments/download/4de4c04ba8f4de31f955b71b64fb60a2

      “blackbird song in a forest”

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

      “chorus lalala…”

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

      最長生成秒数は47秒のようです。GPU消費は16GB以下です。

      画像

      学習元が Creative Commons であるということを考えて生成するとよいのかもしれません。それにしても「何回生成しても無料」というのはすごいですね。

      まとめ

      Stable Audio Openのリリースは、オープンソースのオーディオ生成AIにおける重要な一歩になると考えます。44.1kHzで高品質のステレオサウンドを生成し、コンシューマー規模のGPUで動作し、データの透明性に重点を置いています。このモデルの使いやすさとパフォーマンスにより、研究者とアーティストの両方にとって価値あるツールとなり、オープンなオーディオAIで可能性と限界を押し広げると考えます。

      この記事がよかったら、シェアとフォローよろしくお願いいたします!

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

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

    3. Stability AI、新コミュニティライセンス「Stability AI Community License」を発表 – 研究・非商用・小規模事業者の商用利用を無償化

      Stability AI、新コミュニティライセンス「Stability AI Community License」を発表 – 研究・非商用・小規模事業者の商用利用を無償化

      ニュースです。2024年7月5日、Stability AIが「Stability AI Community License」を発表しました。当初 SD3 に関連付けられていた商用ライセンスがコミュニティ内で混乱と懸念を引き起こしていたことを受け止め、個人クリエイターと中小企業向けのライセンスが改訂されました。
      公式リリースよりお送りします。

      Community License — Stability AI

      Stability AIは、新しく「Stability AI Community License」を発表しました。このライセンスでは、研究、非商用、商用利用を無償で許可されます。年間収益が100万米ドル(現在のレートで約1億6千万円)を超え、Stability AIのモデルを商用製品やサービスに使用する場合のみ、有料のエンタープライズライセンスが必要となります。

      今回の発表は、Stability AIの利用者とオープンソースの基本原則に忠実でありたいと考えている行動の表明、とされています。

      • アーティストフレンドリーでクリエイターの自由を尊重
      • 研究によりそい
      • 透明性と明確性を備えたライセンス
      • コミュニティ重視と価値創出に基づいたオープンソース哲学
      • ユーザーとの継続的なコミュニケーションとエンゲージメントへの貢献

      コミュニティへのアップデート

      Stability AIは、高品質の生成AIモデルとテクノロジーを開発し、生成AIのイノベーターとメディアクリエイターのコミュニティに広く共有することに尽力しています。しかしながら、最新のリリースであるSD3 Mediumは、コミュニティの皆様の高い期待に沿えなかったことを認識しています。

      皆様からのフィードバックを受け止め、懸念事項に対処し、オープンソースコミュニティへのサポートを継続するために改善を行いました。

      ライセンスを改訂します

      SD3に関連して当初設定していた商用ライセンスが、コミュニティ内で混乱と懸念を引き起こしたことを認識し、個人クリエイターと中小企業向けのライセンスを改定しました。

      新しい「Stability AI Community License」の下でリリースされるモデルは、以前のライセンスよりもはるかに幅広く、無料で使用できます。このライセンスは、SD3 Mediumを含む最近のStability AIモデルを網羅しています。

      今回のライセンス改定の目的:

      • 非商用利用は引き続き無料: 自分のデバイスにStability AIモデルをインストールして実行する個人や組織 (直接、またはそれらを含む無料のオープンソースパッケージをインストールすることを介して) は、非商用利用の場合、引き続き無料で使用できます。これは、無料で研究成果を発表する研究者、無料のオープンソース開発者、常勤の学生、教師、趣味で利用する方々、モデルを改良して配布する「ファインチューナー」など、コミュニティの大部分を対象としています。
      • 個人利用と中小企業に適した無料の商用利用: 年間収益が100万米ドル (または現地通貨換算) を超えない限り、「Stability AIコミュニティライセンス」の下でStability AIのモデルを使用する場合、派生物 (Stable Diffusion 3のファインチューンなど) を作成する場合、または製品やサービスにモデルを統合する場合、無料で利用できます。
      • 制限の緩和: Stability AIコミュニティライセンス契約書では、作成できるメディアファイル (画像、動画など) の数に制限はありません。このライセンスが適用される限り、違法行為やライセンスまたは利用規約に明らかに違反する行為に使用しない限り、Stability AIが結果として得られた画像、ファインチューン、またはその他の派生物を削除するように要求することはありません。たとえStability AIに料金を支払わなかった場合でも同様です。
      • 商用ユーザーのみが自己申告を必要とする: Stability AIのモデルまたは派生物を独自の商用製品またはサービスに統合し、年間収益が100万米ドル未満の場合、Stability AIに料金を支払う必要はありません。ただし、この簡単なフォームに記入し、最も関心のあるモデルを指定してください。年間収益が100万米ドル (または現地通貨換算) を超えた場合は、Stability AIに連絡して、個別のエンタープライズライセンスを取得する必要があります。

      モデル品質の向上について

      SD3 Mediumのリリース前に行った初期テストでは、プロンプトの遵守、多様性、ディテール、全体的な品質の点で、SDXLと比較して、ほとんどの場合、はるかに優れたベースモデルであることが示されました。しかし、コミュニティはすぐに、主にトレーニングセットであまり見られなかった体のポーズや単語に関連する、いくつかの重大な品質の問題を特定しました。

      これらの懸念に対処するため、Stability AIは2つの主要な分野に焦点を当てています。

      • 継続的な改善: SD3 Mediumはまだ開発途上のモデルです。今後数週間のうちに、大幅に改善されたバージョンをリリースすることを目指しています。
      • モデルの使用方法: Stability AIは、この新しいアーキテクチャとモデルを最大限に活用する方法を研究しています。モデルを使用するための最良の方法と、それを微調整する方法についてさらに詳しく知ったことは、コミュニティの他のユーザーと同様に、Stability AIの調査結果も共有していく予定です。

      今後の展開

      ライセンスの更新が完了次第、FAQに追加の詳細情報を掲載する予定です。

      今後とも、オープンな生成AIの限界を押し広げていきますので、ご支援のほどよろしくお願いいたします。

      — Stabilityチーム


      ▶Stability AIのソリューションを使ったPoCシステム開発やカスタマイズ、画質向上やコスト分析などの案件は sai@aicu.ai までどうぞ。

      Stable Diffusionの公式API、1,800枚の画像を生成して比較検証してみた(動画あり)

      Stable Diffusion 3 を Google Apps Scriptで利用する


      ■生成AI時代に「つくる人をつくる」AICU社、生成AIリーディング企業「Stability AI」と戦略提携

      [S.] 過去の関連記事はこちら!

      Stability AI Fan!|AICU media|noteStability AIのサービスを応援するマガジンです

      画像生成AI Stable Diffusion スタートガイド (Generative AI イラストレーション)

      • すべての画像生成AIを過去にするStable Image Ultra (Stable Diffusion 3 8B+) が凄絶すぎた件

        すべての画像生成AIを過去にするStable Image Ultra (Stable Diffusion 3 8B+) が凄絶すぎた件

        image_2-55AE7.jpg

        Stable Diffusion開発元の、Stability AI Japan – External AdvocateのD̷ELLさんによる寄稿です。

        Stable Diffusion開発元の、Stability AI Japan – External AdvocateのD̷ELLと申します。
        今回、Stable Diffusion最高モデル Stable Diffusion 3 80億パラメータ(8B) を搭載したAPI「Stable Image」の、最上位サービス 「Stable Image Ultra」の体験会 第2回を実施しました。
        実施内容をレポートにまとめましたので、報告させて頂きます。

        概要

        • Stability AIからStable Diffusion 3 2B のモデルがリリースされ、世界を席巻した
        • Stability AI APIでは、最上位モデルの Stable Diffusion 3 8B が利用可能
        • 性能を体験してもらうために、たくさんの人にまた利用してもらったらやっぱり凄かった

        経緯

        先日、Stable Diffusion最高モデル Stable Diffusion 3 8B を搭載したAPI「Stable Image」の、最上位サービス 「Stable Image Ultra」 の体験会を実施しました。ご協力頂いた Discordサーバー AI声づくり技術研究会様、ありがとうございます。

        前回は突発での開催でしたが、今回は事前にアナウンスを行い、40名以上の方にご参加いただきました。

        https://j.aicu.ai/SD3UC

        どなたでもご利用可能ですので、ぜひこの機会にStable Image APIをお試しください。

        image.png

        生成画像集

        みなさまの生成された画像と、プロンプト、利用コメントを頂いております。
        個性の出ている、多種多様な画像を生成いただいておりますので、ぜひお楽しみください。

        こちらのNotionでも、当日生成された140枚の画像とプロンプトを閲覧できます。 まとめて頂きましたゆんたん様、ありがとうございます。

        yutoさん

        生成のボタンを押すたびにワクワクする。初めてStable Diffusionを触ったときの感情を思い出した。

        download-53290.jpg
        download-95B7F.jpg
        download-74983.jpg
        download-BE70F.jpg
        download-25501.jpg

        holy-fox/小狐さん

        凄すぎて感想が言語化できないw

        BVxMJdem4AAAAAElFTkSuQmCC-00E05.jpg
        image.png
        image_1-96896.jpg

        ゆんたんさん

        image_11-6D88C.jpg
        image_10-B38A6.jpg

        シャケさん

        image_7-2F438.jpg
        image_18-C8ECD.jpg
        image_19-D5AFA.jpg

        うんわさん

        想像力の限界へ

        image-8AEA7.jpg
        Untitled-1E3EA.jpg

        エクスヴェリアさん

        これまでの画像生成を過去にする
        ウルトラすごいハイパーすごいえーあいです

        image-FC5CF.jpg
        image-1C31A.jpg
        image-A079E.jpg
        image-3FCCB.jpg
        image-4D251.jpg
        image-F75F0.jpg
        image.png
        image.png

        雫さん

        一つのモデルでいろんな絵が出せるのがすごい

        aR9Md9HyXfvvevtXrfvP9JV8xIovtuql06mKat9p53-41756.jpg
        AcfGbDZrDlzAAAAAElFTkSuQmCC-8A5ED.jpg
        DzuYikcPXHQAAAABJRU5ErkJggg-B74D7.jpg
        15-F6F35.jpg

        なかむらしっぽさん

        やっぱりUltraはMediumとは全く次元が違う

        image_26-BDA66.jpg
        image_27-715AE.jpg
        image-0C3FB.jpg
        image_19-AC088.jpg
        image_22-5B5F9.jpg

        Art Natureさん

        一つのモデルでこれだけ幅広い出力ができるのがすごい。長文対応と出力の良さも高い。

        image_2-62EE7.jpg
        image_19-D5D6B.jpg
        image_24-47145.jpg
        image_28-0AFF2.jpg
        image_30-3FFB6.jpg

        うみせさん

        画像がほしい?ならUltraでしょ

        image-7271C.jpg
        image-EBAA7.jpg
        image-F5F5C.jpg
        image.png
        image-ABA44.jpg

        やなぎ(Yanagi)さん

        いままで触ったモデルの中で一番広い表現力を感じました!
        自然言語で使えるのも直感的でたのしいです!

        image.png
        image-F98C5.jpg
        image_2-C9823.jpg

        やまとーるさん

        1 girlから初めていろいろ追加をしていったらちゃんと出力してくれたので楽しかったです

        52-BDFFB.jpg
        60-3DCBA.jpg
        41-DD317.jpg
        57-A849B.jpg

        flyfrontさん

        まだまだ隠れた性能がいろいろありそう!

        bf-08860.jpg
        image.png

        TylorShineさん

        描ける!使える!!Stable!! 文字表現に忠実な画像が出てくる!!感動!!

        image-276A4.jpg
        image_10-232F2.jpg
        image_6-A3AA6.jpg

        kokurenさん

        従来のタグの組み合わせメインでの画像生成から自然言語での自由な生成の時代が来たことを実感できました。

        image-FBCFD.jpg
        image-45DB5.jpg
        image-74DDD.jpg

        れみおさん

        リアル系も出来てすごい!

        image_8-6D94C.jpg
        image_9-91D14.jpg
        image_37-62CF8.jpg
        image_17-439CD.jpg
        image_12-50770.jpg
        image_15-5EB4C.jpg

        へむろっくさん

        週末はSD3でステイブろう

        37-76127.jpg
        image.png
        image.png
        image.png

        ハニーさん

        image-D68ED.jpg
        image.png
        image.png
        image-60AE6.jpg
        image.png
        image.png

        ひつきさん

        SD3を使わせて頂きありがとうございます🙇‍♂️
        使ってみた感想としましては従来のSD1.5やSDXLに比べ、単純なプロンプトでも破綻しづらくて使いやすかったです!✨

        image-B991E.jpg

        Shinjuboshiさん

        image.png

        ぼうりきさん

        image_1-F4632.jpg

        マッキーさん

        image_1.jpg

        Gongonさん

        NSFWを回避しながら癖に刺さるイラストを生成するの楽しい

        image_6-750C0.jpg
        image_9-E5CF4.jpg
        image_25-0F384.jpg

        おやつさん

        日本風アニメへの造詣が深くて凄いなーと思いました。ほとんど最新のアニメ絵まで出せるんじゃないかな

        image_15-52BB6.jpg

        Akikazeさん

        クォリティが高くてAIとは思えないです・・・!

        はるさん

        いろんなものがぽんぽん出てくる宝石箱でした~~。

        生の声

        ChatGPTとの連携

        前回、プロンプトは、ChatGPTに生成してもらったという方が多くおられました。

        そのため、今回はプロンプト作成用特設 GPTs を うみせさんに作成していただきました。

        https://chatgpt.com/g/g-C8XsG8POL-huronhutomasuta

        今回のイベント用に作成されたオリジナルです。ぜひこちらもご利用くださいませ。

        また、Stable Diffusion 3 は自然言語処理に対応しておりますので、一般的な英文でも高品質な画像が生成できます。詳細はこちらをご覧ください。

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

        まとめ

        いかがでしょうか?ひとつのモデルで、ここまで幅の広い画像を生成可能です。
        また、今回実装されたWEB-UIにより、APIの機能をすべて利用可能となりました。

        ぜひこの機会に、全世界最高峰・最上位の画像生成AIをお試しくださいませ。

        ご協力いただいたみなさまに感謝申し上げます。
        最後までご覧いただき、ありがとうございました。

        こちらの記事はDELL氏にご寄稿いただいた記事を読みやすく推敲させていただきました。価値あるレポートを作成いただいたDELL氏に編集部より御礼申し上げます。

        すべての画像生成AIを過去にする Stable Image API (Stable Diffusion 3 8B+) が凄絶すぎた件 – Qiita

      • Stable Diffusion 3 で最高の結果を得る方法

        Stable Diffusion 3 で最高の結果を得る方法

        Stable Diffusion開発元の、Stability AI Japan – External AdvocateのD̷ELLさんによる寄稿です。

        先日、Stable diffusion 3 Mediumのモデルが公開され、Stable Image APIでもLargeモデルが利用可能となりました。

        Stable Diffusion 3の真の性能を発揮するには、既存のStable Diffusionとは違うテクニックが必要なことをご存知でしょうか?今回は、Stable Diffusion 3の性能を最大限に引き出す方法 をご紹介したいと思います。
        ※ 本記事の内容は、Replicate, Inc.fofr氏によって執筆された記事を和訳したものです。

        Stable Diffusion 3で変わった重要なポイント

        記事によると、SD3で変わった重要なポイントは以下の3点です。

        • 長いプロンプトに対応し、テキストエンコーダーにより異なる品質の画像を生成できる
        • プロンプトは詳細かつ具体的に記述し、 ネガティブプロンプトは使用しないこと
        • 推奨設定は 28ステップ、3.5~4.5のCFG、dpmpp_2m sgm_uniformスケジューラー付きサンプラー、3.0シフト

        どういうことなのか、ぜひ記事本文をご覧ください。

        【和訳】Stable Diffusion 3 で最高の結果を得る方法

        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

        Stability AI は最近、2億パラメータのテキストから画像へのモデルである Stable Diffusion 3 Medium の重みをリリースしました。このモデルは、フォトリアリズム、タイポグラフィ、およびプロンプトの追従に優れています。

        公式の Stable Diffusion 3 モデルを Replicate で実行できますし、商用利用も可能です。また、私たちは Diffusers と ComfyUI の実装をオープンソース化しました(ComfyUI ガイドを読む)。

        このブログ投稿では、Stable Diffusion 3 (SD3) を使用して最高の画像を得る方法、特に以前の Stable Diffusion モデルとは少し異なるプロンプトの方法について説明します。

        実験を助けるために、ここで議論したすべての設定を公開している SD3 エクスプローラーモデル を作成しました。

        SD3 のバージョンの選び方

        Stability AI は、できるだけ多くのデバイスで実行できるように、SD3 Medium をさまざまな方法でパッケージ化しました。

        SD3 は3つの異なるテキストエンコーダーを使用します。(テキストエンコーダーは、プロンプトを受け取り、モデルが理解できる形式に変換する部分です)。これらの新しいテキストエンコーダーの1つは非常に大きく、多くのメモリを使用します。 SD3 Hugging Face Weight を見ると、異なるテキストエンコーダー構成の4つのオプションが表示されます。利用可能な VRAM に基づいて、どれを使用するかを選択する必要があります。

        sd3_medium_incl_clips_t5xxlfp8.safetensors

        このエンコーダーには、モデルの重み、2つの CLIP テキストエンコーダー、および圧縮 fp8 フォーマットの大きな T5-XXL モデルが含まれています。シンプルで最高の結果を得るために、これらの重みをお勧めします。

        sd3_medium_incl_clips_t5xxlfp16.safetensors

        sd3_medium_incl_clips_t5xxlfp8.safetensors と同じですが、T5 部分がそれほど圧縮されていません。fp8 の代わりに fp16 を使用することで、画像品質がわずかに向上しますが、メモリ使用量が増加します。

        sd3_medium_incl_clips.safetensors

        このバージョンでは T5 要素を完全に排除しています。2つの CLIP テキストエンコーダーだけで重みを含みます。VRAM が少ない場合に良いオプションですが、完全版とは大きく異なる結果が得られる可能性があります。このバージョンでは、プロンプトの追従性が低下し、画像内のテキストの品質も低下する可能性があります。

        sd3_medium.safetensors

        このモデルはテキストエンコーダーなしの基本的な重みだけです。これらの重みを使用する場合は、テキストエンコーダーを別々に読み込むようにしてください。Stability AI はこれに対する ComfyUI ワークフローの例 を提供しています。

        プロンプトの作成

        SD3 の使用における大きな変化はプロンプトの作成です。非常に長く詳細なプロンプトを入力しても、プロンプトに非常に忠実な画像を返すことができます。もう CLIP テキストエンコーダーの77トークンの制限を気にする必要はありません。

        プロンプトは10,000文字、または1,500語以上にすることができます。実際にはそのような長さは必要ありませんが、プロンプトの長さを心配する必要はありません。

        非常に長いプロンプトの場合、現時点では画像にどの部分が反映されるかを予測するのは難しいです。プロンプトのどの部分にモデルが注意を払うかは明確ではありません。しかし、プロンプトが長く複雑になるほど、何かが欠ける可能性が高くなります。

        ネガティブプロンプトを使用しないでください

        SD3 はネガティブプロンプトでトレーニングされていません。ネガティブプロンプトは SD3 では期待通りに機能しません。すでに SD3 を試したことがある場合、ネガティブプロンプトを与えると画像が変わることに気付いたかもしれませんが、その変化は意味のあるものではありません。ネガティブプロンプトは不要な要素を除去するのではなく、コンディショニングにノイズを加え、単に出力を変動させるだけです。

        プロンプト技術

        長いプロンプトが許可されるようになった今、望む画像を説明するために平易な英語の文章と文法を使用できます。以前のようにカンマで区切られたキーワードを使用することもできますが、具体的なものを目指す場合は、プロンプトを詳細かつ明確にすることが重要です。このレベルのプロンプトは、Midjourney バージョン6や DALL·E 3 のプロンプトの方法に似ています。

        画像の要素を説明するときは、その説明が画像の他の部分にも適用されないようにするために、曖昧さのない言葉を使うようにしてください。

        以下は、SD3 で良好なプロンプト追従性を示す長く詳細なプロンプトの例です:

        a man and woman are standing together against a backdrop, the backdrop is divided equally in half down the middle, left side is red, right side is gold, the woman is wearing a t-shirt with a yoda motif, she has a long skirt with birds on it, the man is wearing a three piece purple suit, he has spiky blue hair(例を見る

        画像

        a man wearing 1980s red and blue paper 3D glasses is sitting on a motorcycle, it is parked in a supermarket parking lot, midday sun, he is wearing a Slipknot t-shirt and has black pants and cowboy boots (例を見る

        画像

        a close-up half-portrait photo of a woman wearing a sleek blue and white summer dress with a monstera plant motif, has square white glasses, green braided hair, she is on a pebble beach in Brighton UK, very early in the morning, twilight sunrise(例を見る

        画像

        各テキストエンコーダーに異なるプロンプトを使用

        3つのテキストエンコーダーを持つようになったため、技術的には各エンコーダーに異なるプロンプトを渡すことができます。例えば、CLIP テキストエンコーダーには画像の一般的なスタイルとテーマを渡し、T5 部分には詳細な主題を渡すことができます。我々の実験では、まだ特別な

        技法は見つかっていませんが、引き続き試行しています。

        CLIP と T5 エンコーダーに異なるプロンプトを渡した例はこちら

        triple_prompt_t5
        the words written across the sky say “hello world”, written in clouds from a plane, above the dog
        空一面に書かれた文字は「hello world」と書いてあります。

        triple_prompt_clip_g
        a cartoon, dreamy anime background, a photo of a dog
        漫画、夢のようなアニメの背景、犬の写真

        triple_prompt_clip_l
        a cartoon, dreamy anime background, a photo of a dog
        漫画、夢のようなアニメの背景、犬の写真

        画像
        https://replicate.com/p/vmp5h000c9rgj0cg5d6813mmnr

        設定

        SD3 では、画像出力を変更するための多くの新しい設定があります。以下に良いデフォルト設定をいくつか推奨しますが、自分の好みに合わせて実験することをお勧めします。

        要約すると、以下の設定から実験を開始することをお勧めします(詳細は後述します):

        • 28ステップ
        • 3.5から4.5の CFG
        • dpmpp_2m sgm_uniform スケジューラー付き サンプラーと
        • 3.0 のシフト

        幅と高さ

        SDXL と同様に、SD3 は約1メガピクセルで最高の出力を提供します。解像度は64で割り切れる必要があります。以下の一般的なアスペクト比に対して、次の幅と高さを推奨します:

        • 1:1 – 1024 x 1024(正方形の画像)
        • 16:9 – 1344 x 768(シネマティックおよびワイドスクリーン)
        • 21:9 – 1536 x 640(シネマティック)
        • 3:2 – 1216 x 832(風景のアスペクト比)
        • 2:3 – 832 x 1216(ポートレートのアスペクト比)
        • 5:4 – 1088 x 896(風景のアスペクト比)
        • 4:5 – 896 x 1088(ポートレートのアスペクト比)
        • 9:16 – 768 x 1344(長い縦長の画像)
        • 9:21 – 640 x 1536(非常に背の高い画像)

        以前に Stable Diffusion 1.5 や SDXL をトレーニングされた解像度よりも大きな解像度で使用したことがある場合、歪んだ画像、複数の頭、繰り返しの要素など、奇妙な出力に馴染みがあるかもしれません。(以前の SDXL ガイドでいくつかの例を見られます。)これは SD3 では発生しません。SD3 では、予想される解像度よりも大きくすると、中央に合理的な画像があり、周辺には奇妙な繰り返しのアーティファクトが表示されます(ここに大きすぎる画像の推論結果の例があります)。同様に、解像度が小さすぎると、画像が厳しくトリミングされます(ここに小さすぎる画像の推論例があります)。

        画像
        大きすぎる画像の推論結果の例
        画像
        小さすぎる画像の推論例

        ステップ数

        この設定は、モデルが画像を生成する際のノイズ除去ステップの数です。SDXL では通常この値は20前後であり、Lightning モデルでは4ステップです。ステップ数は画像生成にかかる時間の主要な要因です。ステップが多いほど良い画像、ステップが少ないほど早く画像が生成されます。

        SD3 では28ステップを推奨します。この数値は、興味深い前景と背景を持ち、VAE アーティファクト(生成された画像に見られるノイズパターン)が少ないシャープな画像を提供し、それほど時間もかかりません。

        ステップを増やすことの効果

        ステップが画像品質に与える影響は、以前の Stable Diffusion モデルとは異なります。従来のモデルでは、ステップが品質を段階的に向上させ、ある点で効果が頭打ちになり、画像がほぼ静的になるのが一般的でした。しかし、SD3 ではステップが増えると異なる現象が見られます。

        SD3 は通常、8〜10ステップである程度見栄えのする画像を生成できます(ここに10ステップの推論結果の例があります)。

        画像
        10ステップの推論による画像


        ただし VAE ノイズアーティファクトや一部の画像が一貫性を欠く場合があります。これはプロンプトとシードにも依存します。ステップが増えると、より一貫性があり興味深い画像が得られます。最適な範囲は26〜36ステップです。

        画像とその主題は、ステップ値によって劇的に変わることもあります。例えば、人の曖昧なプロンプトの場合、ステップが増えるにつれて年齢、性別、民族が変わることがあります。これらの2つの出力を比較してください:10ステップのものと、同じ設定とシードを使用した 32ステップのもの

        ガイダンススケール

        ガイダンススケール(または CFG、classifier-free guidance)は、出力がプロンプトにどれだけ似ているべきかをモデルに指示します。SD3 では、SD 1.5 や SDXL よりも低い値を使用する必要があります。

        3.5から4.5の範囲を推奨します。出力が「焼けた」ように見え、コントラストが強すぎる場合は CFG を下げてください(CFG が高すぎる場合の焼けた画像の例)。

        また、CFG を低くすると、異なるテキストエンコーダーオプション間で出力の類似性が高まることも指摘しておく価値があります(つまり、T5 テキストエンコーダーを fp8、fp16 で使用するかどうかに関係なく)。非常に低い CFG を使用する場合、大きな T5 エンコーダーを省略しても画像品質にはほとんど影響しません。例えば、同じシードと CFG 1.5 を使用した2つの出力を比較してください:fp16 を使用した出力と、非常に似ている CLIP のみの出力

        サンプラーとスケジューラー

        異なるツールではこれらのラベルが異なりますが、基本的にはモデルがノイズを管理するために使用するアルゴリズムです。異なるアルゴリズムは異なる画像を生成します。

        SD3 では、ComfyUI で dpmpp_2m サンプラーと sgm_uniform スケジューラーを使用することを推奨します。Automatic1111 では dpm++ 2M を使用します。Euler も良い結果をもたらすことがあります。

        一部のサンプラーとスケジューラーは SD3 では機能しません。特に ancestral と sde サンプラー、および人気のある SDXL ノイズスケジューラー karras は機能しません。

        シフト

        シフトは、SD3 で変更できる新しいパラメーターです。これはタイムステップスケジューリングシフトを表し、シフト値が高いほど高解像度でノイズをうまく管理できます。基本的には、ノイズがよりよく処理され、シフトを使用すると見栄えの良い画像が得られます。タイムステップスケジュールシフトの理論については、SD3 の研究論文 を参照できます。

        3.0 は人間の好みの評価に基づく推奨デフォルト値ですが、もちろん変更することもできます。ComfyUI では、「ModelSamplingSD3」ノード

        でこの値を見つけることができ、Diffusers では FlowMatchEulerDiscreteScheduler にシフトパラメーターを渡すことができます。

        シフト値 6.0 は人間の評価で高評価を得ており、試す価値があります。2.0 や 1.5 のような低い値を使用すると、より生の「未処理」な見た目の画像が得られ、特定のプロンプトにはうまく機能します。

        結論

        これらのヒントを使用して Stable Diffusion 3 を楽しんで実験してください!SD3 を使用する際の詳細については、最近のブログ投稿をチェックしてください:

        解説

        プロンプトの作成

        Stable Diffusion 3の大きな特徴は、そのプロンプトの柔軟性です。以前のバージョンではプロンプトの長さが制限されていましたが、今回のバージョンでは10,000文字, 1,500語以上まで入力できます。これにより、非常に詳細で複雑な指示が可能になり、具体的なイメージをより正確に生成できるようになりました。

        例として、途中でいくつかサンプルが出てきましたね。

        a man and woman are standing together against a backdrop, the backdrop is divided equally in half down the middle, left side is red, right side is gold, the woman is wearing a t-shirt with a yoda motif, she has a long skirt with birds on it, the man is wearing a three piece purple suit, he has spiky blue hair

        これを和訳すると、以下のようになります。

        男性と女性が背景を背にして立っています。背景は中央で左右に均等に分かれており、左側は赤、右側は金色です。女性はヨーダのモチーフが描かれたTシャツを着ており、鳥のデザインが入った長いスカートを履いています。男性は3ピースの紫のスーツを着ており、青いとがった髪をしています。

        既存のStable Diffusionのプロンプトに直すと、こんな感じでしょうか。

        2 characters, man, woman, standing, red background, gold background, split background, Yoda T-shirt, bird design skirt, long skirt, purple suit, 3-piece suit, blue spiky hair

        ですが、Stable Diffusion 3では、サンプルのような細かいプロンプトが指定可能となりました。
        前回の記事でご紹介したような、ChatGPTを用いてプロンプトを生成する方法は、意図せず有効打だったことが判明しましたね。

        参考:ChatGPTを用いたプロンプト生成例

        Stable Diffusion Prompterを利用

        画像

        テキストエンコーダー

        テキストエンコーダーの構成も重要なポイントです。Stable Diffusion 3は3つの異なるテキストエンコーダーを使用しますが、その中でも特に大きなT5エンコーダーは多くのメモリを必要とします。このエンコーダーを使うと、より高品質な画像が得られます。メモリが限られている場合は、CLIPエンコーダーだけを使うオプションもあります。※ その場合はプロンプトの追従性や画像内のテキストの品質が少し落ちるかもしれません

        ご自身の環境に合わせた調整ができることにより、可能性が広がりますね。

        プロンプト技術

        プロンプトの作成方法についても注意が必要です。Stable Diffusion 3はネガティブプロンプトには対応していないので、**ネガティブプロンプトを使用しても期待通りの結果は得られません。**代わりに、プロンプトを詳細かつ具体的に記述することで、より良い結果を得ることができます。
        先に記載したように、「赤と青の3Dメガネをかけた男性がバイクに座っている」といった具体的な描写を使うと、モデルがより正確にイメージを生成してくれます。

        設定

        推奨される設定は以下の通りです。

        • ステップ数:28ステップ。これは画像のノイズ除去ステップの数で、増やすとよりシャープで詳細な画像が得られます。
        • CFG(ガイダンススケール):3.5から4.5。この値が高すぎると画像が「焼けた」ように見えることがありますので、注意が必要です。
        • サンプラー:dpmpp_2m。これはノイズを管理するためのアルゴリズムで、異なるサンプラーを試すことで画像の雰囲気が変わります。
        • スケジューラー:sgm_uniform。これもノイズ管理に関する設定で、この組み合わせが安定した結果をもたらします。
        • シフト:3.0。タイムステップスケジューリングシフトの値で、これを調整することで高解像度の画像のノイズ管理が改善されます。

        これらの設定を基にして、自分の好みに合わせて実験してみると良いですね。特に、ステップ数やCFGを微調整することで、より自分のイメージに近い結果が得られるはずです。

        まとめ

        いかがでしたか?新しい設定や技術を活用することで、これまで以上に素晴らしい画像が生成できると思います。

        Stable Diffusion 3 Mediumは、以下のURLからダウンロードが可能です。

        最も洗練された画像生成モデル、Stable Diffusion 3 Medium のオープンリリースを発表 — Stability AI Japan

        Stable Diffusion 3 Large以上のモデルは、以下の記事を参考にAPIをご利用ください。

        みなさまがより新しい画像生成体験ができることを祈っております。最後までご覧いただき、ありがとうございました。

        こちらの記事はDELL氏にご寄稿いただいた記事を読みやすく推敲させていただきました。価値あるレポートを作成いただいたDELL氏および原作のfofr氏に編集部より御礼申し上げます。

        あなたはStable diffusion 3 の真の性能を発揮できていない – Qiita