FLUX.1で画像を生成してみる

FLUX.1で画像を生成してみる

2024年8月18日
知恵
Pocket

久しぶりに画像生成ツールで話題のものが出てきました。

FLUX.1です。

AI技術が急速に進化する中で、「FLUX.1」は画像生成の分野において画期的なモデルとして登場しました。Black Forest Labsによって開発されたこの最先端のAIは、テキストを高度に詳細で多様な画像に変換する能力を持ち、MidjourneyやStable Diffusionといった既存のモデルを超える忠実度と多様性を実現しています。複雑なシーンや多様な芸術スタイルを正確に描写する能力を備えたFLUX.1は、デザイナー、マーケター、アーティストにとって無限の創造的可能性を提供します。

また、FLUX.1はGrokに採用されています。2024年8月にリリースされたGrok-2にFLUX.1が統合されており、これによりGrokは高度な画像生成能力を備えています

X(twitter)でも、有料アカウントだと日本語で画像生成ができるようです。

「プレミアム」または「プレミアムプラス」に加入する必要があります。プレミアムプランの月額料金は約980円からとなっています。プレミアムプランだと、2時間あたり20回まで生成可能と制限があるようです。

私は、stable diffusionを使うために、Google Colaboratoryの有料プランに入っているのでこちらを使って生成していきたいと思います。

FLUX.1 [schnell]とFLUX.1 [dev]というのがあるのですが、schnellを利用します。

特徴FLUX.1 [schnell]FLUX.1 [dev]
速度と効率高速な画像生成に最適化されており、[dev]よりも最大10倍速く動作します。迅速な反復やリアルタイム画像生成が必要なアプリケーションに最適です。より高品質な画像を生成しますが、[schnell]に比べて速度は遅いです。画像品質が速度よりも重要なアプリケーションに適しています。
画像品質高品質な出力を維持しますが、速度最適化のために[dev]よりも若干詳細が少ない場合があります。[schnell]に比べて、より優れた詳細と忠実度を持つ画像品質を提供します。
ライセンスApache 2.0ライセンスの下で提供されており、商業利用と非商業利用の両方が可能です。非商業ライセンスでオープンソース化されており、研究、教育、個人プロジェクトに限られた利用が可能です。
ハードウェア要件より少ないリソースで動作可能で、限られたハードウェアリソースを持つユーザーにもアクセスしやすいです。最適なパフォーマンスのために、少なくとも24GBのVRAMを持つGPUが必要な高いハードウェア仕様を要求します。
使用例高速なプロトタイピング、ローカル開発、および最高の画像品質よりも速度を優先するアプリケーションに最適です。画像品質が最優先で、処理時間がそれほど重要でないアプリケーションに適しています。
モデルサイズと複雑性より小さく軽量で、いくつかの詳細と品質を犠牲にしても高速な処理を可能にします。より大きく複雑なモデルで、高品質な出力を提供する一方で、リソース要件が増加します。
APIの利用と価格リソース要件が低いため、使用コストが比較的安価です(例:1画像あたり$0.002)。リソース需要が高いため、より高価です(例:1画像あたり$0.015)。
コミュニティサポートApache 2.0ライセンスにより、商業開発やさまざまなアプリケーションへの統合が促進される可能性があります。非商業利用のためのオープンソース性により、コミュニティからの貢献や実験が増える可能性があります。

Google Colaboratoryの新規のノートブックを作成します。

以下のコードを順に、実行します。(ランタイムは、A100で実行します)

※FLUX.1の実行には32GBのGPU RAMが必要なため、A100 GPUランタイムを選択してください。

Colab Pro: 月額約1,072円で100コンピューティングユニットが付与されます。A100を使用する場合、約7.6時間の利用が可能です。あっという間に消費してしまうのでご注意ください。

!pip install git+https://github.com/huggingface/diffusers.git
import torch
from diffusers import  FluxPipeline

# パイプラインの準備
pipe = FluxPipeline.from_pretrained(
    "black-forest-labs/FLUX.1-schnell", 
    torch_dtype=torch.bfloat16
)
pipe.enable_model_cpu_offload()

100枚の画像を生成します。

幅800x高さ1280です。

Googleドライブをマウントさせて、そちらに出力させるようにしています。

# プロンプトの準備
prompt = "at center of room, 1 woman,medium black hair,best quality, ultra high res, bloom light effect, (photorealistic:1.4) , best quality, soft light, (depth of field) , RAW photo, (portrait:1.4), (from front) ,solo, cute, (shy, smile:1.1), (black eyes), detailed beautiful face, asian, In various poses, wearing swimming wear, from side, full body, perfect anatomy, full body, evil , little butt, medium hair"

# 画像生成のループ
for i in range(1, 101):
    # 画像生成の実行
    out = pipe(
        prompt=prompt, 
        guidance_scale=0., 
        width=800, 
        height=1280, 
        num_inference_steps=10, 
        max_sequence_length=256,
    ).images[0]
    
    # 異なるファイル名を生成
    filename = f"image_1_{i:03}.png"  # 例: image_001.png, image_002.png, ..., image_100.png
    
    # 画像を保存
    out.save("/content/drive/MyDrive/stablediffusion/flux/" + filename)

生成された画像は、こんな感じ。

FLUX.1で画像を生成してみる
FLUX.1で画像を生成してみる
FLUX.1で画像を生成してみる

stable diffusionよりかなり高速で、なかなかのクオリティーに感じます。

今後も、fluxについて研究していきたいと思います。