見出し画像

自宅のパソコンにStable Diffusionを導入する方法(改訂版)

 先月(2022年8月)27日に、Stable Diffusion(以下、SDと言います。)を自宅のパソコンに導入する方法について記事を上げましたが、今月9日にSDのAPI等が改訂されて、これを利用した既存のGoogle Colabノートブックが使えなくなってしまいましたので、再度、SDの導入方法について記事にまとめることにしました。

 なお、今回も、Googleが提供しているPython実行環境のGoogle Colab用に作られたノートブックを使用し、Hugging Face及びGitHubで公開されているSDのパイプライン(複数の処理を連続で行う仕組み)を利用して、SDをインストールします。
 そのため、コードの入力は不要で、Pythonなどのプログラムの知識も必要ありません。


1.SDパイプライン利用前のセットアップ

(1) SDのGoogle Colabノートブックを開く

 まず、Hugging Faceの「Stable Diffusion with 🧨 Diffusers」のサイトにアクセスしてください。こちらのサイトには、SDの仕組みや使い方が詳しく書かれています。なお、Diffusersは、Hugging Faceの拡散モデル専用ライブラリーです。

 SDをインストールするためには、このサイトの最初にある「Open in Colab」の青いボタンをクリックしてください。SDのGoogle Colabノートブックが開きます。このあとの作業は、このノートブックを利用して行います。
 なお、最初にGoogle Colabを使用する際には、Googleアカウントでログインする必要があります。

(2) セットアップ作業

 それでは、具体的なセットアップ作業に入ります。
 ノートブックの「1. How to use StableDiffusionPipeline」の「Setup」以下の4つのセルを順番に実行していきます。
 セルの実行が終了すると、実行ボタンの左側に緑色のチェックマークが表示されます。実行が終了したら、次のセルに移ってください。

Pythonのコードが書き込まれた欄がセル。サイドのボタンを押してセルを実行。

最初のセルを実行して、失敗した場合は、上部メニューの「ランタイム→ランタイムのタイプを変更」で「ハードウェアアクセラレータ」にGPUを設定してください。

ハードウェアアクセラレータにGPUを設定して保存。

次のセルを実行して、Diffusersの0.3.0バージョンなどをインストールします。Diffusersは、Hugging Faceの拡散モデル専用ライブラリーです。

 次に、Hugging FaceのSD v1-4のページにアクセスしてライセンスを確認します。
 その後に表示されるHugging Faceのサイトにログインして、アクセストークンを取得します。

アクセストークンの表示画面。赤枠のアイコンをクリックするとコピーできる。

 なお、SDモデルのライセンスの確認やHugging Faceのアクセストークンの取得についての具体的な操作の際の画面などについては、以下のサイトを参考にしてください。

 3番目のセルを実行し、その後、4番目のセルを実行します。
4番目のセルの実行中に、アクセストークンの入力を求める欄が表示されますので、先ほどHugging Faceで取得したアクセストークンをコピーして貼り付けます。これでセットアップ作業は終了です。


2.SDパイプラインの利用

 次に、「Stable Diffusion Pipeline」以下のセルを実行していきます。
 最初のセルを実行して、SDパイプラインを使用し、SDの実行に必要な全てのファイルをダウンロードします。ここは、ダウンロードに少し時間がかかります。
 終了後、次のセルを実行して、GPUプラットフォームのCUDAを利用できるように設定します。これで、SDを使う準備が完了しました。


3.SDでの画像生成

(1) 基本的な画像生成方法

 「Stable Diffusion Pipeline」の3番目のセルを実行すると、文章から画像を生成することができます。そのまま実行すると、馬に乗った宇宙飛行士の画像が出てきます。

最初に生成された馬に乗る宇宙飛行士の画像

画像1枚生成するのに約20秒かかります。また、生成した画像は、ノートブックの画面左側のフォルダ内の該当ファイルをダブルクリックすることにより見ることができます。
 なお、Google Colabのファイル保存は一時的なものなので、気に入った画像はダウンロードして、自分のPCに保存してください。

(2) オリジナルの画像を生成する方法

「prompt = "a photograph of an astronaut riding a horse"」の" "内の文章を書き換えると、自分の生成したい画像を指示することができます。
 また、「image.save(f"astronaut_rides_horse.png")」の" "内の.pngの前の部分を書き換えて、保存される画像のファイル名を変更することもできます。
 実際に、プロンプト内の文章を書き換えて生成したのが以下の画像です。

 自分の好みの画像を生成するには、プロンプトに記載する文章(呪文)を工夫する必要があります。多くの人がこの呪文のコツをネットで披露していますので、参考にしてみてください。
 また、SDで生成された画像を検索できるLexicaというサイトが参考になります。もし興味があれば、このサイトで呪文を調べ、自分で呪文をアレンジして理想の画像を生成してみてください。

 その次の4番目のセルを実行すると、先程と同じプロンプトの呪文で別の画像が生成されます。このように同じ呪文でも、毎回、別の画像が生成されます

先程と同じプロンプトの呪文で生成された別の画像

(3) ステップ数の変更

 少し技術的になりますが、seedの数値を固定することにより、同じ画像を生成させることもできます。また、ステップ数を大きくすると、画像がきめ細かくリアルになり、ステップ数を小さくすると、一般的に画像が粗くリアルさが失われます
5番目のセルを実行すると、上の画像のseedの数値を固定して、ステップ数を50から15に減らした画像が生成されます。

上の画像のseedの数値を固定して、ステップ数を50から15に減らした画像

 どうでしょうか。首のところの模様などは粗くなっていますが、予想に反して、画像の品質は落ちていない(むしろ上がっている?)ように見えます。なお、ステップ数が小さいため、わずか15秒で画像生成ができました。


4.複数枚の画像の同時生成など

(1) 3枚連続した画像の生成

 次の6番目、7番目のセルを実行すると、3枚連続した画像が生成できます。先程と同じように、プロンプトの呪文を書き換えて、好きな画像を生成することができます。

1回目
2回目

 毎回、成功や失敗がありますね。理想の画像を生成するには、何度も試行錯誤する必要がありそうです。なお、3枚一組の画像生成にかかる時間は約40秒でした。

(2) n×mの画像生成

 その下の8番目のセルを実行すると、一度に12枚の画像が生成できます。
 また、「num_cols = 3、num_rows = 4」の数字部分を書き換えると、横と縦の枚数を変更することができます。

3×4の画像、生成時間2分44秒
2×2の画像、生成時間55秒

(3) 画像の縦横比の変更

 画像の縦横比を変更することもできます。最後の9番目のセルを実行すると、デフォルトの画像が512ピクセル×512ピクセルの正方形だったのに対して、縦512ピクセル×横768ピクセルの横長の画像を生成することができます。

縦512ピクセル×横768ピクセルの横長の画像を生成

 SDやMidjourneyなどの画像生成AIの仕組み初心者向けの簡単なSDの利用方法については、以下のページで解説していますので、時間があれば、見ていってください。


この記事が参加している募集

やってみた

この記事が気に入ったらサポートをしてみませんか?