Google ColabでAI画像生成する準備手順(PC用)

その他

Google ColabにStable DiffusionをインストールしてAI画像を作成する準備について順に書いていきます。

作業にはパソコンを使いますが、手順はやや複雑です。

 

タム
タム

お手軽にAI画像を作りたいならPixAI.Artでもできるよ

それでは見ていきましょう

手順

この手順はPCで操作を行っています
大まかな手順
1.グーグルアカウントを用意する
2.Colab proを契約する(月額1000円ちょい)
3.Google driveにモデルとVAEを入れる
4.ColabとGoogle driveを接続する
5.stable diffusionを立ち上げる
AI画像を生成するだけなら上記のいくつかは省略できますが現実的な利用は難しいです

Googleアカウントの用意

アカウントをお持ちでない方はGoogleで作ってください

Google Colabへ

Google Colabへアクセスします
Colab proの契約をします(無料版では1回程度画像生成したら何もできなくなります)
最下段「Colabの有料サービス」をクリックし、proプランを契約します

Colabにコード入力

ファイル」から「ノートブックを新規作成

ノートブック名(.ipynbより前)を好きな名前に変更し、「ランタイム」から「ランタイムのタイプを変更」をクリック

 

赤枠の「A100 GPU」「V100 GPU」「T4 GPU」の中からどれか1つ選択してください

 

ここで、モデルとVAEの準備をします(一度行ったら次からは飛ばせます)

簡単に言えばモデルは絵のテンプレ(画風)で、VAEは生成された絵を微調整するモノです(モデルとVAEの設定がなくても画像の出力はできます)

例えばモデルに「yayoi_mix」VAEに「vae-ft-mse-840000-ema-pruned」を使用したい場合(当ページのアイキャッチ画像はこのモデルとVAEの組み合わせで作っています)

それぞれリンク先からダウンロードできます

ダウンロードしたファイルをGoogle Driveにアップします

まずGoogle driveにアクセス(赤枠部分をクリック)

 

マイドライブ」を選択し、画面中央付近で右クリック→「新しいフォルダ」を選択し、「stable-diffusion-webui」と名前をつけます

 

stable-diffusion-webuiフォルダをダブルクリックし、中に更に「outputs」と「models」フォルダを作ります

 

modelsフォルダの中に「Stable-diffusion」フォルダと「VAE」フォルダを作ります

ダウンロードしたモデルはStable-diffusionフォルダにVAEはVAEフォルダの中に入れてください(ドラッグアンドドロップでOK)

 

ここからコードを入力してGoogle driveへの接続、そしてStable-diffusion(automatic1111)を立ち上げます

Stable-diffusionは画像生成AIの名前で、automatic1111はStable-diffusionをブラウザで利用するためのWebアプリケーションです

作成したノートブックのコード欄にまず次のコードをコピペし、Shift+Enterで実行してください

!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /content/stable-diffusion-webuifrom google.colab import drive
drive.mount('/content/drive')!mv /content/stable-diffusion-webui/models/Stable-diffusion /content/stable-diffusion-webui/models/Stable-diffusion.bkup
!mv /content/stable-diffusion-webui/models/VAE /content/stable-diffusion-webui/models/VAE.bkup!ln -s /content/drive/MyDrive/stable-diffusion-webui/outputs /content/stable-diffusion-webui/outputs
!ln -s /content/drive/MyDrive/stable-diffusion-webui/models/Stable-diffusion /content/stable-diffusion-webui/models/Stable-diffusion
!ln -s /content/drive/MyDrive/stable-diffusion-webui/models/VAE /content/stable-diffusion-webui/models/VAE
しばらくすると「このノートブックに Google ドライブのファイルへのアクセスを許可しますか?」と出てくるのでクリックしていってGoogle driveに接続します
最後にstable diffusionの立ち上げです
以下のコードを実行してください
%cd /content/stable-diffusion-webui
!python launch.py --share --enable-insecure-extension-access
実行し終わるまでに数分かかります
全て出力が終わったら下の方にあるリンクをクリックします
こういう感じのです
これでStable Diffusionが立ち上がりました
ここでVAEの設定をしておきましょう
まずSettingsタブをクリックし、左側Stable Diffusion内の「VAE」をクリック
SD VAEの欄で準備したVAEを選択し、「Apply settings」をクリックして設定完了してください
この操作はStable Diffusionを立ち上げる度に必要なようです
では一度試しに画像生成してみましょう!
txt2imgタブに戻って、シンプルに条件指定してみました
「20 years old girl」これだけプロンプト欄に入力して、Generateを押します
ほら、きちんと生成されました
実際はもっと細かく条件指定して画像生成することになります
Stable Diffusionをしばらく使わないときはGoogle Colabの「ランタイム」から「ランタイムを接続解除して削除」をしておきましょう

Stable Diffusion設定画面 各項目の意味

txt2imgタブ内

1.Sampling method

ノイズ除去アルゴリズムの選択。モデルによっては推奨のSampling methodがある

2.Sampling steps

ノイズ除去の処理を実行する回数。デフォルトは20

3.Hires fix

高解像度の画像の生成

4.Refiner

Checkpoint項目で指定したモデルと元のモデルを合成し、画風を変える

5.Width,Height

生成する画像の横、縦のサイズ

6.Batch count

画像を生成する回数

7.Batch size

1回に生成する画像の枚数

Batch count×Batch sizeで画像の総数が決まります

8.CFG Scale

どれだけプロンプト通りに画像生成するかの数値。大きいほどプロンプトの通りに作られる。デフォルトは7

9.Seed

生成した画像にランダムに振り分けられる数値(Seedを-1で画像生成する場合)

サイクルボタンで数値を固定すると、同じSeed値(同じ人物)で別画像を作ることが出きる

10.Script

比較画像の作成用

 

img2img inpaint内

1.Resize mode

画像のサイズの変更についてどのような処理が行われるか。元画像と生成画像でサイズが異なる前提で書きます

Just resize

縦横比が変わる

Crop and resize

縦横比は変えずに、元画像の一部をトリミングする

Resize and fill

縦横比は変えずに、新たにできた空白部分に作画を加える

Just resize(latent upscale)

Just resize同様縦横比が変わる。画像生成の際のUpscalerが異なる(高解像度処理が行われる)

2.Mask blur

対象とその外部の境界部分をどの程度ぼかすかの指定。値が大きいほどぼやける

3.Mask mode

Inpaint masked

範囲指定した部分に変更を加える

Inpaint not masked

範囲指定した部分以外に変更を加える

4.Masked content

fill

範囲指定した部分の周囲の色を参考に作画される

original

範囲指定した部分に対して元の画像を参照して作画される

latent noise

範囲指定した部分を一度ノイズに変更して、再度作画を行う

latent nothing

範囲指定した部分の元の色を参照して作画する

5.Inpaint area

Whole picture

画像全体を再生成し、その上で範囲指定した部分に変更が行われる

Only masked

範囲指定した部分に対してのみ変更が行われる

6.Only masked padding,pixels

マスク指定範囲内の余白の大きさ。大きいほど生成範囲が広がるためきれいに仕上がりやすい(Inpaint areaがOnly maskedのときのみ)