【Stable Diffusion】Prompt Extendによるプロンプトの自動生成

【Stable Diffusion】Prompt Extendによるプロンプトの自動生成 機械学習

「Stable Diffusionの呪文を自動的に作成したい」
「Prompt Extendをデモではなく、ローカル環境で動かしたい」

このような場合には、この記事の内容が参考になります。
この記事では、プロンプトを自動生成できるPrompt Extendのインストールを解説しています。

本記事の内容

  • Prompt Extendとは?
  • Prompt Extendのシステム要件
  • Prompt Extendのインストール
  • Prompt Extendの動作確認

それでは、上記に沿って解説していきます。

Prompt Extendとは?

Prompt Extendとは、Webアプリのことです。
Hugging Face上で公開されています。

Prompt Extend
https://huggingface.co/spaces/daspartho/prompt-extend

Prompt Extendを知るためには、実際にデモを動かしてみてください。
例えば、「cat」と入力して場合の結果は次のようになります。

「Extended prompt」に表示されているのは、「cat」以降に続けるプロンプトになります。
出力されたプロンプトで生成した画像は、以下。

これを何もない状態から生成するのは、難しいです。
単純に「cat」で生成した場合は、以下となります。

これはこれでアリなんですけどね。

Prompt Extendが利用するモデルは、次のサイトをもとに作成されています。

Lexica.art
https://lexica.art/

上記サイトのデータセットは、以下で公開されています。
https://huggingface.co/datasets/Gustavosta/Stable-Diffusion-Prompts

実は、これはMagicPromptと同じデータセットになります。

ただ、Prompt ExtendはMagicPromptよりも利用しやすいと言えます。
利用しやすいとは、他のプログラムに組み込むのが容易だということです。

以上、Prompt Extendについて説明しました。
次は、Prompt Extendのシステム要件を説明します。

Prompt Extendのシステム要件

基本的には、PyTorchが動けばOSは何でもよいでしょう。
Pythonのバージョンは、以下のPython公式開発サイクルに従いましょう。

バージョンリリース日サポート期限
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月
3.112022年10月25日2027年10月

最も重要となるPyTorchは、次の記事に従えば簡単にインストールできます。

GPU搭載のマシンの場合は、GPU版のPyTorchをインストールしましょう。

以上、Prompt Extendのシステム要件を説明しました。
次は、Prompt Extendのインストールを説明します。

Prompt Extendのインストール

Prompt Extendのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。

検証は、次のバージョンのPythonで行います。

> python -V  
Python 3.10.4

そして、システム要件としてはPyTorchをインストール済という状況です。
このような状況において、次の手順でPrompt Extendのインストールを進めます。

  • Prompt Extendの取得(Hugging Faceから)
  • requirements.txtを使った一括インストール

それぞれを下記で説明します。

Prompt Extendの取得(Hugging Faceから)

daspartho/prompt-extend at main
https://huggingface.co/spaces/daspartho/prompt-extend/tree/main

プログラム一式は、上記ページで確認できます。

これだけのファイルであれば、一つづつダウンロードしてもよいでしょう。
ただ、数が多くなってくると手動ダウンロードは面倒です。

そのようなときにために、huggingface_hubというモノが存在します。
huggingface_hubを利用すれば、一括でプログラム一式を取得可能です。

今後もHugging Face上のアプリをダウンロードする可能性があるなら、是非ともインストールしておきましょう。
huggingface_hubをインストールできたら、次のコードを実行します。

from huggingface_hub import snapshot_download

snapshot_download(
    repo_id="daspartho/prompt-extend",
    repo_type="space",
    revision="main",
    cache_dir="./")

上記コードを実行すると、ダウンロード処理が開始されます。
ダウンロードは、一瞬で終わります。

処理が完了すると、ディレクトリ上に「spaces–daspartho–prompt-extend」を確認できます。

そして、「snapshots」以下にあるファイル・ディレクトリをコピーします。

「2fb6f31fd819db290ab33becb12f518a30243eda」は、リポジトリのバージョンです。

正確には、この長たらしいディレクトリより下のモノをコピーします。
コピーしたファイルは、コンテンツルートに保存します。

requirements.txtを使った一括インストール

コンテンツルートには、コピーしたrequirements.txtが存在しています。

requirements.txt

transformers 
torch
gradio

このファイルから、PyTorch関連を取り除きます。
その結果として、requirements.txtは次のようになります。

transformers 
gradio

このrequirements.txtを利用して、必要なモノを一気にインストールします。
今回は、数が少ないので個別にインストールしても構わないですけどね。
実行するのは、次のコマンドです。

pip install -r requirements.txt

処理完了までは、しばらく時間がかかります。
処理が完了したら、Prompt Extendのインストールは終了です。

以上、Prompt Extendのインストールを説明しました。
次は、Prompt Extendの動作確認を説明します。

Prompt Extendの動作確認

Prompt Extendの起動は、app.pyを実行します。
正常に起動できると、コンソールには以下のように表示されます。

Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

では、ブラウザで「http://127.0.0.1:7860」にアクセスします。
Hugging Face上のデモと同じ画面を確認できます。

「dog」と入力した結果の画面は、次のようになります。

動作は、Hugging Face上のアプリと全く同じです。
ただし、同じ「dog」でも結果は都度異なります。

また、次のコードでも動かすことが可能です。

from transformers import pipeline

prompt = "dog"

pipe = pipeline('text-generation', model='daspartho/prompt-extend')
result = pipe(prompt+',', num_return_sequences=1)[0]["generated_text"]

print(result)

コンソールには、次のように結果が表示されます。

dog, wearing a futuristic suit, intricate, highly detailed, digital painting, artstation, concept art, sharp focus, illustration, art by Gustave Dore, octane render, unreal engine 5, 8 k, art by artgerm and greg rutkowski and alphonse mucha,

以上、Prompt Extendの動作確認を説明しました。

タイトルとURLをコピーしました