[Stable Diffusion] たった 1 分!AI 絵師でサイバーパンクな侍を描いてみた!

皆さんこんにちは!キカガクで機械学習講師をしております。倉田です。

今回は、Stable Diffusion webUI と google colab を用いて、サイバーパンクな侍を書いてみようと思います。

Stable Diffusion とは


Stable Diffusion とは、プロンプト(言葉や単語の指示)から画像を生成する モデルの一種です。基幹技術に拡散モデル( Diffusion Model )が利用されており、高精度な画像を一瞬で生成できることで話題を呼びました。

実際にこの Diffusion Model がどうやって画像生成を実現しているのか、気になりませんか?

このモデルは、完全にランダムに数値が与えられた画像から、ノイズを除去することで少しずつ画像を生成していきます。

そのため、Diffusion モデルはよく彫刻師に例えられます。(石灰から像を少しずつ削り出す彫刻師のイメージです。)

プロンプトの情報はこのとき、どういう方向性でノイズを除去するのかを指示しているのですが、非常に複雑なので今回は割愛します。気になる方は「CLIP」という技術について調べてみてください!

ポジティブプロンプトとネガティブプロンプト


近年、「プロンプト」という言葉を各所で聞きますが、これは「AI に指示する言葉」のことです。Stable Diffusion でもこのプロンプトをどう書くか(= AI にどのような指示をあたえるか)が、生成画像の良し悪しに強く影響します。

画像生成には「ポジティブプロンプト」「ネガティブプロンプト」の 2 つのプロンプトを書くことが一般的です。難しそうな名前ですがこれらはそれぞれ以下のような内容を指示するものです。

  • ポジティブプロンプト : AI に実施してほしいこと
  • ネガティブプロンプト : AI に実施しないでほしいこと

例えば、「サイバーパンクな侍」を描きたい場合、次のようなプロンプトを書くと良さそうです。

  • ポジティブプロンプト : Samurai, syberpank , neon light, standing in neon city,
  • ネガティブプロンプト : ninja, traditional, standing in Edo,

私と同じく英語が苦手な方は、DeepL などを使いながらプロンプトを書くとスムーズに画像生成ができますよ!

Stable Diffusion webUI とは


今回は画像生成のサービスとして Stable Diffusion web UI を用います。このサービスは ブラウザ上で簡単かつわかりやすい UI で画像生成を行えるサービスです。(しかも無料!)

実際に画像を生成してみる


さて、それでは Stable Diffusion web UI を使って、画像生成を試してみましょう。

Step 1 . Google Colab で Stable Diffusion web UI を起動する。

では、始めに以下のコードを google colab のセル上にコピペしてください。また、ランタイムは GPU に設定しておきいましょう。(ちなみに下のボタンを押すとコピペ済みの notebook が開くので、そちらで実施しても OK です。)

colab notebook はこちら

python
%pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchtext torchaudio torchdata==0.6.0 --index-url https://download.pytorch.org/whl/cu118

!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /content/stable-diffusion-webui

!wget https://huggingface.co/nuigurumi/basil_mix/resolve/main/Basil_mix_fixed.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/Basil_mix_fixed.safetensors
!wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -O /content/stable-diffusion-webui/models/VAE/vae-ft-mse-840000-ema-pruned.safetensors

!python launch.py --share --xformers --enable-insecure-extension-access

セルにコピペできた方はこれを実行しましょう。(画像の赤丸を押すと実行できます。)

少し待っていると、「Running on public URL: https :// ~~~~~~~ 」という出力が出てくるので、青字になっているリンクをクリックしてください。

実行後に 青字のリンクから Stable Diffusion web UI にアクセスできます。

Step2. Stable Diffusion web UI で画像を生成する。

クリックすると、Stable Diffusion web UI にアクセスすることができました!

Stable Diffusion web UI のメイン画面

Stable Diffusion web UI の使い方は非常にシンプルです。

★ Stable Diffusion web UI の 基本操作
  • ① : ポジティブプロンプトを書く。
  • ② : ネガティブプロンプト書く。
  • ③ : Generate を押す。
  • ④ : ここに画像が生成される。

では今回は、「サイバーパンクな侍」をテーマに次のようにポジティブプロンプトとネガティブプロンプトを設定しておきます。ちなみに私が実際に考えたプロンプトは赤線の部分のみで、それ以外は汎用的によく使われるプロンプトになります。

Positive Prompt
high quality, very_high_resolution, large_filesize, full color, Samurai, syberpank , neon light, standing in neon city, 
Negative Prompt
lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name, multiple legs, malformation,

これらのプロンプトを それぞれ ①, ② に書いて、「Genetrate」を押してみると、次のような画像が生成されました!

生成される画像はランダムかつ一度しかでてこないので、もし良さそうな画像が出てきたら保存しておきましょう。(生成画像との出会いは一期一会です!)

全く同じ 設定で Generate を 3回実施してみると次のような画像が出てきました。(ちなみに1枚 5秒ほどで生成でできます。)

まとめ


いかがだったでしょうか?非常にシンプルな実装で、高性能な画像生成が利用できることが伝われば幸いです。

Stable Diffusion web UI にはこの他にも、拡張機能のインストールや細かなオプションが豊富に用意されているので、ぜひ皆さんも触りながら試してみてください!

こちらの記事もオススメ

まずは無料で学びたい方・最速で学びたい方へ

まずは無料で学びたい方: Python&機械学習入門コースがおすすめ

Python&機械学習入門コース

AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!

無料で学ぶ

最速で学びたい方:キカガクの長期コースがおすすめ

一生学び放題

続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!

AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?

無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!

説明会ではこんなことをお話します!
  • 国も企業も育成に力を入れている先端 IT 人材とは
  • キカガクの研修実績
  • 長期コースでの学び方、できるようになること
  • 料金・給付金について
  • 質疑応答