5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Stable Diffusionのオリジナル開発陣による画像生成AIモデル最新版FLUX 1.1 [pro]のWeb APIを呼んでいくつかの画像を生成してみた

Last updated at Posted at 2024-10-06

Supershipの名畑です。オンライン連載漫画の中では特に寿エンパイアが大好きなんですが、先日、せきやてつじ先生原画展に行ってきました。熱を感じました。エンジョイ!

はじめに

以前「Stable Diffusionのオリジナル開発陣が発表した画像生成AIモデルFLUX.1([dev]/[schnell])をMacBook(M2)で動かしてみた」という記事を書きました。
Stable Diffusionのオリジナル開発陣によって立ち上げられたBlack Forest Labsがリリースした画像生成AIモデル FLUX.1 をMacBookで動かしてみたという記事でした。

あれから2ヶ月が経ち、FLUX.1.1[pro] (コードネーム Blueberry)がリリースされ、さらに当時は限定公開だったWeb APIも一般公開されました。まだベータではありますが。

BlackForestLabsは同時に、開発者や企業向けのBFL APIベータ版の一般提供も開始した。FLUX1.1 [pro]の画像生成能力をアプリケーションに組み込めるようになる。APIの利用料金は1画像あたり4セントという低価格に設定されている。

参考:ASCII.jp:人気の画像生成AI、最新版「FLUX 1.1」発表 「Blueberry」として話題のモデル

今回はこの FLUX1.1 [pro] をWeb API経由で呼び出してみます。

コードはすべてPythonです。

アカウント作成とAPI Keyの作成

APIのページRegisterからアカウントを作成し、ログインします。

1クレジットは0.01ドルです。登録タイミングによるのかもしれませんが、私は最初から50クレジット付与されていました。

Pricingのページによると、モデル毎の費用は以下です。

  • FLUX 1.1 [pro] 0.04ドル / 1枚
  • FLUX.1 [pro] 0.05ドル / 1枚
  • FLUX.1 [dev] 0.025ドル / 1枚

次にAPI Keyを作成します。

Add Keyを押してページ遷移し、好きなKey名を入力します。

flb_api_1.png

すると以下のように発行されます。

flb_api_2.ml.png

私の環境

私の端末のOSはmacOS 14 Sonomaです。

Pythonのバージョンは以下です。

$ python --version
Python 3.12.2

サンプルコードの実行に用いるため、requestsも入れておきます。

$ pip install requests

バージョンを確認しておきました。

$ pip list | grep -e requests 
requests           2.31.0

ハードコーディングを避けるため、先ほどのAPI Keyを環境変数に保存します。私の環境での設定ファイルはzshrcです。

$ open ~/.zshrc

BFL_API_KEYという環境変数名にしました。

export BFL_API_KEY=ここに取得したAPI Keyを書く

コード

Getting Startedのサンプルコードをそのまま持ってきました。コメント文だけ少しつけています。本当はstatusはErrorを拾ってbreakさせた方が良さそうですが、ひとまずサンプルコードのまま変えていません。

import os
import requests
import time

# リクエスト
request = requests.post(
    'https://api.bfl.ml/v1/flux-pro-1.1',
    headers={
        'accept': 'application/json',
        'x-key': os.environ.get("BFL_API_KEY"),
        'Content-Type': 'application/json',
    },
    json={
        'prompt': 'A cat on its back legs running like a human is holding a big silver fish with its arms. The cat is running away from the shop owner and has a panicked look on his face. The scene is situated in a crowded market.',
        'width': 1024,
        'height': 768,
    },
).json()
print(request)
request_id = request["id"]

# 生成完了を待つ
while True:
    time.sleep(0.5)
    result = requests.get(
        'https://api.bfl.ml/v1/get_result',
        headers={
            'accept': 'application/json',
            'x-key': os.environ.get("BFL_API_KEY"),
        },
        params={
            'id': request_id,
        },
    ).json()
    if result["status"] == "Ready":
        print(f"Result: {result['result']['sample']}")
        break
    else:
        print(f"Status: {result['status']}")

プロンプトを訳すと「後ろ足で人間のように走っている猫が、両腕で大きな銀色の魚を抱えている。猫は店主から逃げ出していて、パニックになった顔に見えます。シーンは混雑した市場の中です。」ですね。

最終的なresultは以下のフォーマットです。ちなみにですが、レスポンスまでの時間は過去に試したAPI群と比べてかなり早かったです。

{
    'id': 'リクエストのID',
    'status': 'Ready',
    'result': {
        'sample': '生成された画像が置かれたurl',
        'prompt': '指定したプロンプト'
    }
}

sample内に画像が置かれたurlが指定されています。私が試したときのドメインはbflapistorage.blob.core.windows.netでした。

生成された画像は以下です。

flb_image_0.jpg

このプロンプトだとこんな画像が返ってきてほしいな」と期待したそのままに近いですね。素晴らしいです。
何枚か試しても店主自身が登場する画像は生成されませんでしたが、追われる焦りは表現されています。

別プロンプト

せっかくなのでプロンプトを変えて様々な画像を生成してみました。

使用するプロンプトは過去記事である「Stability AIの最新サービス「Stable Image Ultra」とStable Diffusionの過去モデル(2022年〜)の生成画像をひたすら比較して進化を実感してみた」と同様のものとしています。

日本の萌えヒロイン

日本の萌えヒロイン(Japanese moe heroine)」をanime style指定で生成しました。

'prompt': 'anime style, Japanese moe heroine',

flb_image_1.jpg

日本の人気アニメに登場するスイーツ

日本の人気アニメに登場するスイーツ(Sweets that appear in popular Japanese anime)」です。これもanime style指定です。

'prompt': 'anime style, sweets that appear in popular Japanese anime',

flb_image_2.jpg

修学旅行中の男子高校生

修学旅行中の男子高校生(Male high school student on a school trip)」です。こちらもanime style指定となります。

'prompt': 'anime style, male high school student on a school trip',

flb_image_3.jpg

ギターを演奏するお姫様

次は「ギターを演奏するお姫様(A princess playing guitar)」です。
ここから2プロンプトはfantasy-art styleを指定しています。

'prompt': 'fantasy-art style, a princess playing guitar',

flb_image_4.jpg

ノートパソコン上の可愛い妖精

ノートパソコン上の可愛い妖精(A cute fairy on top of a white laptop)」です。ここからはphotographic styleを指定します。

'prompt': 'photographic style, a cute fairy on top of a white laptop',

flb_image_5.jpg

黒いボブヘアで可愛い28歳の日本人女性

黒いボブヘアで可愛い28歳の日本人女性(28-year-old Japanese pretty woman with black bobbed hair)」です。

'prompt': 'photographic style, 28-year-old Japanese pretty woman with black bobbed hair',

flb_image_6.jpg

1980年代の香港の繁華街

1980年代の香港の繁華街(Hong Kong downtown in the 1980s)」です。

'prompt': 'photographic style, Hong Kong downtown in the 1980s',

flb_image_7.jpg

2020年の新宿歌舞伎町

最後です。「2020年の新宿歌舞伎町(Shinjuku Kabukicho in 2020)」です。

'prompt': 'photographic style, Shinjuku Kabukicho in 2020',

flb_image_8.jpg

生成されたどの画像も、かなり高品質です。

高品質なAI生成物に触れすぎていて、現実というものに対する感覚が麻痺しそう。

最後に

Black Forest Labsが勢いを発揮し続けそうな空気ですね。

今後に予定されている動画生成も楽しみです。

宣伝

SupershipのQiita Organizationを合わせてご覧いただけますと嬉しいです。他のメンバーの記事も多数あります。

Supershipではプロダクト開発やサービス開発に関わる方を絶賛募集しております。
興味がある方はSupership株式会社 採用サイトよりご確認ください。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?