MarkdownとBullet Journal

いわゆるプログラマーのつぶやき

Stable Diffusionのモデル一覧

多数存在するDiffusion用モデル

標準のStable Diffusion(現在1.4まで公開)に加えてWaifuやJapaneseなど色々とモデルが登場している。Hugging Faceのサイトから情報を転載する。

※サイトに含まれない情報を一部追加している(ayan4m1/trinart_diffusers_v2)。よってもっとモデルは存在するだろう

本家

  • CompVis/stable-diffusion-v1-4 →現在主流
  • CompVis/stable-diffusion-v1-3
  • CompVis/stable-diffusion-v1-2
  • CompVis/stable-diffusion-v1-1
  • CompVis/stable-diffusion
  • CompVis/stable-diffusion-v-1-4-original
  • CompVis/stable-diffusion-v-1-3-original
  • CompVis/stable-diffusion-v-1-2-original
  • CompVis/stable-diffusion-v-1-1-original

分家

  • hakurei/waifu-diffusion →2次元の絵が得意
  • ayan4m1/trinart_diffusers_v2 →2次元の絵が得意
  • rinna/japanese-stable-diffusion →プロンプトが日本語対応
  • lambdalabs/sd-pokemon-diffusers
  • lambdalabs/sd-image-variations-diffusers
  • doohickey/trinart-waifu-diffusion-50-50
  • pcuenq/stable-diffusion-v1-4
  • ttj/stable-diffusion-vae-anime
  • philschmid/stable-diffusion-v1-4-endpoints
  • osanseviero/test_stability
  • crumb/jit-traced-waifu-diffusion-unet
  • crumb/jit-traced-stable-diffusion-unet
  • jcplus/waifu-diffusion
  • naclbit/trinart_stable_diffusion
  • lambdalabs/stable-diffusion-image-conditioned
  • ShadowPower/waifu-diffusion.openvino
  • naclbit/trinart_stable_diffusion_v2
  • crumb/pruned-waifu-diffusion
  • johnslegers/stable-diffusion-v1-4
  • justinpinkney/pokemon-stable-diffusion
  • olympictafira/cAT

今後の登場が楽しみなモデル

  • CompVis/stable-diffusion-v1-5 →9/25登場予定(DreamStudioでは既に使える)
  • CompVis/stable-diffusion-v2 →1,024x1,024対応など
  • CompVis/stable-diffusion-v3 →巨大な再学習モデルを用意など
  • hakurei/waifu-diffusion-V2 →9/26予定。学習量が5倍以上

Diffuserで切替可能

これらのモデルはGoogle colabやローカルマシン上で切り替えて試せる。以下、Google colab、MacでのStable Diffusion導入解説のページを紹介する。

但しモデルがDiffuser(モデルを簡単に切り替えるためのツール)に対応していない場合はエラーになる点に注意。

programmingforever.hatenablog.com

programmingforever.hatenablog.com

情報元のHugging Faceサイト

huggingface.co

Stable Diffusion 1.5 がもうすぐPhotoshopで使える

PhotoshopでStable Diffusionのマスクを使った加工

PhotoshopでStable Diffusion1.5の機能を使う

これはStable Diffusionのwebサービスである、DreamStudioをPhotoshopプラグインで使うことで、Photoshop内でStable Diffusion1.5の、インペインティング、アウトペインティング、マスク機能を使える情報のメモだ。

※DreamStudioでは既にStable Diffusionの新機能が使える(下の記事を参照)

programmingforever.hatenablog.com

発表された情報

ツィッターで以下のようにアナウンスされている。

楽しみだ。登場次第実証を行う。

Stable Diffusion 1.5 をDreamStudioで使う

Stable Diffusionの新バージョン 1.5

モデル強化、inpainting、outpainting、maskingなどの機能を加えたStable Diffusion 1.5が登場したが、web版サービスであるDreamStudioで新バージョンを使える。

サードインパクト

今回のバージョン1.5の機能には正直驚かされた。AI画像生成のサードインパクトと考える程だ。これまでを含めたAI画像生成でインパクトのあった事象を列記する。

  1. ファーストインパクト:MidJourneyによる美しい画像の自動生成
  2. セカンドインパクト:WaifuやERNIE-ViLGによる2次元画像の自動生成
  3. サードインパクト:Stable Diffusion 1.5 によるあらゆる画像に対する自動加工

感じたインパクトを伝えるべく最初にDreamStudioの1.5版の使い方を解説し、次に作例を示す。

※開発者がアナウンスするツイッターのURLは以下の通り。米国の9/25からGoogle colabやローカルPCで1.5が使える様だ。

画像加工:inpainting, outpainting

アウトペインティングは、元の画像の周囲(何も無いエリア)に、AIで新たに連続性のある絵を描くことで、元の絵の外部を拡張させる機能であり、こちらはDALL E-2でも機能実装されている。

programmingforever.hatenablog.com

次にインペインティングは、元の画像の中で変更したい箇所を指定してAIで再描画させる機能である。例えば全体の雰囲気はそのまま残したいが、描かれている人の顔だけ変更したい、といった加工が可能になる。

これらの作業を行うために、ツールとして画像サイズ変更、マスキング、リストアの機能が用意されている。

DreamDtudioを使う

それでは早速DreamStudioで試してみる。DreamStudioのURLは以下の通り。

beta.dreamstudio.ai

URLをクリックすると下記の画面が現れる。

DreamStudioの起動画面

画面の左を見ると、Stable Diffusionのバージョン1.4(これまで使っていたバージョン)と新しい1.5が選択できる様になっている。

またその下にインペインティングなどを行うための「show editor」ボタンが追加されている。

バージョンは1.5を選び、show editorボタンを押すと下記の画面に切り替わる。

画像編集画面

upload imageのボタンを押して画像をUPする。

画像をアップロードした状態

レイアウト機能:絵を拡張する

select and move ボタンを使用(画像左部の一番上)

それではこの絵を変更していこう。まず横幅を広げるべく画面右の「Width」を768に変更する(1:1.5画像に変更)。その後、絵の左側にあるアイコンの一番上にある、矢印が上下左右に入ったアイコンを押す。するとマスクがかかった様な画面になるので、マウスで元の絵を真ん中あたりに配置する(下図参照)。

なおこの例では元の絵を尺度100%で扱うが、拡大縮小やフレームの一部カットなども問題なく行える。

横幅を広げ、真ん中に配置

リストア機能:元の絵を残す部分を指定

restore ボタンを使用(画像左部の上から3番目)

分かりやすさの観点からマスキングを飛ばして、先にリストアを説明する。

上から3番目にあるrestoreアイコンをクリックすると、リストアが使える。リストアは元の絵に対して変更の影響を与えず残したい部分を選択する機能だ。下の例では女性と女性に近い周囲をリストア選択している。

残したい部分を選択

次にリストア指定しなかった外側の世界を描くためのプロンプトを指定する。この例にふさわしい雰囲気として、A girl in a room like the sea with a large window を入力して、画像生成させるDreamをクリックする。するとリストア指定した箇所はそのまま残り、指定外の箇所はプロンプトに従った絵が作られた。

インペインティング&アウトペインティングの作例

  1. インペインティング;元の絵の中でリストア指定をしなかった箇所がAIで画像生成される
  2. アウトペインティング:元の絵の外側がAIで画像生成される

以上の二つの機能が、上の生成では同時に使用されている。もちろんどちらかだけの利用も可能だ。

マスキング機能

masking ボタンを使用(画像左部の上から2番目)

上から2番目のマスキング機能はよりユニークだ。リストア機能に近いが、リストアとは異なり、指定した箇所は元の絵に似たイメージで新たに描画される(元の絵は残らない)。

まずリストアの事例同様に元の絵をUPする。

元の絵

上から2番目のマスキングをクリックして、絵で元のイメージを残したい箇所を指定する。

マスキングで元のイメージを残したい所を指定する

残さない場所(今回の場合は人の周囲全て)は、プロンプトで海辺(seaside)を指定して生成させる。すると次の様な絵が生成される。何やら女性の映像含め雰囲気が一新しているのがわかる。

マスキング例

生成された画像例

マスキングを用いた生成例

マスキングを用いた生成例

お分かりになるだろうか。マスキングした箇所は元のイメージを生かした形で別の絵(別の女性の絵)が自動生成されており、マスキングしない箇所はプロンプトで与えた画像を自動生成している。

特筆すべきポイントとして、マスキングを用いて生成された絵は、マスキングされた部分とプロンプト生成部分のイメージやタッチが統合されることだ。背景が写真風になるとマスキングされた女性も写真風、同様に背景がイラスト風の場合は女性もイラスト風になる。

これはマスキングを利用すると破綻しにくい画像への加工が行えることを意味する。

マスキングとリストアの違い

マスキングとリストアの違いを整理する。

  • マスキング:マスキングした箇所は元の絵に似た様な絵を生成、マスキング以外はプロンプト指定の絵を生成
  • リストア:リストアした箇所は元の絵をそのまま残し、リストア以外はプロンプト指定の絵を生成

なお、元絵に対して、マスキングとリストアをそれぞれ指定することもできる。

例えば、女性の顔はそのまま残したいのでリストア、女性の体は似た雰囲気で書き換えたいのでマスキング、周囲はプロンプトで全く別の世界を生成、ということもできる。

以下にこの機能の応用例を示す。

実例①:不用なものを消す

よくありがちだが、風景写真を撮影した際に邪魔な人が入る時がある。これを一撃で消してみたい。

まず元の写真をアップロード。奥に不要な人物が見える。

元の写真:不要な人物が写っている

  1. 削除したい箇所以外をリストアで指定する(この例では不要な人物以外の殆どを指定)
  2. 削除したい箇所(不要な人物)だけをマスキング(*マスキング無しでもOK)
  3. プロンプトには「どこまでも続く鳥居と階段」→「Torii and stairs that go on forever」を入力

※マスキングは基本不要だが、マスキングを追加すると元の絵に忠実になりやすい。

※作業時のリストア指示部とマスキング指示部は区別しにくいので注意。リストア指示部は画像がクリアで、マスキング指示部は少しグレーのハッチングがかかるので区別できる(だが見にくい)。

以上の作業を行なって画像生成すると、指定箇所の不用な物が消えさる。

不用なものが消えた

比較写真。不要な人物が消えたのがわかる。

比較写真

実例②:希望するものを追加する

先ほどの自動消去機能はPhotoshopにも実装されているが、次に存在しないものを新たに画像に追加してみよう。

まず追加生成したい部分以外をリストアする。

追加生成以外の部分をリストア(保存)

チップス:マスキングの追加(基本不要)

普通はこのままプロンプトを与えて、リストアしなかった部分を生成させるが、元の画像をなるべく維持したい場合は、追加生成したい部分(リストア指示しなかった箇所)をマスキングしてもよい。本来マスキングをした場所にはプロンプトの影響を与えないことになっているが、画像生成される際にマスキング部にもプロンプトの内容が少し反映されるため、結果として希望に近い絵を生成する場合もある。

追加生成部分をマスク

指示が完了したらプロンプトに「舞妓」「Maiko standing」などを入力して生成。すると画像に着物の女性が追加された。

マスキングを追加した生成例

マスキング追加例

マスキングを追加しない生成例

マスキングなしの例

マスキング無しの方が意図したイメージの絵になる反面、元の絵の再現度が低くなる。マスキングを行うと元の絵に忠実になる反面、意図したイメージの絵になる確率が低くなる。用途に応じて使い分けられると思う。

【初心者向け】M1/M2 MacでStable/waifu/Trinart Diffusionを動かす手順

MacのStable / Waifu / Trinart Diffusionで作成したAI画像

最初に

今回の記事は、下記URLの優れた導入記事を参考に、初心者でもM1 MacにStable Diffusionをインストールできる様に、自分自身で行った手順を全て解説している。よって説明は未経験者用に色々補足や追記で量が多く、くどい所もあるため経験者の方は元記事の方がオススメ。

zenn.dev

想定する読者

  • 今までMac上でAI環境を試した事がないが、一度やってみたい
  • Stable,Waifu,Trinart等を簡単な手順で切り替えて使いたい
  • シェルの簡単な操作ならできる
  • 英文のエラーメッセージの解決方法をネットで探せる

ローカル環境でStable Diffusionを実行

AI画像生成を行う場合、以下の様な選択肢がある。

  1. webサービス利用、ログイン不要、無料、お試しサイト
  2. webサービス利用、ログイン必要、有料(初期は無料)、MidJourney, DreamStudio, DALL-E2など
  3. クラウドで実行、Google colab + Stable Diffusionなど
  4. ローカルで実行、WindowsMacで動作

記載の順に利用方法が難しくなる。ただ3の「クラウド実行」は意外に簡単で、トラブっても簡単に破棄して一からやり直せるのでお勧めだ。

それに対して4の「ローカル実行」は、自分のPCにインストールする関係で、環境の違い、バージョンの違い、手順の違いなどでエラーが出やすく、そのエラーの解決方法を探すのも中々骨が折れるだろう。M1 Macでの画像生成時間も5分程度かかる。

そんなデメリットがあってもローカルにインストールしたいモチベーションは以下になるだろう。

ローカルPCで実行したいモチベーション

  1. 純粋な技術的興味
  2. webでの提供やネットが停止してもPC版なら使い続けられる
  3. 制限フィルターを外したい
  4. Stable Diffusionと連携するアプリを使いたい(PhotoshopCLIP STUDIO PAINT:クリスタ)

私の場合は、1と4が理由で、Stable / Waifu / Trinart などをPhotoshopやクリスタのプラグインで使いたいと考えている。とは言ってもいずれPhotoshopやクリスタ側に追加実装される気もするが。。。

初心者の方は先にGoogle colabの体験を推奨

可能なら上記3のクラウド版を先に試された方が良いと思う。こちらで十分な用途もあるし、簡単・無料・高速に実行できて後腐れもない。このクラウド版で行った経験も活かされる。

programmingforever.hatenablog.com

Macへの導入手順

では未経験の方でも導入できる様に詳細に手順を記載していく。実行する項目は大きく分けて以下の通り。

0.準備

1.Homebrewのインストール

2.HuggingFaceの設定

3.python環境の構築

4.仮想環境の設定

5.Stable Diffusionの実行

色々とエラーも出ると思うので、ポイントを記載していく。但しローカルPCへのインストールはどんなトラブルが生じるか分からないこともあり、導入は自己責任とし、当サイトは導入責任に関与しない。

第0ステップ: Mac およびOSの準備

さて、それでは作業を進める。最後までやり通すにはおそらく1時間はかかるだろう。

最初にMacの環境などを整備する。

  • 機種がM1 Mac以上であること(M1, M2など)
  • Mac OSのバージョンが最新か確認して異なる場合はバージョンアップすること
  • いずれも問題ない場合も、念のため導入前に再起動を行うことを勧める

次に、ターミナル環境を確認する。MacのLaunchPadのアプリ一覧の中から、「その他」ー「ターミナル」を起動。すると下記の様な黒い色の画面が現れる。この後のコマンドはここで入力する

ターミナル画面の例

私はbashを使用するがzshでも問題ない。なおタイトルやプロンプトから名前などの情報を非表示にしている。真似をされたい方は下記を実行すればよい。興味が無ければ次にスキップ。

Macのルートフォルダー表示、隠しファイル表示
  • ファインダー上で、command+shift+G でフォルダ指定できるので「/」を入力&リターンするとルートフォルダー表示
  • ファインダー上で、command+shitf+. で隠しファイル表示(オルタネイティブ動作)

.bash_profileや.bashrc はユーザーのHOMEディレクトリに存在するが、隠しファイルなので上記をしないと表示されない事に注意。

② .bash_profile、.bashrc ファイルの最後に下記を追記

各fileが無い場合は新規作成する。ファイルの先頭に「 . 」が付くと隠しファイルにな流。

.bash_profile

# .bash_profileへの追記

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

.bashrc

# .bashrc

PS1="\W $ "
③ターミナルの設定変更

メニューの「ターミナル」ー「環境設定」ー「プロファイル」ー「ウインドウ」を選び、「作業ディレクトリまたは書類」に付いているチェックを外す。

以上

第0ステップ:ツールの理解

作業で使用する各ツールを解説する。先に進みたい方はスキップ。

パッケージ管理ツール:Homebrew

Mac OS Xオペレーティングシステム上でソフトウェアの導入を単純化するパッケージ管理システムのひとつ。実行ファイルや設定ファイル、ライブラリetcを一つのファイルとしてまとめているものをパッケージと呼ぶ。パッケージ管理システムとはこのパッケージのインストール(アンインストール)作業を一元的管理するもので、パッケージやライブラリの依存関係などが管理できる。

ライブラリ提供:Hugging Face

Hugging Faceは、主に自然言語処理に関連したライブラリの開発や人工知能のコミュニティを運営しているアメリカの企業。Hugging Faceのサイトでは、学習済みの機械学習モデルやデータセットなどを公開している。今回はこれを使う。

Python仮想環境:miniforge

M1 Mac機械学習用のPython仮想環境構築によく使われるパッケージマネージャ.複数のConda環境(仮想環境)を作成できる.pythonの仮想環境とは、本体にインストールされている環境とは分けてpython環境を構築する際に使用するツール。

よくありがちなインストールによる不可解な現象が出て解決方法が分からない場合、やり直しや削除も色々と大変だ。そこで、仮想環境を用意してそこで作業することにより、問題などあれば丸ごと消して最初からやり直すことができる、初心者にとっては誠に便利な環境だ。仮想環境用ツールは参考記事で使っているminiforgeを利用する。

パッケージ管理:conda

Anacondaではパッケージを Anaconda Cloud の独自のリポジトリで公開し、pip コマンドではなく conda コマンドでインストールする。よってAnacondaの環境を利用する場合には conda を使い、Anacondaを使わない場合には pip を使う。conda は、Anaconda以外の環境では使えない。今回もPython仮想環境に入ったらcondaを使用する。

コンパイラ:Rust

Rust(ラスト)はプログラミング言語コンパイラが提供されている。最初の安定版(バージョン1)は2015年に登場。今回の作業でTransformerのインストール時にRustコンパイラが無いとエラーになるためインストールする。

Python機械学習ライブラリ:PyTorch(ベータ版)

PyTorchは、Pythonオープンソース機械学習ライブラリ(Deep Learningライブラリ)の名称。2022/9現在ベータ版の1.13.0.dev20220830以降のPyTorchが必要なため作業の中でβ版へのバージョンアップを行う。

深層学習モデル:Transformer

Transformerとは、自然言語処理を得意とする深層学習モデル。エンコーダとデコーダをAttentionというモデルのみで結んだネットワークアーキテクチャ。それによって、機械翻訳タスクにおいて速いのに精度が高いという特徴を持ち、非常に使い勝手が良い。以下の記事が詳しい。

Transformerとは?解説

機械学習ツールボックス:Diffusers

標準のStable Diffusion以外にも、WaifuやTrinartなど優れたモデルが次々と発表されており、必要に応じてStable Diffusionと、Waifuなど発展型モデルを切り替えて使える環境が望ましく、それを可能にするのがDiffusersだ。Diffusersは機械学習の機能一式が揃ったツールボックスの名称でhuggingFaceが提供しているもので、huggingFaceで配布している各モデルのダウンロードや管理ができる。モデル変更時にダウンロードとStable Diffusionへのリンクを自動で行う。Ver0.3.0からmacも利用できる様になった。img2img、textual inversionにも対応。以下の記事が詳しい。

HuggingFace Diffusers v0.3.0の新機能|npaka|note

Python実行環境:Jupyter Notebook

Jupyter Notebookは、PythonなどをWebブラウザ上で記述・実行できる統合開発環境pythonが実行できる環境であれば他のものでも良いが、参考記事では読み書きや実験的な操作がしやすいとあり、Jupyter Notebookを利用する。Google colabの編集画面とよく似た構成なので、colabの経験があれば分かりやすい。

第1ステップ: Homebrewのインストール

1-1: 公式のURL先でコマンドをコピー

brew.sh

下の様に、日本語、Mac用の画面が現れる。画面に出てくるターミナル用コマンドをコピーする(白い四角のアイコンをクリック)

Homebrewの初期画面

1-2: ターミナルでHomebrewインストールを実行

次に Macのターミナルを起動する。起動方法はLaunchPadのアプリ一覧の中から、「その他」ー「ターミナル」を起動。

起動したら先ほどコピーしたコマンドをコピペして、Homebrewをインストールするためのコマンドを実行する

コマンド実行、passwordを聞かれる

パスワードが聞かれるのでMacへのログインパスワード(管理者)を入力してリターン。するとインストールされるリストがずらずらと表示された後に、

Press RETURN/ENTER to continue or any other key to abort:

が出るのでリターン。5分ぐらいかけてインストールが実行される。

1-3:パスを設定

実行完了画面をよく見ると、

Warning: /opt/homebrew/bin is not in your PATH.
  Instructions on how to configure your shell for Homebrew
  can be found in the 'Next steps' section below.

とパスが通っていないとのメッセージが出てくるので、下記を実行して.bash_profileにパスを追加する。下記の「あなたのユーザー名」はそのまま入るので問題ない

$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/あなたのユーザー名/.bash_profile

.bash_profileのファイルに下記が追加されていることを確認(無ければ自分で追記しても良い)

eval "$(/opt/homebrew/bin/brew shellenv)"

設定されたパスを通すべく、シェルの再起動コマンドを実行

exec $SHELL -l

1-4:Pythonをインストール

HomebrewからインストールできるPythonのバージョンを検索。”@”がついているものがインストール可能なバージョン

$ brew search python

app-engine-python          python-build               python@3.7
boost-python3              python-launcher            python@3.8
bpython                    python-markdown            python@3.9
gst-python                 python-tabulate            reorder-python-imports
ipython                    python-tk@3.10             wxpython
libpython-tabulate         python-tk@3.9              pythran
micropython                python-yq                  jython
ptpython                   python@3.10                cython

3.10をインストール

$ brew update
$ brew install python@3.10

Python@3.10をインストール

1-5:Rustをインストール

$ curl https://sh.rustup.rs -sSf | sh

Rustコンパイラをインストールしないと後の工程のTransformersのインストールでエラーになるため、ここでインストールする。インストール後、パスを有効にするためにターミナルを一旦終了して、再度ターミナルを起動すること。

1-6:Homebrewのbinのパスを通す

/etc/pathsのファイルの1行目に/opt/homebrew/binを追記

# 追加したイメージ
/opt/homebrew/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

これでHomebrewのインストールは終了。

第2ステップ: HuggingFaceの設定

2-1:Hugging Faceアカウント登録

Stable Diffusionを利用するにはHugging Faceのアカウントを取得し、アクセストークンを発行する。Hugging Faceのアカウントがあればスキップ。

1.Hugging FaceのURLにアクセス

huggingface.co

2.画面のsing upをクリック

Hugging Faceの初期画面

3.入力したeメールに届いた承認リンクをクリックし、ユーザー名などの情報を入力。ユーザー名はユニークなので先に使われている場合は使えない。全て完了すると完了画面が表示される。

アカウント登録完了画面

2-2:Hugging Faceのトークン発行

  1. 画面右上の黄色い丸をクリック
  2. 出てきたリストの中のSettingsをクリック
  3. さらにリストの中のAccess Tokenをクリックすると下記の画面が出るので「New Token」をクリック

ACCESS TOKENの画面

4.出てきた下の画面でトークンの名前(適当でOK)、「read」を選択した上で「Generate Token」をクリック

TOKENの設定

5.出てきた下の画面の右側にある四角いアイコンをクリックするとトークンがコピーされる

トークン作成完了、コピー

どこかメモにコピーしてもよいし、いつでもコピーは行える。

2-3: 使いたいモデルの利用許諾に同意する

使いたいモデルのページにログインし、利用許諾に同意する。下記は本家のstable Diffusionのサイト。

CompVis/stable-diffusion-v1-4 · Hugging Face

Waifuは利用許諾は無いようだ。

2-4: ターミナル上でhuggingFaceの環境を作る

1.ターミナルのコマンドラインに以下を入力

$ git config --global credential.helper

2.huggingface_hubをインストール

既にインストール済みの場合はスキップして次の3のログインに進む

$ pip3 install huggingface_hub

インストールメッセージの画面

huggingface_hubのインストール

3.huggingfase-cliにログイン

途中でトークンを聞かれるので、前項で取得したトークンをコピペすればOK

$ huggingface-cli login

ログイン画面

ログイン完了画面

これでHuggingFaceの設定は完了

第3ステップ: Python環境の構築

3-1: Python仮想環境のインストール

miniforgeを使用してPythonの仮想環境をインストール。以下のコマンドを入力。

$ brew install miniforge

3-3: Pythonの仮想環境作る

  • miniforgeが用意できたら仮想環境を実際に作る。
  • 以下のコマンドを入力してpython3.10が使える環境を作る
  • sd14は仮想環境の名前で、自分が分かりやすい名前を自由に付けられる
$ conda create --name sd14 python=3.10

下記のようにインストールリストが出るので、Proceedが聞かれたら「y」を選ぶ。

インストールリスト

y入力後の成功画面

3-4: 作成したPythonの仮想環境を起動する

  • 仮想環境が構築できたので、その仮想環境を起動してcondaを使ってpythonの環境を整える。

1.condaの初期化。以下を入力

※下記の様に使用しているシェル名を記載する。私の場合はbashなのでbashと記載、zshの場合はzshと記載

$ conda init bash

2.上記の変更を有効にすべく、ここでターミナルを一旦終了して、再度ターミナルを起動する。起動したら下記を入力。

$ conda activate sd14

すると下の様にプロンプトが変化する。

(baes)が(SD14)に変更された

3-5: 起動中の仮想環境の確認方法

minifogeをインストールしたら、コマンドラインの先頭に(base)などの文字列が表示される様になる。この先頭についている文字は”コマンドラインが今いる環境”を示すもの。

  • (base)は仮想環境の外 == Mac本体の本来の環境 にいることを示す
  • (sd14)は仮想環境の中 == conda activateで仮想環境に入ると先頭の名前が自分で名付けた仮想環境の名前に変わる

以降は、仮想環境の操作をする際は必ず先頭が仮想環境名になっていることを確認するようする。

これでPython環境の構築は完了

第4ステップ: 仮想環境の設定

4-1: PyTorchのベータ版インストール

仮想環境に入ったままで以下のコマンドを実行。

※2022/9現在、ベータ版の1.13.0.dev20220830以降のPyTorchが必要なためβ版へのバージョンアップを行う。

$ pip install --pre torch torchvision --extra-index-url https://download.pytorch.org/whl/nightly/cpu

4-2: PyTorchのバージョン確認方法

仮想に入った状態でpip listと入力すると、仮想環境にインストール済みのライブラリ一覧が表示される。リストの中のtorchの横に書いてある数字がインストールされたPyTorchのバージョン。

pip listの出力例

4-3: Transformersのインストール

以下のコマンドを実行する、なおRustがインストールされていないとエラーになるので注意。

$ pip install transformers

4-4: diffusers本体のインストール

以下のコマンドを実行する。

$ pip install --upgrade diffusers

新しいバージョンのdiffusersがリリースされたときも上記のコマンドを実行すればよい。最新の環境に自動でバージョンアップされる。

4-5: Jupyter Notebookのインストール

pythonの実行環境としてjupyter環境をインストールする。Google colabとよく似た構成の画面で、読み書きや実験的な操作がしやすい環境。

以下のコマンドを実行する。

$ pip install jupyter

4-6: 仮想環境の再ログイン

参考にした記事の筆者曰く、必要性が曖昧なものの、おまじないとして以下を実施しておくことを推奨されており、実行する。

※コマンドの#以下はコメントなので入力の必要はない

$ conda deactivate           # 仮想環境からのログアウト
$ conda activate sd14      # 仮想環境へのログイン

これで仮想環境の設定は完了、全ての設定が完了した。

第5ステップ: Stable Diffusionの実行

仮想環境の全セットアップが完了し、後はStable Diffusionの実行という所までたどり着いた。ここからの手順はGoogle colabで画像生成する方法に近い。

5-1: StableDiffusionの実行

  • stable diffusionをJupyter Notebookで動かす
  • 実行に必要なコマンドは公式のコマンドなど参照
  • 例として以下のサンプルコードを実行してみる

5-2: Jupyter Notebookの起動

仮想環境で以下を実行する。

$ jupyter notebook

実行後にブラウザが立ち上がり、ファイルビューアでMacのフォルダが表示される。例えばダウンロードなど、作業しやすい任意のフォルダに移動した後、右上のメニューの「新規」から「python3」を選ぶ。するとGoogle coblab同様のPython用エディター画面が表示される。

5-3: jupyter notebookでの実行

  • エディタの最初のセルに以下のコードを入力
  • 入力後、上にあるアイコンの「Run」ボタンを押して実行
  • 初回実行時はモデルのダウンロードを行うため実行に時間がかかるが二回目以降はダウンロードはスキップされる
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=True)
pipe = pipe.to("mps")

prompt = "Kitten surrounded by flowers in a poster style garden with mountains in the distance"

_ = pipe(prompt, num_inference_steps=1)

image = pipe(prompt).images[0]

image.save('./output.jpg')

下はPythonコードを入力した状態

Jupyter NotebookにPythonコードを入力

Runで実行した状態。画像生成メッセージが現れたらJupyterで選んだ作業フォルダの中に絵が生成されている。

実行画面。画像が生成されたメッセージ

Stable Diffusionで生成された絵:

プロンプト:Kitten surrounded by flowers in a poster style garden with mountains in the distance

Waifu Diffusionのモデルを使った事例

こちらはモデルをWaifuに変更してプロンプトも変更した例(後述の補足参照)

モデルとプロンプトを変更して実行

Waifu Diffusionで生成された絵:

プロンプト:cute cat ear maid

Trinart Diffusionのモデルを使った事例

同様にモデルをTrinartに変更した例(後述の補足参照)

Trinart Diffusionのコード

Trinart Diffusionで生成された絵:

プロンプト:cute cat ear maid

補足

生成時間

Mi Macでの生成時間は約5分程度。残念ながら?Google colab(無料)の方が約20倍速い。

モデルの指定

サンプルコード内の"CompVis/stable-diffusion-v1-4"の部分がモデルを選択する項目なので、そこを書き換えるだけで利用したいモデルに変更できる。

例:

  • Stable Diffusion ver.1.4は、"CompVis/stable-diffusion-v1-4"
  • Waifu Diffusionは、"hakurei/waifu-diffusion”
  • Trinart Diffusionは、"ayan4m1/trinart_diffusers_v2”

※Trinart Diffusion の最新バージョンのV2が数日前にDiffuser(モデルを切り替えるツール)に対応した。9/26にはWaifuの新バージョンが出る見込み。

※許諾が必要なモデルの場合、Hugging Faceにアクセスして使用したいモデルの許諾が必要(許諾ボタンがないページは許諾不要)

※その他多数あるモデルの紹介記事

programmingforever.hatenablog.com

作成画像

描画済みのデータはJupyter Notebookで選んだフォルダにファイル出力される。単に表示させるだけなら最終行は以下で良い。

image

【備忘録】Stable Diffusionをcolabで動かすコード一覧

Google colabで生成した例

別記事で導入解説

詳細な説明と事例を加えた、未経験者でも簡単にGoogle colabでStable Diffusionを使うための解説記事はこちら。

programmingforever.hatenablog.com

自分のメモ用

こちらの記事は自分の備忘録としてまとめた。Stable Diffusion系列のAI画像生成をGoogle colabで使うための設定を自分用にまとめたもので、バージョン変更の都度修正する予定。具体的な導入方法の手順等は割愛しているので、詳細を知りたい方は前記リンクの記事を参照して欲しい。

①Stable Diffusion : txt2img

# ①Stable Diffusionパッケージをインストール
!pip install diffusers==0.3.0 transformers scipy ftfy

# ②Hugging Faceへのアクセストークンをトークン変数に格納
MyTOKEN="<HugginFace HubのサイトでコピーしたAccess Tokenをここに入れる>"

# ③StableDiffusionパイプラインを準備する
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4", 
    use_auth_token=MyTOKEN
).to("cuda")

# ④プロンプトを与えて画像を生成する
ffrom torch import autocast

prompt = "japanese girl"
with autocast("cuda"):
    images = pipe(prompt, guidance_scale=7.5).images
images[0].save("output.png")

上記のモデル名を変更するだけで、WaifuやTrinartなどStable Diffusion以外のモデルが使える。

ブロック③の変更箇所のみを以下に記載する

その他多数あるモデルの紹介記事。いずれも同様に使える。

programmingforever.hatenablog.com

# モデル:Stable Diffusion 1.4を使用する場合

pipe = StableDiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",                   # 変更箇所はこの行のみ
    use_auth_token=MyTOKEN
).to("cuda")

# モデル:Waifu Diffusion を使用する場合

pipe = StableDiffusionPipeline.from_pretrained(
    "hakurei/waifu-diffusion",                        # 変更箇所はこの行のみ
    use_auth_token=MyTOKEN
).to("cuda")

# モデル:Trinart Diffusion V2 を使用する場合

pipe = StableDiffusionPipeline.from_pretrained(
    "ayan4m1/trinart_diffusers_v2”",                   # 変更箇所はこの行のみ
    use_auth_token=MyTOKEN
).to("cuda")

②Stable Diffusion : img2img

# ①Stable Diffusionパッケージをインストール
# img2img対応したバージョンをインストールするためにGitHubのリポジトリを指定
!pip install transformers scipy ftfy
!pip install git+https://github.com/huggingface/diffusers.git

# ②Hugging Faceへのアクセストークンをトークン変数に格納
MyTOKEN="<HugginFace HubのサイトでコピーしたAccess Tokenをここに入れる>"

# ③StableDiffusionパイプラインを準備する
import torch
from diffusers import StableDiffusionImg2ImgPipeline

pipe = StableDiffusionImg2ImgPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    revision="fp16", 
    torch_dtype=torch.float16,
    use_auth_token=MyTOKEN
).to("cuda")

# ④画像を与えて画像を生成する
from PIL import Image
from torch import autocast

# 与える画像は512x512サイズ限定
prompt = "Kitten surrounded by flowers in a poster style garden with mountains in the distance"
init_image = Image.open("<アップロードしたファイル名をここに入れる>").convert("RGB")
init_image = init_image.resize((512, 512))    # 512x512にリサイズ
with autocast("cuda"):
    images = pipe(
        prompt=prompt,
        init_image=init_image,
        strength=0.85
        )["sample"]

images[0].save("output.png")

③Waifu Diffusion : txt2img

# ①Stable Diffusionパッケージをインストール
!pip install diffusers==0.3.0 transformers scipy ftfy

# ②StableDiffusionパイプラインの準備
import torch
from torch import autocast
from diffusers import StableDiffusionPipeline, DDIMScheduler

pipe = StableDiffusionPipeline.from_pretrained(
    "hakurei/waifu-diffusion",               # ここでwaifu-diffusionを指定
    torch_dtype=torch.float16,
    revision="fp16",
    scheduler=DDIMScheduler(
        beta_start=0.00085,
        beta_end=0.012,
        beta_schedule="scaled_linear",
        clip_sample=False,
        set_alpha_to_one=False,
    ),
).to("cuda")

# ③プロンプトから画像を生成する
prompt = "cute cat ear maid"
with autocast("cuda"):
    images = pipe(prompt, guidance_scale=7.5).images  
images[0].save("output.png")

④Trinart : txt2img

# ①Googleドライブのマウントと作業フォルダへの移動
from google.colab import drive
drive.mount('/content/drive')
%cd '/content/drive/My Drive/work'

# ②パッケージのインストール
!pip install -e git+https://github.com/CompVis/taming-transformers.git@master#egg=taming-transformers
!pip install pytorch_lightning tensorboard==2.8 omegaconf einops taming-transformers==0.0.1 clip transformers kornia test-tube
!pip install diffusers invisible-watermark

# ③StableDiffusionのインストール
!git clone https://github.com/CompVis/stable-diffusion.git
%cd stable-diffusion
!pip install -e .
%mkdir outputs

# ④Trinartのチェックポイントのダウンロード
!git lfs install
!git clone https://huggingface.co/naclbit/trinart_stable_diffusion_v2

# ⑤テキストからの画像生成
!python scripts/txt2img.py \
    --plms \
    --ckpt ./trinart_stable_diffusion_v2/trinart2_step115000.ckpt \
    --skip_grid \
    --n_samples 1  \
    --n_iter 1 \
    --outdir outputs \
    --ddim_steps 100 \
    --prompt "cute cat ear maid"

情報元

Pythonコードは下記リンクを参照した。

note.com

ysko909.github.io

note.com

⑤Stable Diffusion + Textual Inversion

解説記事

note.com

⑥Waifu Diffusion + Textual inversion

解説記事

birdmanikioishota.blog.fc2.com

⑦Stable DiffusionでNSFW回避

解説記事

fls.hatenablog.com

⑧Waifu DiffusionでNSFW回避

解説記事

qiita.com

【簡単・無料】Google colabでStable Diffusion / Waifu Diffusionを使う方法

Google colabで生成

Google colabというクラウドサービスでAI画像生成

MidJourneyなどAI画像生成を使うにはwebサービスを使うのが一般的だ。それに対してStable Diffusion は研究成果一式をオープンにして誰でも自由にローカルPCあるいはクラウド上で画像生成が行える様にした。これを受けて爆発的に世界中で研究や開発が加速している。

但しローカル環境で画像生成する場合はそれなりのGPUとメモリを積んだPCで無ければ実行は難しい。2022年現在で理想的なPCを構築しようとするとかなりの投資が必要になるだろう。

その解決策の一つとして、ローカルPCではなくクラウド上で同様に実行できる「Google colab (Colabratory)」というGoogleの提供サービスを利用する方法がある。基本無料で使えるし、利用の都度ノートブックと称する開発環境を新たに作って使い、終われば破棄する利用方法なので、設定を間違えたらどうしよう、動かなくなったらどうしよう、という不安からも解放される。

本記事はGoogle colabにStable Diffusionをインストールして使う手順を一式解説する。作業量はわずかで画像生成できるまで20分程度で完了する。必要なPythonのプログラムコードが全く分からなくてもコピペすれば大丈夫なので気軽にトライ出来る。

txt2imgに加えてimg2img、Waifu Diffusionの実行方法も記載

今回の記事は長文になってしまったが、最初に標準のStable Diffusionを用いたプロンプトからの画像生成方法をまとめた。次に元画像+プロンプトで生成するimg2imgの画像生成、3番目には二次元生成で話題のWaifu Diffusionの画像生成の手順を示した。2番目以降は1とほぼ同じ手順なので、いずれも簡単に試せるだろう。

Google colabとは

Google colabは、Google社が機械学習の教育や研究用で提供する、インストール不要でPython機械学習・深層学習の環境をすぐに構築出来る無料のサービス。CPU及びGPU(1回12時間)の環境が利用可能。基本的に無料で使えるが、高速なGPUが使える有料サービスもある。

【実例1】txt2img:プロンプトから生成

それでは最初に、プロンプトからAI画像を生成するAI画像生成環境を構築する手順を一式解説する。Stable Diffusionを用いる場合の標準的な利用方法で、MidJourneyやDreamStudioの様なwebサービスを自分の手で構築できる。

導入ステップ①:Googleアカウント準備

Googleのアカウントがあればスキップ。

  1. Googleアカウントを用意する。無い場合は新規アカウント作成。
  2. Googleアカウントが用意できたらGoogle ColabのURLにアクセス

colab.research.google.com

下の様な画面が表示されたらOK。すでにPythonなどの環境が揃っている。

Google Colabの初期画面

このサイトで新規ノートブックを作って作業を行っていく。

導入ステップ②:Hugging Faceアカウント登録

Stable Diffusionを利用するにはHugging Faceのアカウントを取得し、アクセストークンを発行する。Hugging Faceのアカウントがあればスキップ。

1.Hugging FaceのURLにアクセス

huggingface.co

2.画面のsing upをクリック

Hugging Faceの初期画面

3.入力したeメールに届いた承認リンクをクリックし、ユーザー名などの情報を入力。ユーザー名はユニークなので先に使われている場合は使えない。全て完了すると完了画面が表示される。

アカウント登録完了画面

導入ステップ③:Hugging Faceのトークン発行

  1. 画面右上の黄色い丸をクリック
  2. 出てきたリストの中のSettingsをクリック
  3. さらにリストの中のAccess Tokenをクリックすると下記の画面が出るので「New Token」をクリック

ACCESS TOKENの画面

4.出てきた下の画面でトークンの名前(適当でOK)、「read」を選択した上で「Generate Token」をクリック

TOKENの設定

5.出てきた下の画面の右側にある四角いアイコンをクリックするとトークンがコピーされる

トークン作成完了、コピー

どこかメモにコピーしてもよいし、いつでもコピーは行える。

導入ステップ④:Google colabのGPU設定

  1. Google colabのURLにアクセス

colab.research.google.com

2.初期画面に出てくる「ノートブックを新規作成」をクリック(あるいはメニューで選択)

3.メニューの「編集」ー「設定」をクリック

4.出てきた設定画面でハードウェアアクセラレータを「GPU」に変更

これから使うnotebookは、Stable Diffusion実行時にGPUを使うためハードウェアアクセラレータを「GPU」に設定する。設定後「保存」を押すと、これ以降はGPUが使える。無料のフリープランで十分実行出来るが、過負荷などで実行割り当てしてもらえない場合は、有料プランのColab Pro(月額1,000円程度)の選択を考えてもよい。

これでColabの初期設定は完了。

導入ステップ⑤:txt2imgのStable Diffusionの設定を書く

続いてStable Diffusionを使うべく、4つのPythonプログラムを書いて実行する。とは言ってもプログラムの中身が分からなくてもコピペで実行できる。

4つのPythonプログラム

以下を書いて順に実行することでAI画像生成が行える。

  1. ①Stable Diffusionパッケージをインストール
  2. ②Hugging Faceへのアクセストークンをトークン変数に格納
  3. ③StableDiffusionパイプラインを準備する
  4. ④プロンプトを与えて画像を生成する

①Stable Diffusionパッケージをインストール

新規ノートの入力待ち状態

上の様にGoogle colabでノートブックを新規作成するとカーソル待ち状態にあるので、そこに下記のコードをコピペする。

# ①Stable Diffusionパッケージをインストール
!pip install diffusers==0.3.0 transformers scipy ftfy

左にある矢印ボタンをクリックするとコードを実行するが、とりあえず先に全コードを入力する。

コード入力だが、プログラムの機能(ブロック)毎にコードを分けて入力すると、各ブロック単位で個別に実行が可能になる。今回で言えば④のコードを実行する度にAI画像が生成される訳だが、もし全コードを一つのブロックに入れてしまうと、①や②の部分で時間や負荷がかかる無駄が生じてしまう。これを実行単位の切り分けで回避出来る訳だ。またデバッグにも便利だ。

では2番目となる別のコード入力用ブロックに入力すべく、現在のコードが入った囲みの最下部にマウスを移動すると「+コード」「+テキスト」の表記が現れるので、「+コード」をクリックする。

+CODEが表示された状態

これで新しく生成されたコード入力様ブロックに次のコードを入力出来る様になった。

次のブロックが現れた

②Hugging Faceへのアクセストークンをトークン変数に格納

下のコードをコピペするが、<HugginFace HubのサイトでコピーしたAccess Tokenをここに入れる>>の部位に、導入ステップ③でコピーした、アクセストークンを入れる("hf_******"と書いてあるもの)。注:<>の記号は不要。

# ②Hugging Faceへのアクセストークンをトークン変数に格納
MyTOKEN="<HugginFace HubのサイトでコピーしたAccess Tokenをここに入れる>"

③StableDiffusionパイプラインを準備する

同様に3番めのコードブロックに下記をコピペする。

# ③StableDiffusionパイプラインを準備する
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4", 
    use_auth_token=MyTOKEN
).to("cuda")

④プロンプトを与えて画像を生成する

同じく4番目のコードブロックに下記をコピペする。プロンプトは「japanese girl」、日本の少女にしたが、何でも構わない。

# ④プロンプトを与えて画像を生成する
from torch import autocast

prompt = "japanese girl"
with autocast("cuda"):
    images = pipe(prompt, guidance_scale=7.5).images
images[0].save("output.png")

ここまで入力した状態。

※画面のアクセストークンは例なので自分のアクセストークンを正しく入力のこと

4ブロックを入力

導入ステップ⑥:txt2imgを実行

それでは各ブロックのPythonコードを最初から順に実行しよう。一番上のブロックにマウスを移動させると、そのブロックの左に白い矢印が現れるのでクリック。するとStable Diffusionパッケージのインストールが始まる(10秒程度)。ずらずらと作業を示すコードが現れ、完了したら矢印の左に緑色のチェックマークが入る。

Stable Diffusionパッケージのインストール完了

次に2番目のHugging Taseへのアクセストークンをトークン変数に格納、のブロックに移動した同様に白い矢印をクリック。これはすぐに完了する。

同じ様に3番目のStableDiffusionパイプラインを準備する、をクリックするとかなり時間がかかる(数分)。しばし待とう。

全て準備が整ったので、最後の4番目のプロンプトの白い矢印をクリックすれば15秒程度で画像が生成される。ここからはMidJourneyなどと同じなので、お気に入りの絵ができるまで何度も同じプロンプトを実行させたり、プロンプトも色々変更したりなど試せる。

但し生成の都度、前に作った生成ファイルが消えるので、お気に入りのものはダウンロードが必要。

画像確認

画面の一番左側にあるフォルダアイコンをクリックして、「output.png」をクリックすると生成した画像が見える。

japanese girlのプロンプトで作成

注意点として、作業完了後はGoogle colabで生成したファイルが全て消失するので、気に入った作品はダウンロードを忘れない様に。写真画像の右上にある3本線のアイコンをクリックしてダウンロードを選択。

エラーが出た場合の対策

  • 設定の「GPU」を忘れていないか
  • アクセスキーの間違いや破損。簡単なのでアクセスキーの作り直しがお勧め
  • どこかにエラーがあった際は、最初のコードから全て再実行させること

作例

プロンプト:綾波レイ、宇宙空間
プロンプト:綾波レイ、宇宙空間

【実例2】img2img:画像を基に画像生成させる

手書きで絵の構成などのプロットを与え、そこにプロンプトで指示を加えて生成する、img2imgの手法がある。これも前記したtxt2imgの導入ステップ④から⑥とほぼ同じ手順で実行出来る。

ここでは雑な手書きで、花が咲く庭にいる猫を描いてみた。注意点として画像は512x512ピクセルで作成すること。

手書きの猫 512x512

これを絵の方向付けとして、img2imgでAI画像を生成する事例を示す。

導入ステップ④A:Google colabのGPU設定

  1. Google colabのURLにアクセス

colab.research.google.com

2.ノートブックを新規作成する

3.メニューの「編集」ー「設定」をクリック

4.出てきた設定画面でハードウェアアクセラレータを「GPU」に変更

導入ステップ⑤A:img2imgのStable Diffusionの設定を書く

4つのPythonプログラムのみ記載する。txt2imgと同じ手順で出来る。

①Stable Diffusionパッケージをインストール

# ①Stable Diffusionパッケージをインストール
# img2img対応したバージョンをインストールするためにGitHubのリポジトリを指定
!pip install transformers scipy ftfy
!pip install git+https://github.com/huggingface/diffusers.git

②Hugging Faceへのアクセストークンをトークン変数に格納

# ②Hugging Faceへのアクセストークンをトークン変数に格納
MyTOKEN="<HugginFace HubのサイトでコピーしたAccess Tokenをここに入れる>"

③StableDiffusionパイプラインを準備する

import torch
from diffusers import StableDiffusionImg2ImgPipeline

# ③StableDiffusionパイプラインを準備する
pipe = StableDiffusionImg2ImgPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    revision="fp16", 
    torch_dtype=torch.float16,
    use_auth_token=MyTOKEN
).to("cuda")

④プロンプトを与えて画像を生成する

※プロンプトは元画像を参照して生成する際に与えたい情報を記載する

※元画像のファイル名は大文字小文字の違いを認識するので注意

from PIL import Image
from torch import autocast

# ④画像を与えて画像を生成する
# 与える画像は512x512サイズ限定
prompt = "Kitten surrounded by flowers in a poster style garden with mountains in the distance"
init_image = Image.open("<アップロードしたファイル名をここに入れる>").convert("RGB")
init_image = init_image.resize((512, 512))    # 512x512にリサイズ
with autocast("cuda"):
    images = pipe(
        prompt=prompt,
        init_image=init_image,
        strength=0.85
        )["sample"]

images[0].save("output.png")

導入ステップ⑥A:img2imgを実行

今回は元の画像を参照するので、512x512の画像をあらかじめアップロードしておく。アップロード方法は、Colabの左側にあるフォルダアイコンをクリックしてファイル一覧を表示してから、アップロードしたいファイルをColabのファイル一覧へドラッグ&ドロップすればよい(表示されない場合はファイルの一覧表示を更新)。

準備が整ったら、前記同様に4ブロックのPythonコードを順に実行して、生成されたoutput.pngが確認出来ればOK。

AI画像生成された

エラーの対策

  • 設定の「GPU」指定を忘れていないか
  • uploadするファイル名を間違えていないか
  • 512x512の画像か
  • アクセスキーの間違いや破損。簡単なのでアクセスキーの作り直しがお勧め
  • どこかにエラーがあった際は、最初のコードから全て再実行させること

元の絵と見比べてみる

左の手書きの絵から生成された画像(右)

雑な絵が生まれ変わった。

【実例3】Waifu Diffusion,Trinart Diffusionで二次元画像を生成

これらは利用するモデルを切り替えるだけので、1のコードに対してモデル名を変更すると、WaifuやTrinartなど標準のStable Diffusion以外のモデルが使える。

ブロック③の変更箇所のみ記載(実例1のコードに対して1行の変更だけでOK)

# モデル:Stable Diffusion 1.4を使用する場合

pipe = StableDiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",                   # 変更箇所はこの行のみ
    use_auth_token=MyTOKEN
).to("cuda")

# モデル:Waifu Diffusion を使用する場合

pipe = StableDiffusionPipeline.from_pretrained(
    "hakurei/waifu-diffusion",                        # 変更箇所はこの行のみ
    use_auth_token=MyTOKEN
).to("cuda")

# モデル:Trinart Diffusion V2 を使用する場合

pipe = StableDiffusionPipeline.from_pretrained(
    "ayan4m1/trinart_diffusers_v2”",                   # 変更箇所はこの行のみ
    use_auth_token=MyTOKEN
).to("cuda")

Waifu Diffusionの生成

うーん、ヤバい。生成されるレベルが高く、ハズレが出ないw。

Waifu Diffusionの生成

※その他多数あるモデルの紹介記事。いずれも同様に使える。

programmingforever.hatenablog.com

APIリファレンス

「StableDiffusionパイプライン」のpipeのパラメータ紹介

  • prompt (str or List[str]) : プロンプト
  • height (int, optional, defaults to 512) : 生成する画像の高さ
  • width (int, optional, defaults to 512) : 生成する画像の幅
  • num_inference_steps (int, optional, defaults to 50) : ノイズ除去のステップ数
  • guidance_scale (float, optional, defaults to 7.5) : プロンプトに従う度合い (7〜11程度)
  • eta (float, optional, defaults to 0.0) : eta (eta=0.0 は決定論的サンプリング)
  • generator (torch.Generator, optional) : 乱数ジェネレータ
  • latents (torch.FloatTensor, optional) : 事前に生成されたノイジーな潜在変数
  • output_type (str, optional, defaults to "pil") : 出力種別
  • return_dict (bool, optional, defaults to True) : tupleの代わりにStableDiffusionPipelineOutputを返すかどうか
  • 戻り値 : tuple or StableDiffusionPipelineOutput

StableDiffusionPipelineOutputのプロパティ

  • images (List[PIL.Image.Image] or np.ndarray) : 長さbatch_sizeのPIL画像のリスト または shape(batch_size,height,width,num_channels)のnumpy配列。
  • nsfw_content_detected (List[bool]) : 生成画像がNSFW(not-safe-for-work)かどうかのリスト。

参考記事

今回の記事は、以下の先行開拓された方々の記事を参考に、未経験者向けにまとめた。

note.com

ysko909.github.io

web版画像作成ツールとStable Diffusionの連携

AI画像生成がどんどん広がる

PhotoshopやクリスタなどのアプリにStable Diffusionが組み込める記事を前に書いた。

programmingforever.hatenablog.com

今やweb版で提供されている画像作成ツールにも組み込みが始まっており、一例としてcanvaの紹介と利用方法を説明する。

web版画像作成サービス:canva

無料で色々と試せる優れたweb版の画像生成ツールである canva(下記リンク)。日本語対応も充実しており、使い易い。これがStable Diffusionと連携した。

https://www.canva.com/

利用方法

最初に会員登録を行う。すると最新サービスとしてStable DIffusionとの連携の説明画面が現れる。

canva内のStable Diffusionの説明

そこで「新規作成」ー「インスタ用」を選ぶと次の画面が現れる。

canvaの初期作成画面

優れたプロンプト例があるlexicaサイトから適当に拾った下記のプロンプトを入れて、生成スタイルはアヒルの絵の中からDrawを選んで生成させた。

legendary fairy prince casting a lightning spell,, blue energy, highly detailed, d & d, fantasy, highly detailed, digital painting, trending on artstation, concept art, sharp focus, illustration, global illumination, ray tracing, realistic shaded, art by artgerm and greg rutkowski and fuji choko and viktoria gavrilenko and hoang lap

妖精の絵が生成された

後は自由に加工出来る。

加工例

優れたプロンプトを見つける方法

すでに膨大な生成画像とそのプロンプトのリファレンスサイトが存在しており、それをまとめた記事を再掲する。

programmingforever.hatenablog.com