「Stable Diffusionのプロンプト作成を効率化したい」
「 MagicPrompt Stable Diffusionをデモではなく、ローカル環境で動かしたい」
このような場合には、この記事の内容が参考になります。
この記事では、Stable Diffusionの呪文作成を効率化する方法を解説しています。
本記事の内容
- MagicPrompt Stable Diffusionとは?
- MagicPrompt Stable Diffusionのシステム要件
- MagicPrompt Stable Diffusionのインストール
- MagicPrompt Stable Diffusionの動作確認
それでは、上記に沿って解説していきます。
MagicPrompt Stable Diffusionとは?
MagicPrompt Stable Diffusion(以下MagicPromptと呼ぶ)とは、便利ツールです。
テキストを少し入力すると、それ以降のテキストを自動的に表示してくれます。
Googleのオートコンプリートと言えば、イメージしやすいでしょう。
オートコンプリートは、自動補完や入力補完とも呼ばれます。
Stable Diffusionのプロンプト生成において、MagicPromptは同じように機能します。
実際に次のページから、MagicPromptの動作を確認できます。
Stable Diffusion Prompt Generator
https://huggingface.co/spaces/Gustavosta/MagicPrompt-Stable-Diffusion
例えば、犬についての呪文を生成したいとします。
その場合、「dog」と入力して「送信」ボタンをクリック。
(※Stable Diffusionのプロンプトは英語入力がデフォルト)
そうすると、Stable Diffusionで使えるプロンプトが複数表示されます。
生成されるプロンプトは、毎回異なります。
MagicPromptは、GPT-2をベースにテキストを生成しています。
GPT-2については、次の記事で説明しています。
データセット(約8万件)は、以下のサイトから収集されているようです。
Lexica.art
https://lexica.art/
API(※)が用意されておらず、スクレイピングでデータを収集したようです。
MagicPromptの開発者はその点で苦労したと記載されています。
※2022年9月22日にAPIが公開されたようです。
https://lexica.art/docs
スクレイピングについては、次の記事で解説しています。
以上、MagicPrompt Stable Diffusionについて説明しました。
次は、MagicPrompt Stable Diffusionのシステム要件を説明します。
MagicPrompt Stable Diffusionのシステム要件
MagicPromptのシステム要件は、明記されていません。
そもそも、導入手順が公開されているわけでもありません。
MagicPromptのデモ画面のソースが、公開されているだけです。
https://huggingface.co/spaces/Gustavosta/MagicPrompt-Stable-Diffusion/tree/main
これを読み解いて、システム要件を導きだしています。
OSは、Pythonが動けばどこでもよいでしょう。
また、PythonのバージョンはPyton 3.7以降としておきます。
以下のPython公式開発サイクルを意識する必要がありますので。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
あと、PyTorchのインストールが前提となります。
これが唯一のシステム要件と言っても良いかもしれません。
PyTorchのバージョンは、最新版(安定版)を推奨しておきます。
PyTorchのインストールについては、次の記事で説明しています。
GPUが利用可能であれば、GPU版PyTorchのインストールをオススメします。
以上、MagicPrompt Stable Diffusionのシステム要件を説明しました。
次は、MagicPrompt Stable Diffusionのインストールを説明します。
MagicPrompt Stable Diffusionのインストール
MagicPromptのインストールを行います。
PyTorchがインストール済みであることを前提とします。
その前提で以下を進めていきます。
- パッケージのインストール
- 必要ファイルのダウンロード
パッケージのインストール
インストールするパッケージは、以下。
- gradio
- transformers
- transformers[sentencepiece]
gradioについては、デモ画面を動かすために必要です。
画面が不要である場合は、gradioをインストールする必要はありません。
でも、動作確認時に便利なのでインストールしておきましょう。
インストールには、次のコマンドを実行します。
pip install gradio pip install transformers pip install transformers[sentencepiece]
必要ファイルのダウンロード
プロンプトの自動生成には、次のファイルを利用しています。
ideas.txt(約12万行のデータが登録されています)
このファイルは、次のURLからダウンロードできます。
https://huggingface.co/spaces/Gustavosta/MagicPrompt-Stable-Diffusion/raw/main/ideas.txt
プログラムから読み込みができる場所に、ダウンロードしたファイルを保存しておきます。
以上、MagicPrompt Stable Diffusionのインストールを説明しました。
次は、MagicPrompt Stable Diffusionの動作確認を説明します。
MagicPrompt Stable Diffusionの動作確認
MagicPromptの動作確認を行います。
動作確認には、次のコードを利用します。
app.py
import gradio as grad import random import re from transformers import pipeline, set_seed gpt2_pipe = pipeline('text-generation', model='Gustavosta/MagicPrompt-Stable-Diffusion', tokenizer='gpt2') with open("ideas.txt", "r") as f: line = f.readlines() def generate(starting_text): for count in range(4): seed = random.randint(100, 1000000) set_seed(seed) if starting_text == "": starting_text: str = line[random.randrange(0, len(line))].replace("\n", "").lower().capitalize() starting_text: str = re.sub(r"[,:\-–.!;?_]", '', starting_text) print(starting_text) response = gpt2_pipe(starting_text, max_length=random.randint(60, 90), num_return_sequences=4) response_list = [] for x in response: resp = x['generated_text'].strip() if resp != starting_text and len(resp) > (len(starting_text) + 4) and resp.endswith( (":", "-", "—")) is False: response_list.append(resp + '\n') response_end = "\n".join(response_list) response_end = re.sub('[^ ]+\.[^ ]+', '', response_end) response_end = response_end.replace("<", "").replace(">", "") if response_end != "": return response_end if count == 4: return response_end txt = grad.Textbox(lines=1, label="Initial Text", placeholder="English Text here") out = grad.Textbox(lines=4, label="Generated Prompts") examples = [] for x in range(8): examples.append(line[random.randrange(0, len(line))].replace("\n", "").lower().capitalize()) title = "Stable Diffusion Prompt Generator" description = 'This is a demo of the model series: "MagicPrompt", in this case, aimed at: Stable Diffusion. To use it, simply submit your text or click on one of the examples.<b><br><br>To learn more about the model, go to the link: https://huggingface.co/Gustavosta/MagicPrompt-Stable-Diffusion<br>' article = "<div><center><img src='https://visitor-badge.glitch.me/badge?page_id=magicprompt_Stable Diffusion' alt='visitor badge'></center></div>" grad.Interface(fn=generate, inputs=txt, outputs=out, examples=examples, title=title, description=description, article=article, allow_flagging='never', cache_examples=False, theme="default").launch(enable_queue=True, debug=True)
app.pyは、デモ画面のソースとして公開されているモノです。
「ideas.txt」のパスには、注意してください。
上記コードを実行すると、コンソールに以下が表示されます。
Running on local URL: http://127.0.0.1:7860 To create a public link, set `share=True` in `launch()`.
Chromeなどのブラウザで「http://127.0.0.1:7860」にアクセスします。
そうすると、デモ画面が確認できます。
見た目は、全く同じですね。
「dog」と入力して「送信」ボタンをクリックしたら、次のように表示されました。
ローカル環境にて、MagicPrompt Stable Diffusionを動かすことができました。
以上、MagicPrompt Stable Diffusionの動作確認を説明しました。