FLUX.1 は Black Forest Labs の立ち上げの アナウンス とともに 8月1日に公開されたばかりのテキスト-to-画像合成モデル群です。
FLUX.1 は最高レベルのプロンプト順守、視覚品質、画像の詳細と出力の多様性を備えた、最先端の性能を持つ画像生成を提供します。
FLUX.1 : 基礎知識 & Colab / Hugging Face Diffusers による高品質な画像生成
作成 : Masashi Okumura (@ClassCat)
作成日時 : 08/06/2024
* 本記事の作成には以下のページを参考にしています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
◆ お問合せ : 本件に関するお問合せは下記までお願いします。
- クラスキャット セールス・インフォメーション
- sales-info@classcat.com
- ClassCatJP
FLUX.1 : 基礎知識 & Colab / Hugging Face Diffusers による高品質な画像生成
Black Forest Labs
FLUX.1 は Black Forest Labs の立ち上げの アナウンス とともに 8月1日に公開されたばかりのテキスト-to-画像合成モデル群です。
FLUX.1 は最高レベルのプロンプト順守、視覚品質、画像の詳細と出力の多様性を備えた、最先端の性能を持つ画像生成を提供します。
アナウンスの冒頭を簡単にまとめますと :
Black Forest Labs の立ち上げを発表します。その使命は、画像や動画のようなメディア用の最先端の生成 AI モデルを開発・発展させて、創造性・効率性や多様性の境界を押し広げることです。生成 AI が将来のすべての技術の基礎的なビルディング・ブロックとなることを確信しています。私たちのモデルを広く公開することで、そのメリットをあらゆる人々にもたらし、一般の人々を教育し、これらのモデルの安全性への信頼を高めることを望みます。生成メディアの業界標準を構築することを決意しています。
この目標への最初のステップとして、テキスト-to-画像合成の最前線を押し広げる、FLUX.1 モデルスイートを公開します。
Black Forest Labs のメンバーは Stable Diffusion の開発者が含まれているようです :
基礎的な生成 AI モデルの開発において優れた実績を持つ AI 研究者とエンジニアのチームです。その実績は VQGAN と Latent Diffusion、画像と動画生成用の Stable Diffusion (Stable Diffusion XL, Stable Video Diffusion, Rectified Flow Transformers) そして超高速なリアルタイム画像生成用の Adversarial Diffusion Distillation の作成を含みます。
Flux.1 モデル・ファミリー (FLUX.1 [pro], FLUX.1 [dev] & FLUX.1 [schnell])
テキスト-to-画像モデルの FLUX.1 スイートは、テキスト-to-画像合成における画像の詳細、プロンプトの順守、スタイルの多様性、そしてシーンの複雑さの点で新しい基準を打ち立てます。
アクセシビリティとモデルの能力を両立させるため、FLUX.1 には 3 つのバリアントがあります : FLUX.1 [pro], FLUX.1 [dev] & FLUX.1 [schnell] :
- FLUX.1 [pro] : FLUX.1 のベストモデルで、最高のライン・プロンプト順守、視覚品質、画像の詳細と出力の多様性を備えた、最先端の性能の画像生成を提供します。API 経由で FLUX.1 [pro] にアクセスするためにはサインアップします。FLUX.1 [pro] はまた Replicate と fal.ai 経由で利用可能です。更に専用のカスタマイズされたエンタープライズ・ソリューションも提供しています。
- FLUX.1 [dev] : FLUX.1 [dev] は非商用用途向けのオープン weight なガイダンス蒸留モデルです。FLUX.1 [pro] から直接蒸留され、FLUX.1 [dev] は同様の品質とプロンプト順守能力を取得する一方で、同じサイズの標準モデルよりも効率的です。FLUX.1 [dev] の重みは Hugging Face で利用可能で、Replicate や Fal.ai でも試すことができます。
- FLUX.1 [schnell] : ローカル開発とパーソナルユース向けにカスタマイズされた最速モデルです。FLUX.1 [schnell] は Apache2.0 ライセンスでオープンに利用可能です。FLUX.1 [dev] と同様に、重みは Hugging Face で利用可能で、推論コードは GitHub と HuggingFace の Diffusers にあります。Moreover we’re happy to have day-1 integration for ComfyUI.
Transformer により強化された大規模な Flow モデル
すべての公開された FLUX.1 モデルは、マルチモーダル及び並列拡散 transformer ブロックのハイブリッド・アーキテクチャに基づき、12B パラメータにスケールされます。フローマッチング上に構築することで以前の最先端な拡散モデルを改良しています。フローマッチングは、拡散を特別な場合として含む、生成モデルを訓練するための一般的で概念的に単純な手法です。更に、rotary 位置埋め込みと並列アテンション層を組み込むことで、モデル性能を高め、ハードウェア効率性を向上させています。We will publish a more detailed tech report in the near future.
Colab / Hugging Face Diffusers による高品質な画像生成
それでは、Google Colab 上で Hugging Face ライブラリ Diffusers を利用して実際に画像生成してみましょう。
前述のように、FLUX.1 [dev] と FLUX.1 [schnell] の重みは Hugging Face のモデルとして配備されていますので、通常のようにモデルカードで利用許諾を承認するだけで利用可能になります :
あとはモデルカードに記載されているサンプルコードに従うだけです。最初に Diffusers ライブラリをインストールします :
※ ハードウェアアクセラレータは A100 GPU に設定してください。
!pip install git+https://github.com/huggingface/diffusers.git
アクセストークンを設定します :
from google.colab import userdata
hf_token = userdata.get('HF_TOKEN')
FluxPipeline のインスタンスを生成します。FLUX.1[dev] の識別子は “black-forest-labs/FLUX.1-dev”、FLUX.1[schnell] は “black-forest-labs/FLUX.1-schnell” になります :
import torch
from diffusers import FluxPipeline
pipeline = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev", # "black-forest-labs/FLUX.1-schnell",
torch_dtype=torch.bfloat16,
token=hf_token,
)
pipeline.enable_model_cpu_offload()
好みのプロンプトを設定してください :
prompt = "a few orange drones gliding through the forest near the lake"
取り敢えずはサンプルに従ってパラメータを設定します。以下は FLUX.1[dev] の場合 :
%%time
## for flux-dev
image = pipeline(
prompt,
height=1024,
width=1024,
guidance_scale=3.5,
#output_type="pil",
num_inference_steps=50,
max_sequence_length=512,
generator=torch.Generator("cpu").manual_seed(1)
).images[0]
image.save("flux-dev.png")
FLUX.1[schnell] の場合は僅か 4 ステップでも生成できます :
%%time
## for flux-schnell
image = pipeline(
prompt,
height=1024,
width=1024,
guidance_scale=0.0,
#output_type="pil",
num_inference_steps=4,
max_sequence_length=256,
generator=torch.Generator("cpu").manual_seed(1)
).images[0]
image.save("flux-schnell.png")
生成例 :
Looks Good 😍
素のモデルでも高品質な画像が生成できます。
以上