[忘備録] N100 搭載 MiniPC や AOKZOE A1などグラボを積んでいないPCにStable Diffusion webUI を導入する方法
2023年7月10日動画つくるレベルでもないかなって思ってたんです。
「そうじゃん。私ブログもってるんだった!」
というわけで。
Stable Diffusion webUIのインストール
「グラボなし Stable Diffusion webUI」で検索したら、きっとヒットすると思いますw
時系列的に紹介していきます。文字ばっかりになると思います。
Stable Diffusion webUIは、画像生成AIをブラウザ(私はGoogle Chrome)のwebページ(オフライン)で行うもの。単独アプリでは無いんですが、サーバーを使わず自己環境で実現できるので、課金とかないです。
だから、その分をアプリ開発者や、機能拡張開発者、モデルデーター製造者に還元してあげることをオススメします。
用意しなければいけないのは、
Git for Windows
「Download」をクリックすると、インストーラーがダウンロードされます。インストーラーを実行してgitをPCにインストールしてください。
インストーラーでは最初に数多くの選択画面が表示されますが、デフォルトのまま「次へ」してしまってOKです。
Python 3.10
Microsoft Storeからのダウンロード&インストールがおすすめです。
ご覧の通り、Pythonにはバージョンがいくつもあり、本家サイト(?)で3.10.6だったかをインストールしてもStable Diffusion web UIのインストール時にエラーが出て先にすすめていませんでした。
追記:先ほどN100搭載MiniPC TRIGKEY Green G4にて導入を試みたところ、エラーが出ました!
日本のPythonサイトにあったPython 3.10.6をインストール。インストーラー起動の際、下のスクショのように、「Add Python 3.10 to PATH」にチェックを入れてインストールする必要があります。
(間違えてほかのバージョンをインストールしていた場合は、設定→アプリ→インストールされているアプリ から、該当するpythonをアンインストールしましょう)
Stable Diffusion webUI
https://github.com/EmpireMediaScience/A1111-Web-UI-Installer
インストールが終わるまで、結構時間がかかります。インターネット接続必須。数ギガのファイルを落としながらインストール作業が進行しますから、回線速度が速くて、PCもACアダプターにつないだ状態で行いましょう。
途中、モデルデータもインストールするか聞いてきます。あんまり「お望み」の画像生成はしてくれないモデルデータですけど、とりあえずは同意して一緒にインストールしましょう。もちろん後で削除できます。
導入の途中にランチャー画面が表示されるようになります。
これのおかげで、テキストエディタで設定指定しなくてもよくなっています。
上のキャプチャ画面のとおりに、チェックいれる項目にはチェックを入れましょう。
□Auto-Update webUI
読んで字のごとく、自動でアップデートするかどうか。アップデートの際に先程導入したgitが活躍するんだと思います。正直、アップデートされた瞬間とか気付いてないんですw
一応チェックいれておいてます。
□Auto-Update Extention
Stable Diffusion webUIでは、数々のExtentionによってより便利に、より高度に画像生成ができるようになっています。Extentionの導入は、Stable Diffusion webUI上から行ったり、手動で該当するフォルダへ該当ファイルをコピーして行ったりします。
そんなExtentionを自動でアップデートするかどうか。
一応チェックいれておいてます。
□Clear all Generations
これの意味するところが分かってませんが、多分、前回のデータを残しておくか否か。初期設定にするか否かだと思います。
ですので、一応チェックははずしておいてます。
次、Launch Options
□Low VRam(medvram)
VRamを節約するのか、機能拡張によってはごっついグラボをご所望されたりするみたいなので、グラボのない、(ゲーミングPCと比較して非力な)私の環境では、ここにチェック入れるのは当然でしょう。
□Enable Xformers
速度アップさせたい場合にチェックいれておくものらしいんですが、グラボがないPCにこれが効果あるのか、または、これをチェック入れて動作させることで落ちたりしないのかが心配で、ここにはチェックを入れないでいます。
Additional Launch Options
–use cpu all –no half
今回はグラボを使わないので、「全部CPUで行く。半分グラボとかないから。」的な意味なんだと思います。これは他の方の実践でこうしてたので、猿真似です。
–skip torch-cuda-test
インストール時にエラーが出て、上記コマンドを試してみてみたいなメッセージが出ていたので、入れて再度インストールしたらうまくいったので、多分GPUの無いPCには必須のおまじないなんだと思います。
はい、こんな感じでプログラミング知識ゼロな私でさえもStable Diffusionで画像生成AI三昧となれるんですw
必要なのは、時間と、空き容量でしょうかw
インストールが終わるとブラウザが起動してStable Diffusion webUIの「ページ(?)」が表示されます。終了時はブラウザのウィンドウを閉じて、A111 WebUI(ターミナルウィンドウ?)を閉じて終了です。
次回起動時はさほど時間がかからなくなってると思います。
『A1111 WebUI (Pin to Taskbar)』ショートカットで起動します。
モデルデータの導入
Stable Diffusionは、モデルデータと呼ばれている公開されている学習データを参照しながら、いろいろ彼なりに考えて1枚の絵(それこそ写真)を描き上げます。
それはStable Diffusion webUIでは「Stable Diffusion Checkpoint」って項目でまず最初に指定すべきものとなっています。
Stable Diffusion webUIインストール時に入れるかどうか聞いてきていたモデルデータも、ここで指定できます。
で、プロンプトに「a girl」とだけ入力して生成させた結果がこちらw
圧倒的に私自身が描く絵画よりも上手いんですが、これで人は惹きつけられるものなのかと問われれば、否ですねw
ということで、オススメのモデルデータを紹介しておきましょうかと。実際に今私が入れているものがよいですよね。多分。
まずはイラスト系
BrainDance
https://civitai.com/models/102753/braindance
「マージ元」が非公開という意味もちょっと分かってないんですが、多分学習元を公開していないんでしょうね。公開する義務はないと私は思っていたんですが、何か法律が絡んでくるのかもしれませんから、そっち方面でも情報収集しておいた方がよいのでしょうね。
ミュージシャンで「子供の頃、母がよく聴いていた〇〇に影響された」とかラジオで語ってたりしていますが、それが「マージ元」でしょうかw
グラビア系
BRAV6 (Beautiful Realstic Asians)
https://civitai.com/models/25494
この記事書いている時点で「6」になりました。
個人的には5がよかったのかも。ってまだ今さっき導入したばかりで、さほど使ってないうちから判断するのはよくないんですが。
ここで多分気付くと思います。CivitAIで表示されている絵。絵の右上にCheckPontだったりして。それをクリックすれば、それがモデルデータであり、ダウンロードして導入すれば、その絵(っぽいの)が描ける事に。一つのモデルデータがどれも数ギガクラスのものなので、ストレージの空き容量が許す限り導入すればよいだけなんだってことに。
モデルデータ(Checkpoint)のコピー先は、A1111 Web UI Autoinstaller\stable-diffusion-webui\models\Stable-diffusion です。私の場合、Stable Diffusionをドキュメントフォルダー内で展開しているので、下の画像のようにパスがなっています。
プロンプトについて
Stable Diffusion webUIに描かせるための「呪文」です。
ただし、英語w
攻略の法則(呪文のこつ)は検索するとほんといろいろアドバイスがあるので、ぼちぼち勉強していけば良いんじゃないかって思います。ただ、非力なPCで回すので、1回の試行錯誤に10分くらい掛かります。これが我慢できないなら、普通にゲーミングPCのことを考えた方がよいと思いましたw
プロンプトには「こういったのをお願い」というのと、「あれダメこれダメ」というのとを指定します。前者がPronptで後者がNegative Pronpt。
プロンプトについては本も出るくらい情報があふれているので、知りたい情報を探し出すのが大変であり、それくらい奥が深いものみたいです。
さっきからもリンクに登場している「CivitAI」もプロンプトのお手本の宝庫です。
プロンプトに「著作権ガー」とかわいてこないうちに、参考にして自分なりの呪文を編み出すのも一興でしょうね。
ユニークなプロンプトの生成方法に、ChatGPTを活用するというのもあります。割と良い仕事をしているみたいでした。
お手本では、プロンプトには「クオリティーの高い、1かわいこちゃん、髪はレッド、目はレッド、バストショット、街中」みたいなのを、英語表記して羅列しています。で、ネガティブには「汚い絵、変な顔、変な指、変な足」みたいなことを英語表記して羅列しています。
一発打ち出して、「ここはもっと強調したいからちゃんと反映させて!」ってことがあったら、Stable Diffusion webUIのプロント内の該当単語をハイライトし(テキストの範囲指定で囲む。あれ?なんていうんでしたっけ?w)、CTRL+↑で数字あがっていきます。↓は数字下がっていきます。そういう感度指定も出来ちゃうのを、つい昨日しりましたw
羅列の順番も優先順位は文頭からになってます。だから指定したのにお互いの意思の疎通がうまくいかずに、期待していたものじゃないことになったりもします。そこはまあ、気長にw
ネガティブプロンプトについて
良い絵を描きたかったらネガティブプロンプトを極めろという書き込みを見たことがあります。
でも何をどう指定したら良いか、正直わかりません。
そんな横着ものな私にはEasyNegativeというものがありますw
https://huggingface.co/datasets/gsdf/EasyNegative
「Files」をクリックし、「EasyNegative.safetensors」の行の右にあるダウロードアイコンをクリックしてダウンロード。ダウンロードしたものは、A1111 Web UI Autoinstaller\stable-diffusion-webui\embeddings にコピーしてください。
あと、同フォルダ内に、もう一つ入れておくと良さげなものに、「negative_hand Negative Embedding」があります。Stable Diffusionは、どうやら手(指)が苦手らしく、これはその苦手をちょっと克服してくれるみたいです。
https://civitai.com/models/56519/negativehand-negative-embedding
両方とも、embeddingsフォルダへ。
入れ終わったら、Stable Diffusionは再起動した方がよいみたいです。
で、反映させて生成するには、ネガティブプロンプトに「easynegative, negative_hand-neg」と書き添えればOK。
画像サイズについて
生成される画像はデフォルトでは512×512でしたっけ。これで、AOKZOE A1で、おおむね6~8分でした。結構かかりますw
SNSでシェアされるものは、512×768がオススメみたいな書き込みをみかけました。
少しサイズがでかくなるわけですが、生成時間も8~10分になりました。
ですので、ほんと気長に。本来自分で描こうなんて思ったら、1日じゃ終われないクォリティがたったの10分って考えたら楽なもんですw
出来上がった画像の場所
生成された絵はoutputフォルダーの中に、生成方法ごとに、さらに日付ごとに分類されて保存されています。
おっさん、水着だらけだぞ。
もちろん、とんでもない奇形なものも生成されることがありますw
そういうのとかは、消していますw
txt2img
txt2imgはプロンプトに入力された呪文を元に絵を生成します。
では、ここまで導入してどんなのが出るようになったでしょうか。
一応私は、ControllNetとそれに必要な機能拡張、OpenPose Editorも入れ終わって、AOKZOE A1で普通に仕事してくれています。
checkpointはBRAV6。txt2imgで、Pronptは「a girl」のみ。Negative Pronptに「easynegative, negative_hand-neg」。Sampling methodは、速いと聞いているので「DPM++2M SDE Karras」をチョイス。Samplong stepsはデフォルト「20」。Restore facces、Tiling、Hires.fixはノーチェック。Width「512」、Height「768」。Batch countは「1」、Batch sizeは「1」、CFG Scaleは「7」、Seedは「-1」、Extraはノーチェック、ControllNetは使わず、Scriptは「None」。
生成時間は8m17.06sでした。
正直、かわいくないw
やっぱりバージョン5の方が良かったかもw
たしか、「a girl, standing on beach, sunset」とだけ指定したものだったと思います。「beautiful」とか「brown hair」とかも付け足していたかもしれません。
同じ内容そのままで、Checkpointをbraindanceに変更。生成時間は7m55.21sでした。
img2img
img2imgでは、元絵をベースに、プロンプトで指定された呪文と、checkpointで指定されたモデルデータを展開して絵を生成します。
checkpointはBRAV5を、そして元となる絵はこちらを使ってみますw
プロンプトは
a girl, piece sign both hands, smile, brown hair, white polo shirt under pink knit,standing,
ネガティブプロンプトは
easynegative, negative_hand-neg
あとはデフォルトのままでGenerate!
出た結果がこちらw
指www
ネガティブハンドが全然功をなしてないんですねw
まだ「bad fingers」とかネガティブプロンプトに入れておいてた方が成功したかもしれません。
そしてあんまり好みじゃない a girlでしたw
ControlNetにさらにOpenPoseを利用して、ネガティブプロンプトに bad fingers を書き足してGenerate。思い通りにはいかないですね。
YouTube
N100にも導入しましたので、ついでに動画で導入方法を紹介してみました。
導入しだしたのが朝、動画を公開した今、3時です。ちょっとウトウトしましたけれどもw
こういった感じで、自身で試行錯誤しながらAIに絵を描かせていくのも結構楽しいです。
CivitAIで他の方のプロンプトを参考にするのもすごくタメになると思います。
LowRAとかまだまだ学ぶべきところもあったりして、ほんと奥が深いですが、偶然が生み出す産物に一喜一憂して過ごすのも悪くないと思います。
強力なグラボ積んでなきゃ出来ないといわれていたStable Diffusion webUIですが、いろいろ我慢どころがあるにせよ、こうしてAOKEZOE A1でもできますし、N100でもできます。
ぜひ気軽にこのジャンルにも足を突っ込んでみてはいかがでしょうかw
また新しい発見があったら、この記事も更新していけたらいいなと考えています。