🎨

AI に絵を描かせる方法を誰よりも丁寧に説明するYoutube動画を投稿した【Stable Diffusion】

2022/09/16に公開

動画

こちらの動画の解説に使っている記事です。ぜひ見てください。
https://www.youtube.com/watch?v=AlVLv4L-zeQ

動画媒体の方がコードとか触ったことない人もとっつきやすいと思ったので Youtube に投稿してみました。
頑張って喋ったので Zenn の読者さんも良かったら見てみてください。

修正点(2023年2月19日時点)

以下の修正点があります。

  • ソースコードの3つ目の箱の19行目を以下に変更
    • GitHub の方には反映済みです
image = pipe(prompt).images[0]

参考情報
https://github.com/CompVis/stable-diffusion/issues/402

  • Stable Diffusion の学習済みモデルに対して「Access repository」ボタンを押さなくて良くなっている…?
    • これに関しては 2023年2月19日の情報なので、後に変わる可能性があります。

修正点(2023年7月16日時点)

以下の修正点があります。

  • ソースコードの1つ目の箱を以下に変更
    • GitHub の方には反映済みです
!pip install diffusers==0.12.1 transformers ftfy

内容

最近流行りの Stable Diffusion で、誰でも簡単に AI に絵を描かせてみましょう。
プログラミングがわからない人でもできるように、頑張って説明してみます。

Stable Diffusion って何?

Stable Diffusionは、オープンソースとして2022年8月に無償公開された描画AIである。ユーザがテキストでキーワードを指定することで、それに応じて画像が自動生成される仕組みとなっている。その画風はフォトリアルなものから肉筆的なタッチのものまで幅広く対応している。

Wikipedia さんから引用しました。
雑に言うと、めちゃめちゃ賢い人が作ったお絵描き AI を誰でも無料で使えるってことです。

必要な前提条件

  • Googleのアカウントを作っている。または作れる

以上!

この解説で使うコード

一応 GitHub にコードは上がっています。
https://github.com/yoshiishunichi/sample_stable_diffusion

GitHub よくわからん人も後でコードの使い方解説するので安心してね。

手順

  1. Google のアカウント作成
  2. Hugging Face のアカウント作成
  3. Hugging Face で Access Token を発行
  4. コードのダウンロード
  5. Google ドライブにフォルダを作成
  6. Google Colab でコードを実行
  7. カスタマイズする

1. Google のアカウント作成

これはまあみんなできると思います。
持ってない人は作ってください。

2. Hugging Face のアカウント作成

Hugging Face
https://huggingface.co/

多分、学習済みモデルやデータセットを公開してるサイトです。
筆者も Stable Diffusion で初めて知りました。

Hugging Face にアクセスしたら、右上の Sign Up ボタンから手順通りアカウントを作成します。

3. Hugging Face で Access Token を発行

2023/07/16 現在ここは不要です

Access Token(アクセストークン)というのは、パスワードみたいなものです。
これを発行してもらえると、 Stable Diffusion のモデルが使えるようになります。

まず、 Stable Diffusion のモデルに対して、アクセス権を取得しましょう。

Hugging Face にログインした状態で以下のリンクにアクセスしてください。
https://huggingface.co/CompVis/stable-diffusion-v1-4

そして、利用規約を読んだら、以下のチェックを押して、Access repository ボタンを押しましょう。

その後、 Hugging Face の右上のアイコンを押して、 Settings を選択。

左のリストから Access Tokens を選択。

New token ボタンを押して、Name に適当名前をつけ、 Generate a token ボタンを押してアクセストークンを発行します。

画面にトークンが追加されます。
Show の横にある四角いマークを押してトークンをコピーし、必ずどこかにメモしておきましょう。

このトークンはパスワードと同じようなものなので、あまり人に教えない方が良いでしょう。

4. コードのダウンロード

まずは、筆者の GitHub に上がっているコードを取得しましょう。
https://github.com/yoshiishunichi/sample_stable_diffusion

GitHub の使い方わかる人は git clone でOKです。
わからない人は、緑色の Code っていうボタンから 「Download ZIP」 を選択しましょう。

ダウンロードされた zip ファイルを解凍して、中に入っている text_to_image.ipynb というファイルを使います。

5. Google ドライブにフォルダを作る

Google ドライブに AI が描いた絵を保存するので、 Google ドライブに「images」というフォルダを作ります。

Google にログインして Google ドライブにアクセスします。
https://drive.google.com/drive/u/1/my-drive

左上の「マイドライブ」をクリックして、「新しいフォルダ」を選択します。

「images」と入力して、「作成」ボタンを押します。

すると、imagesフォルダが作られるはずです。

6. Google Colab でコードを実行

Google にログインして Google Colab にアクセスします。
Google Colab
https://colab.research.google.com/?hl=ja

アクセス時に表示されるダイアログから右端の「アップロード」を選択し、ファイルを選択から先ほどダウンロードした text_to_image.ipynb を選択します。

間違ってダイアログを閉じちゃったり、表示されてなかった場合、左上の 「ファイル」 から 「ノートブックを開く」 を選択すると、ダイアログを再度開けます。

うまく text_to_image.ipynb が開けるとこんな画面になります。

中に文字の書かれたグレーの四角が、3つ表示さていると思います。

ここで、2つ目の四角の dummy_access_token という文字をさっき Hugging Face から発行されてメモしておいたトークンに置き換えてください。
これは俺の共有しちゃうとダメなので、みなさんのトークンでお願いします。

あと、大丈夫と思いますが、左上の「編集」->「ノートブックの設定」->「ハードウェア アクセラレータ」が、「GPU」となっていることを確認してください。

もし、 GPU になっていなければ、 GPU にしてください。

これで準備完了!
あとは、 Google Colab の方で、四角の左に表示されている再生ボタンみたいなやつを上から順に押していくだけです。
再生ボタンを押すと、再生ボタンの周りがクルクルするので、次の再生ボタンを押すのはそれが止まるまで待ちましょう。
2つ目の四角の再生ボタンを押すと、以下のような警告が出ると思いますが、「Googleドライブに接続」を押して指示通りに許可しましょう。

最後の3つ目の四角の再生ボタンを押すと、めちゃくちゃ長い時間、再生ボタンがクルクルします。
ここで100枚の猫の画像を作っています。
のんびりアニメでも見ながら待ちましょう。
100枚もいらねえよって人は、後で説明します。そこそこ作られて満足したらクルクルしてるボタンもう一回押して中断しましょう。

作っている過程を見ることもできます。
さっき作った images フォルダの中に 「cat」 っていうフォルダが作られていると思います。
この cat フォルダの中に画像が1枚ずつ追加されていくのが確認できます。

こんな風に。

7. カスタマイズする

このままだと、猫の画像100枚しか作れないので、色々できるようにしていきます。

好きな画像を作る

3つ目の四角は以下のようになってると思います。

import os
import shutil

prompt = "cat"

dirName = "/content/drive/MyDrive/images/" + prompt

# 存在チェック
if os.path.isdir(dirName):
    # 既存のフォルダを削除して新規作成
    shutil.rmtree(dirName)
    os.mkdir(dirName)
else:
    # 新規作成
    print("ディレクトリが存在しません")
    os.mkdir(dirName)

for i in range(100):
    image = pipe(prompt)["sample"][0]
    image.save(dirName + "/image-" +  str(i) + ".png")

この prompt = "cat" ってところで、なんの画像を作るか決めてます。
prompt = "dog" にすれば犬の画像になります。
ここを書き換えることで、好きな画像を作れるようになります。
英語じゃないとダメですが、 DeepL とかで翻訳してがんばりましょう!

枚数を変える

3つ目の四角の for i in range(100) の 「100」 って数字を変えるだけでいけます。

エロい画像を作る

Stable Diffusionの機能で、エロい画像が作られた場合、画像全体が黒塗りされてしまいます。
注意してほしいのは、 Google Colab でゴリゴリにエロい画像作って Google ドライブに保存すると、 BAN されたりするかもしれません。
消えてもいい Google アカウントでやるようにしましょう。

2つ目の箱を以下のように変更します。
もちろん、 dummy_access_token は各自置き換えてください。

# ここに Hugging Face で発行されたトークンを入れてください。
USER_ACCESS_TOKEN="dummy_access_token"

from google.colab import drive
drive.mount('/content/drive')

from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=USER_ACCESS_TOKEN)
pipe.safety_checker = lambda images, **kwargs: (images, False)
pipe.to("cuda")

pipe.safety_checker = lambda images, **kwargs: (images, False) っていう1行を追加しただけです。

まあ、エロい画像なんて俺は作らないんですが、たまに誤検知されてしまうからね。いや、本当にね。

こちらを参考にしました。

https://zenn.dev/motoishimotoi/scraps/eeca19af2916b6#comment-c3435111f5df3c

まとめ

Stable Diffusion の使い方をプログラミングとかわかんね〜って人にもわかるように説明してみました。

筆者はずっと Twitter 見てるので、この記事・動画が良かったって人は Twitter フォローしてくれたら絡みに行きます。

https://twitter.com/ganja_tuber

Discussion