Python

【Python】Stable Diffusionを使ってAI画像を生成するサンプルコード

この記事は約6分で読めます。

 

今回はPythonでStable Diffusionを用いて、テキストから画像を生成する方法を紹介したいと思います

 

Stable Diffusionとは

 

Stable Diffusionとは、2022年8月に無償公開された画像描画AIです。
学習済みモデルが公開されており、Pythonから利用することが出来ます。
Stable Diffusionを用いることで、テキストでを与えることでそれに応じて画像が自動生成されます。
入力された文字列から画像を生成するタスクのことをText to Imageタスクと呼びます。

 

事前設定

 

Colabの設定

 

Stable Diffusionのモデルを使用するためには、GPUが必要です。今回は手っ取り早くGPU環境を用意できるGoogle Colaboratory上でコードを書いていきます。

 

まず前準備としてノートブックのランタイムをGPUに変更します。方法はColab上部メニューの 「編集」 → 「ノートブックの設定」を選択。ハードウェアアクセラレータ を None から GPU に変更して保存します。

 

HuggingFaceのアカウント作成

 

Hugging Faceは、自然言語処理を対象にしたオープンソースの人工知能コミュニティーで、学習済みモデルやデータセットなどが公開されているサービスです。

 

HuggingFaceにアクセスし画面右上のSign Upよりアカウントを作成します。

 

メールアドレスとパスワードを入力すると以下のようなページに遷移します。

UsernameFull nameを入力します。

API鍵の発行

 

https://huggingface.co/CompVis/stable-diffusion-v1-4

HuggingFaceの画面右上のアイコンから[Settings]ページをクリックします。

 

左メニューに[Access Tokens]に移動し「NewToken」ボタンよりNameに任意の名前を入力し「Generate Token」よりトークン発行します。今回Nameには「Stable-diffusion-v1-4」と入力しています。

 

Stable Diffusionのインストール

 

PythonからStable Diffusionを利用するために、GPU設定したGoogle Colabのセルに以下のコマンドを入力し、実行ください。

 

!pip install diffusers==0.8.0 transformers scipy ftfy

 

DiffusersはHuggingFaceが開発しているライブラリです。画像や音声に対応した事前学習済みの拡散モデルが提供されており、モデルのダウンロードを簡単に行うことが出来ます。今回はDiffusersを用いて、「stable-diffusion-v1-4」を読み込みます。

 

モデルの読み込み

 

先ほど発行したAPI鍵を変数access_tokenに指定し、以下のコードをColabに記載しコードを実行ください。

 

import torch
from torch import autocast
from diffusers import StableDiffusionPipeline

access_token = "<自分のAPI鍵>"

# モデルのダウンロード
model = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=access_token)
model.to("cuda")

 

これで事前準備は完了です。

 

テキストから画像を生成する

 

モデルの読み込みができたら、文章をモデルに渡すことで画像が生成してみます。

テキストから画像を生成するコードは以下になります

 

import matplotlib.pyplot as plt

num = 5 # 生成したい画像枚数

prompt = '''
girl,asian,white,beauty
''' # 生成させたい画像のプロンプト文章
 
for i in range(num):
    model(prompt).images[0].save(f"outputs{i}.png") # 生成した画像を保存
    # outputsフォルダに保存された画像を描画 
    plt.imshow(plt.imread(f"outputs{i}.png"))  #生成した画像を確認
    plt.axis('off')
    plt.show()
print('処理完了')

 

promptは生成させたいもととなる文章です。任意の文章に変えてみてください。また、numという変数には生成枚数を指定しています。

 

このモデルは乱数シードを使用しているため、出力ごとに生成結果が変わります。なのでいい感じの画像が生成されるまでこれを繰り返します。ガチャをあたりが出るまで引き続けるイメージです

 

画像は、「content」直下に保存されています。中身を確認すると画像生成されています。

うち1枚は以下のような画像でした。

 

 

呪文についてはコツがあるらしく、うまく設定しないといい感じの画像を作るのは難しいです

 

参考:StableDiffusionでリアルな人物画像を生成するための呪文(プロンプト)ヒント集

 

また、日進月歩で新しい技術が登場することもあり、今回の記事で紹介した内容がすぐに古くなる可能性があります。そのため、ここで紹介しているコードが動作しなくなるなどの可能性も考えられますので、エラーが出た場合はエラーメッセージでググるなど必ず公式のWebページ等もご参考いただけますと幸いです。

 

<5/7 追記>

AUNTOMATIC1111というものを使用することでプログラムではなくUIからイラストを生成できるみたいです。

 

参照:【Python】GoogleColab上でStableDiffusion+LoRAで美少女イラストを生成する

 

 

 

関連記事:【Python】ChatGPTを使って画像を生成してみた

関連記事:Pythonを使ってChatGPTと会話するサンプルコード

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. […] 参考記事:【Python】Stable Diffusionを使ってAI画像を生成するサンプルコード […]

  2. […] 関連記事:【Python】Stable Diffusionを使ってAI画像を生成するサンプルコード […]

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