2023年4月の記事一覧
Stable Diffusion
まぁあっちこっちで大量にブログ記事出てますし今更感もありますが、一応やったことは書き留めておこうの方針。
■ハードウェア
必須:nVidia製 VRAM 12GB以上のグラボ
厳密に言えばもっと低スペックのものでも動きますが、5万弱くらいですしさんざん遊び倒せるのでこのために購入するもアリかと
いまだとあっちこちで書かれてますが GeForce RTX3060 12GB (当方もこれ)が手ごろかと。
なおCPUは早ければ早いほど、メモリは多ければ多いいほどいいと思いますが、当方環境は
CPU:Core i3-4xxx(第4世代)
メモリ:16GB
でもなんとかなってるのでまぁ。
それよりもデスクトップPCを持ってない、あってもメインの1台、ケースが多いと思うので(複数台持ってるようは人はもうやってるでしょう)そこのほうがネックになるかもしれませんね。
可能ならこれ専用のマシンが1台あるほうがベターです。
中古型落ち品でCore5-7xxx以下の型番なら (Windows 11が確実に動かないので)今なら投げ売りしてる気がするのでなんとか準備してください。
■導入
・Python 3.10.6 のインストール https://www.python.org/downloads/release/python-3106/
※3.11が最新ですが、3.10.6でないと動きません。あと言うまでもないですが64bit版です。
インストールは普通にダブルクリックして進めればいいですが以下2点を注意
1.「Add Python 3.10 to PATHにチェック」
Pythonのインストーラの最初の画面では、左下に「Add Python 3.10 to PATH」というチェックボタンがあるのでチェックします。
その後、Install Nowを押してインストールを開始します。
2.パス最大260文字制限の解除
インストールが完了した後で「Disable path length limit」というボタンが見えますので、これを押します。
これを押すと、260文字までのパス長(フォルダ名などの長さ)の制限を解除するためのレジストリ変更処理が行われます。
なぜやるか?というと、Stable Diffusionなどの処理で、長いパス名を実行したりする際に260文字以上になる場合があり、エラーになってしまうことがあるからです。
コマンドプロンプトを起動して「python -V]
を実行してバージョンが表示されればOK
・git のインストール https://gitforwindows.org/
Git公式からWindows 64bit版をインストールします。基本的にデフォルトのままでいいはずですが
「Git bash here」というチェックだけは入れたほうがいい」
という記事もあるのでおこのみで。(Web UIのアップデートが楽になるそうですが未確認)
「git -v」を実行して、Gitのバージョンが表示されればOK
・Stable Diffusion WebUI
元々のStable Diffusionは(ざっくり言うと)pythonのコマンドラインで学習や生成を行うため、非常に面倒です。
それを楽に行うためのWeb UIがリリースされていますので、これを利用します。
わかる方はインストールしたGitでCloneしてもいいですし、
https://github.com/AUTOMATIC1111/stable-diffusion-webui
をZiPダウンロードして展開しても構いません。(sd.webui.zip というダウンロードリンクもあります)
ツールとして有効に使うならアップデートや他のツールインストールなども踏まえてCloneしたほうがいいようですが、ここでは体験することを優先するのでお好きなほうで。
ここではzipファイルを展開したパターンでのインストール説明をします。
展開先は任意のフォルダで大丈夫ですがパスは日本語を含めないほうが無難です。
なお、当方はFドライブに入れてますがアップデートやスクリプト等のgitでのインストールが上手くいくかどうかは不明です。
(のちに一部extensionのインストール時に権限周りでエラーが出たりしたので、使い続ける場合はgitでインストールしたほうがいいのかも)
※注意:当方が実施した順で記載してますが、update.bat -> run.bat の順序のほうが良いかもしれません。
フォルダ内の「run.bat」をダブルクリックして起動します。
自動でインストールが進みますので「続行するには何かキーを押してください」という表示が出るまで待ちましょう
上記インストールが完了後、「update.bat」も実行しておきましょう。
続いて「webui」フォルダの中にある「webui-user.bat」を「編集」します。
「set COMMANDLINE_ARGS=」の行を以下の通り書き換えます。
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--autolaunch --xformers
call webui.bat
※なお、ここに以下に続く設定をすることで低スペックのグラフィックボードでも動くそうですが、試していません。
参考のために記載しておきますが自己責任でお願いします。
【ハイスペックGPU(VRAM12GB以上)】※上記で設定したのはこれ
--autolaunch --xformers
【ロースペックGPU(GTX10xxなど)】
--autolaunch --medvram --xformers
【GTX16xx専用】
--autolaunch --precision full --no-half --medvram --xformers
【VRAM4GBの超ロースペックGPU】
--autolaunch --lowvram --xformers
•autolaunch:
起動時にシステムのデフォルトブラウザで自動的にWebUIを開く。お好みで。
•precision full:
GTX16xxユーザー向け。起動時に画面が真っ黒になるのを防ぐ。
•no half:
GTX16xxユーザー向け。起動時に画面が真っ黒になるのを防ぐ。
•medvram:
生成速度を犠牲にVRAM消費量を節約する。
•lowvram:
medvramよりさらに生成速度を犠牲にしてVRAM消費量を大幅に節約する。
•xformers:
AIイラストの生成速度を高速化する
なお、VRAM6GB程度のGPUならlowvramではなくmedvramでもOKとのことです。(medvramにした方が、lowvramより2倍くらい生成時間が早くなるらしい)
VRAM4GBの場合はlowvramが必須のようです。
precision fullと no-halfに関しては、画面が真っ黒になる等のエラーが表示される場合に設定すると良いとのことです。
モデルデータの導入
AIによる画像生成はモデルデータと呼ばれる学習情報を元に行います。
色々な種類のモデルがありますが、これはもう各自の好みやどういったものを作りたいかということもあるので、最終的には各自で探してみてください。
ここでは、現在のStable Diffusionの前のバージョンのbaseモデルをバージョン2.1用に同じデータセットで調整したものということなので、以下をダウンロードしてセットします。
https://huggingface.co/stabilityai/stable-diffusion-2-1-base/resolve/main/v2-1_512-ema-pruned.ckpt
ダウンロードしたファイルを
【インストールフォルダ】\webui\models\Stable-diffusion
に配置します。
また、以下を取得して同じフォルダに置きます。
※上記の実施の内容については
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#stable-diffusion-20
に説明があります。
これで準備が整ったので、「run.bat」を実行して起動します。
基本的には「prompt」にワードを入れて画像を生成しますが、単純な語句を入れただけだと思ったような画像にはなりません。あと語句は基本的に全て英語で入れます。
もちろん「dog」とか「cat」とか入れればそれらしい画像は生成されますが、細かいシチュエーション、背景、構図などの指定をしたり、逆に表示して欲しくないものは下の段の「negative prompt」に入れることでうまく生成されるようになります。
表示された画像に対して、細かな語句を調整したりすることでより生成したいイメージに合ったものにしていきます。
当サイトはセンシティブなネタは扱いませんが、おそらくニーズとしては現状、圧倒的に「そちら」方面な気はします。まぁこの手のテクノロジーの発展当初としてはある意味健全な気はしています(というかちょっと調べればわかりますが、そらまぁそういう用途に使うよね、としか思わない)
が、少し前のDeepFakeなどのように権利侵害などで問題になるようなケースが今後も出てくるものと思います。
折角の優れたテクノロジーも結局使うのは人間なので、どこまで行っても使う人間のリテラシー次第だなぁと思ったりします。
とりあえずインストールについて書いてみました。
時間があれば次回以降の同人誌の表紙くらいはこれで作ってみようかなぁと思っているのでその辺のことが書ける日が来たらまた。