真っ白な館

思い付いたことを書きます。

プログラミングスキルがあまりない人に向けた、Stable Diffusion環境構築における補足

最近話題の画像生成ライブラリ「Stable Diffusion」。前情報ではmidjourneyよりも高精度とのことだけれど、エンジニアじゃない人からすれば、その二つに比べると明らかにとっつきにくい。実行するための環境は自分で用意しなくちゃいけないからだ。
特に面倒くさいのが、画像をベースに画像生成をおこなう(img2img機能を使う)ための環境作りだ。具体的には以下のようなもの。


テキストから画像生成をおこなう(txt2img機能を使う)のは、後述のdiffusersというライブラリが既に出ているので比較的簡単なのだが、img2imgの実行環境を用意するのには1日かかってしまった。自分の知識レベルは

  • Pythonのコードをググりながら書いて実行できる
  • gitの仕組みは知ってるが触ったことはない
  • ___init___.pyとかmain.pyとかsetup.pyとかよく見るけどそれを準備する意味はわかってない

くらいの水準で、各種記事で何をやっているのか理解できなかったからである(特にハマったのがcondaだった。anacondaを入れていなかったので……)。
詰まる度に何度もググってみたりしたが、知識レベルが中途半端な人間向けに懇切丁寧な説明をしてくれる記事は用意されていない。そして、これだけ話題になっていれば、おそらく似たような状況の人が一定数いると想定している。
そのため、この記事では、エンジニアの人が用意してくれた各種記事をベースに、エンジニアでない人がPythonを始めとした各種環境を用意するまでにつまずきそうな部分を、最低限のレベルで解説しておく。

※注意

  • 以下内容は、非エンジニアの人間が環境を用意する過程で理解した内容をメモしたものであり、理解に躓きそうな内容について簡易的な解説をおこなうことを意識しています。そのため、技術的な部分に関する情報の正確性は担保しません。本当に正しい説明を知りたければ別途調べてください。

前置き

  • 本記事でカバーする内容
    • 環境を用意するまでの手順
    • 環境を用意する中で、理解につまづきそうな部分の解説
  • 本記事で想定している読者
    • Windowsユーザー
    • ローカル環境にStable Diffusionを用意しておきたい
    • Stable Diffusionをベースに色々改造していじくってみたい
    • サンプルコードがあればそれをベースにコマンド書き換えて実行するくらいはできる
    • readmeを読んだけどよくわかんないッピ……
  • 本記事で想定していないこと
    • 自分のパソコンにNVIDIAのグラフィックボードが搭載されていない
      • その人はローカル環境に用意するのは多分無理です。以下記事の方法で妥協してください
    • Pythonの書き方がわからない人にPythonの使い方を説明する
    • readmeを読んでない(読んだけどわからない人を想定している)

環境を構築する前におぼえておいてほしいこと

早速他の人の記事を参照してしまって申し訳ないのだが、Stable Diffusionの環境構築に関する記事は以下2つが見つかると思う。

①togetterまとめ

togetter.com

②zenn.devにあがったkiyoarai_さんの記事

zenn.dev
ここでまず自分は躓いたのだが、自分が把握した範囲では、StableDiffusionをローカル環境で実行するための方法は2つあり、上記記事も別個の方法で環境を用意している(koyoarai_さんの記事のコメント欄に記載あり)。

  • Pythonのdiffusersというライブラリを使う
    • togetterに書いている方法はこちらに該当。
    • こちらはおそらくテキストから画像生成をおこなうことしかできない。
      • ただし、どこぞの増田に貼られていたNSFW制限を取っ払うことができる。
  • ②Stable Diffusionのリポジトリをローカルに落として使う
    • koyoarai_さんの記事はこちら。
    • サンプル画像をベースに画像生成をおこなうことができる。
    • 2022/08/25 8:40時点で、自分はNSFW制限を取っ払う方法を見つけられてない

どちらが楽かは結構難しいところだけれど、環境を用意した段階でいえば、コード一行でサクッとできるのは②の方かと思われる(①はあくまでライブラリなので、最終的には実行ファイル(.pyファイル)を自前なりサンプルコード書き換えるなりで用意するのが得策)。

実際に環境構築に入る際の注意点

基本的には上記①と②の記事に従えばいいが、おそらく普段からプログラミングになれてない人は以下の辺りで躓きそうなので、注意した方がいい。

  • もしgitをインストールしていなかったらgitをインストール
    • 途中でgitというコマンドが出てくるため。gitをインストールしていなかったらここで躓く。

git-scm.com

  • PythonをPCに入れていない場合は、Python公式ではなくAnaconda経由でのPythonインストール推奨
    • Stable Diffusionのサンプルコードにcondaというコマンドが多く出てくるので、anacondaをインストールしていないとそこで躓く。
      • (2022/9/1追記)anacondaを入れた後は、コマンドプロンプトではなくAnaconda promptを使うこと。conda activateの意味がわかるなら必須ではないです。意味がわからないならおまじないとして従ってください。
    • 方法は以下に従う
    • www.python.jp
  • 環境変数とかパスとかで引っかかるかも
    • 詳細は省くが、以下記事に書いてる方法で環境変数を確認すればOK、と覚えておくといい。

proengineer.internous.co.jp
また、各記事に記載の作業をおこなう場合は、以下に注意しておくこと。

  • togetter記事でのPythonインストールは公式ではなくAnacondaにしておく
  • 各コードの実行は、コマンドプロンプトではなくAnaconda Promptからおこなう
  • 画像から画像を生成するのは、上記②に記載のtxt2img.pyに関するサンプルコードを、readmeにあるimg2img.pyのサンプルコードに丸っと置き換えればOK。

その他

余談

(以下のエピソードは、他の人が自分と似たやらかしをやらないよう、他山の石にしてもらう意味を込めて明かすものです)

画像生成、二次元イラストはやっぱり全然安定しない。色々なキーワードで試してるんだけど、体感では100枚試して1枚まともなものがあれば御の字、くらいの感覚。テキストからの生成もそうだし、画像についても友人が描いたイラストで試しにやってみても全然まともなもの生成できなかった。
というわけでその顛末を「AIもまだまだですわ」っていう笑い話のつもりで友人に見せたところ、「作者に無許可でそれやるの結構シャブいのでぜったい公の場ではやらないでおいてくださいね」と窘められる事件がありました。冷静に考えると、自分が描いたイラストを元にAIで画像生成をされるの、イラスト描いてる人からしていい気分にはならんのは当たり前なのである。
言い訳としては色々あるのだが(「一日中環境構築を試行錯誤していて思考力が低下していたかもしれない」「構築に成功した興奮で色々試したくなった」)、一番大きいのは「ワンポチで似た画風の画像が生成できてしまうので、『〇〇さんのだとどうなるのか』を試してみたいという欲求に抗えなかった」があったと思う。
たとえば、以下は'portrait of girl by Klimt -gold'で画像生成してみた実例である。こんな感じで、既存作家の画風を真似ることもできてしまう。

portrait of girl by Klimt -gold [-でgold成分除外できないかなと思ったが失敗したらしい]

この例はテキストから画像を生成した例だけど、画像から画像を生成する技術が進むと、既存画像を改変してアレコレするのがイラスト制作者本人だけでなく、イラスト制作者以外の赤の他人が操作することも簡単にできてしまう。
昔の画家とは言えクリムトみたいな有名作家の画風を真似た画像がバンバン作れてしまうというのを目の当たりにすると、既にいる作家さんの画風を真似ることに対する心理的ハードルがどんどん下がってしまうし、実際下がってしまった。AIの進歩によって社会的な問題が発生するかも、とはあちこちで言われている話ですが、まさか自分が真っ先に友人相手にやらかすとは思わなかったので、やらかしたあと結構な衝撃を受けていました。友人からは寛大にも「怒ってはいない」と寛容なコメントをいただいたけれど、苦言を呈される程度にはモヤモヤさせてしまったのは間違いないので、本人にも謝罪済ですがこちらでも改めて謝罪します。申し訳ありませんでした。
というわけで、Stable Diffusionを利用する際は、Google翻訳でもいいから以下記事内のUsesを読むようにしていきましょう。
huggingface.co

Uses

Direct Use

The model is intended for research purposes only. Possible research areas and tasks include

  • Safe deployment of models which have the potential to generate harmful content.
  • Probing and understanding the limitations and biases of generative models.
  • Generation of artworks and use in design and other artistic processes.
  • Applications in educational or creative tools.
  • Research on generative models.
  • Excluded uses are described below.

Misuse, Malicious Use, and Out-of-Scope Use

Note: This section is taken from the DALLE-MINI model card, but applies in the same way to Stable Diffusion v1.

The model should not be used to intentionally create or disseminate images that create hostile or alienating environments for people. This includes generating images that people would foreseeably find disturbing, distressing, or offensive; or content that propagates historical or current stereotypes.

Out-of-Scope Use

The model was not trained to be factual or true representations of people or events, and therefore using the model to generate such content is out-of-scope for the abilities of this model.

Misuse and Malicious Use

Using the model to generate content that is cruel to individuals is a misuse of this model. This includes, but is not limited to:

  • Generating demeaning, dehumanizing, or otherwise harmful representations of people or their environments, cultures, religions, etc.
  • Intentionally promoting or propagating discriminatory content or harmful stereotypes.
  • Impersonating individuals without their consent.
  • Sexual content without consent of the people who might see it.
  • Mis- and disinformation
  • Representations of egregious violence and gore
  • Sharing of copyrighted or licensed material in violation of its terms of use.
  • Sharing content that is an alteration of copyrighted or licensed material in violation of its terms of use