画像生成AI (IBM Cloud 及び Google Colab、ローカル環境での動かし方)

目次

Stable Diffusion

「Stable Diffusion」は、2022年8月にStability AI社が公開したオープンソースの描画AIであり、文章や画像をもとに画像を描画することができます。描画品質は、実行する環境に依存します。

  • 本資料では、独立GPUを搭載していないパソコンで使うための「CPUオンリー環境」と、独立GPUを用いる「GPUあり環境」の2つについて動かし方を説明しています。

  • IBM Cloud Virtual Serverには仮想GPUがありますが、エラー対策の確認が取れていないので、IBM Cloud Virtual Serverは、CPUのみのスペックとしています。

GPUあり環境 x Web UIあり(GradioによるWebアプリとして公開)の場合 (IBM Cloud Pak for Data , Watson Studio, Google Colab)の例が、手軽です。Google Colab (Google Colaboratory)は、Webブラウザ上で動くPython実行環境で、無料でGPUを使うことができます。
IBMやGoogleのサービスの使用を禁じられている場合は、「Windows環境、Nvidia社製GPUありの場合」や「Mac環境の場合」に取り組んでください。

ジブリ風やFinal Fantasy風など指定することができるあたり、日本のアニメやゲーム系の画像を学習していると考えられます。2019年1月1日に施行された「改正著作権法」では、営利・非営利問わず第三者の著作物をAI学習に使えるようになっていることが影響していると思われます。「改正著作権法」については、お近くの弁護士にご相談するとよろしいでしょう。

独立GPUなし、Intel製CPUオンリー環境向けは、Ubuntu + Docker 環境が必要であるため、サーバー構築になれている上級者向けです。

プロンプト (Text to Image)

画像生成AIである、Stable Diffusion では、prompt(プロンプト)と呼ばれる、文章(文字列)を入力することで、画像を生成します。

日本ではこれを「呪文」と言うことがあります。たとえば、「Portrait of a Girl, Anime Character , pixiv , finalfantasy , cinematic lighting , high quality」のようなものです。プロンプトについて調べると、様々な情報が出てきますので、実際に試してみることをお勧めします。

https://strikingloo.github.io/stable-diffusion-vs-dalle-2

https://mpost.io/best-100-stable-diffusion-prompts-the-most-beautiful-ai-text-to-image-prompts/

https://github.com/joelparkerhenderson/stable-diffusion-image-prompt-gallery

Windows 環境、Nvidia製GPUありの場合:NKMD Stable Diffusion GUI

概要

Windowsパソコンで、Nvidia製GPUを搭載している場合、Python環境など用意しなくても簡単に使える「NKMD Stable Diffusion GUI」が公開されています。

起動手順

次の手順でダウンロードし、起動します。

  1. 下記のURLにアクセスし、「Download Now」をクリックします。
    https://nmkd.itch.io/t2i-gui

  2. 「Download 'NMKD Stable Diffusion GUI - AI Image Generator'」と表示されるので、「No thanks, just take me to the downloads」をクリックします。

  3. 2つ表示される「Download」ボタンのうち上の方の「Download」ボタンをクリックします。Stable Diffusion GUI 1.7.1 (Including model files) 3 GB と表示されいるはずです。3GBあるので、時間があるときにダウンロードしましょう。

  4. 「SD-GUI-1.7.1.7z」のダウンロードを始めます。2022年11月現在は、バージョン1.7.1でしたので、「SD-GUI-1.7.1.7z」がダウンロードになります。
    7z形式のファイルが初めての場合は、「7-Zip」をインストールしましょう。https://forest.watch.impress.co.jp/library/software/7zip/

  5. ダウンロードした「SD-GUI-1.7.1.7z」を解凍します。zipや7z、lzhのように圧縮形式のファイルを開くことを解凍といいます。「SD-GUI-1.7.1」フォルダが生成されます。

  6. 「SD-GUI-1.7.1」フォルダを開きます。

  7. 「StableDiffusionGui.exe」をダブルクリックします。

  8. 「Welcome」画面が表示されます。「OK」を押してWelcome画面を閉じます。

画像生成

「Enter your prompt here」に、画像生成元になる文章を入力します。入力する文章は英語である必要があります。これは、Stable Diffusionが、英語のみに対応しているためです。英語のみなので日本語は使えません。文章を入力後、「Generate」をクリックします。

最初に「Generate」をクリックした場合は、オートエンコーダ「vae-ft-mse-840000-ema-pruned.ckpt」をダウンロードします。1.5GBほどあるので時間がかかります。これは最初のみです。その後画像が生成されます。

画面右下の「<」「>」をクリックすることで、生成された画像を切り替えることができます。「<」の左となりのフォルダアイコンをクリックし、生成された画像をまとめて参照しても良いでしょう。

NMKD Stable Diffusion GUI のマニュアル

https://github.com/n00mkrad/text2image-gui

Mac環境の場合:Diffusion Bee

概要

Macの場合、「Diffusion Bee」というアプリを使用します。

Macは、intel社製CPUを使っている場合と、Macを製造販売するApple社製CPUを使っている場合に分かれます。高性能なGPUを搭載しているのは、Apple社製CPUの場合です。Intel社製CPUを搭載敷いてるMacでは、eGPUと呼ばれる外付けGPUを使いましょう。

eGPUは、Apple社製CPUでは対応していません。公式のサポートにも記載があります。

起動手順

次の手順で、アプリのダウンロードとインストール、起動を行います。

  1. 下記のURLにアクセスし、お使いのMacに合わせた文字列をクリック。インストーラーのダウンロードが開始されます。
    https://diffusionbee.com/download

  2. 例えば、上記URLで、「MacOS - Apple Silicon」をクリックした場合は、2022年11月現在は「DiffusionBee-1.5.1-arm64_MPS_SD1.5_FP16.dmg」がダウンロードとなります。

  3. ダウンロードしたファイルをダブルクリックし、開きます。

  4. 「DiffusionBee」というアプリを、「Applications」フォルダに移動します。

  5. 「Applications」フォルダ内の「DiffusionBee」アプリをダブルクリックし、起動します。

  6. 初回起動時に警告が表示されます。「”DiffusionBee”はインターネットからダウンロードされたアプリケーションです。開いてもよろしいですか?」という画面です。「開く」をクリックします。

  7. 初回起動時にモデルのダウンロードが行われます。モデルは2つあり、それぞれ2.1GB、計4.2GBほどあり、モデルのダウンロードが終われば、使用可能になります。

画像生成

「Enter your prompt here」に生成したい画像の元になる文章を入力し、「Generate」ボタンをクリックすることで、画像が生成されます。

例1. A digital Illustration of the Babel tower, 4k, detailed, trending in artstation, fantasy vivid colors

例2. a girl student studying in a school, perfect pupil, school uniform, positive, book on a desk, beautiful, anime key visual, dramatic lighting, perfect shadow, hyper detailed, digital illustration

Diffsuion Beeのマニュアル

https://github.com/divamgupta/diffusionbee-stable-diffusion-ui/blob/master/DOCUMENTATION.md

独立GPUなし、Intel製CPUオンリー環境向け (IBM Cloud Virtual Server またはPC上の仮想マシン)

CPUオンリーの場合は、最低限必要な環境を満たせば、皆様がお持ちのパソコンで画像生成AIを動かすことができます。

最低限必要な環境

  • ローカル(=パソコン)のスペック

    • 4コア / 8スレッド 以上のIntel製CPU

    • 16GB以上のメモリ

    • SSD

  • 仮想マシンの最低条件

    • 仮想プロセッサ数 4つ

    • メモリ 8GB 割り当て

    • IBM Cloudの仮想GPUについては、エラーが生じるため、2022年9月現在は、仮想GPUなしで使う。

  • ソフトウェア

    • Linux , Windows , MacOS

    • Python 3.8 以上

    • docker Engine

    • docker Compose

動作確認済み仮想マシン

  • IBM Cloud を使用する場合は、仮想GPUなしを使う

    • IBM Cloud Virtual Server for VPC

    • IBM Cloud Virtual Server for Classic

  • ローカルで動かしたい場合

    • Oracle Virtual Box上で作成したUbuntu 20.04の仮想マシン

OpenVINO版 Stable diffusion

セットアップ

Ubuntu 20.04の仮想マシンを用いた場合について説明する。仮想マシンにSSH接続を行い、次のコマンドを実行する。

$ sudo su # apt update # apt upgrade # apt install python3-venv python3-pip git # apt install libgl1-mesa-dev # mkdir work && cd work # python3 -m venv mysdvenv # source mysdvenv/bin/activate # git clone https://github.com/bes-dev/stable_diffusion.openvino.git # cd stable_diffusion.openvino/ # pip install --upgrade pip # pip install -r requirements.txt # pip install streamlit-drawable-canvas

動作確認

次のコマンドを実行する。この時、SSH接続を行っているターミナルアプリは閉じないこと。

# streamlit run demo_web.py

実行結果

You can now view your Streamlit app in your browser. Network URL: http://サーバーのIPアドレス:8501 External URL: http://サーバーのIPアドレス:8501

IBM Cloud や AWSの場合は、仮想マシンに紐づいているセキュリティグループで、ポート:8501 を解放する。

Webブラウザで、External URL にアクセスする。最初はモデルのダウンロードがあるため、10分近く「Running…」のまま表示される。しばらく待つ。下図のように表示される。

「Enter prompt」に、画像として生成した文章を英単語の組み合わせで入力する。

例 : a girl student studying in a school, perfect pupil, school uniform, positive, book on a desk, beautiful, anime key visual, dramatic lighting, perfect shadow, hyper detailed, digital illustration

入力後、画面下の「Generate」ボタンをクリックする。たとえば、GPUなしかつメモリ32GBの仮想マシン(IBM Cloud Virtual Server for Classic)の場合は、推論(inference_steps)をデフォルト値の32回行い、約7~10分で画像を生成する。なお、常に同じ画像が生成されるとは限らないので、気に入った画像が生成されたときは保存しておこう。

「Enter prompt」を別の文言に変更し、再び「Generate」ボタンをクリックすることで、別の画像を生成することもできる。例として次の文章を用いた。イラストコミュニケーションサービスの「pixiv」風の画像になるように、pixiv を含めた。

例 : a girl student studying at a cafe, perfect pupil, school uniform, positive, sunny , book on a table, beautiful, anime key visual, cinematic lighting, perfect shadow, hyper detailed, digital paint, pixiv

生成された画像は次のようになる。常に同じ画像が生成されるとは限らないので、気に入った画像が生成されたときは保存しておこう。

独立GPUなしで、Stable diffusion WebUI (Gradio) を使いたい場合

から公開されている、docker compose 定義ファイルを使用する。

セットアップ

Ubuntu 20.04の仮想マシンを用いた場合について説明する。仮想マシンにSSH接続を行い、次のコマンドを実行する。docker Engineとdocker Composeがインストール済みとする。

実行結果

上記のように表示されたら、Webブラウザで、http://コンテナ実行しているサーバーのIPアドレス:7860 (Windows環境の場合は、http://localhost:7860 )にアクセスする。この状態では、フォアグラウンドであるため、UbuntuではSSH接続しているターミナルを落とすと、Stable diffusion WebUI が使えなくなるので、

Stable diffusion WebUI 環境のバックグラウンド実行

Ctrl + c キーを押して、docker compose --profile auto-cpu up --build から抜け出す。その後、バックグラウンド実行となるように、下記コマンドを実行する。

先ずは、コンテナを停止。

バックグラウンドのオプションをつけて、Stable diffusion WebUI が使えるコンテナを起動。

だいたい3~5分程度待ち、Webブラウザで、http://コンテナ実行しているサーバーのIPアドレス:7860 にアクセスする。Web UI を使えるようになる。「prompt」に単語や文章を入れ、「Generate」で画像を生成することができる。独立GPUなしなので、画像の生成に30-60分かかることもある。やはり、独立GPUを使えた方が早い。

GPUあり環境 x Web UIなし(Notebook上で画像生成)の場合 (IBM Cloud Pak for Data , Watson Studio)

最低限必要な環境

  • Watson Studioを使用します。Watson Studioで、GPUを使いたいので、有料のProfessional プランを使用します。Watson Studio以外の手段としては、Google Colaboratoryを使う手段がよく知られています。

  • Stable Diffusionで使用する学習済みモデルを取得するため、Hugging Faceのアクセストークンが必要です。

Hugging Faceに登録

Hugging Faceのアクセストークンが必要なので、以下の作業を行います。次の手順で進め、Hugging Faceにユーザー登録を行います。

  1. https://huggingface.co/ にアクセスします。画面右上の「Sign Up」をクリックします。

  2. 連絡のつくメールアドレスと任意のパスワードを入力します。

  3. 「Next」をクリックします。

  4. 画面の求めに応じて、ユーザー名やフルネームを入力します。

  5. 「I have read and agree with the Terms of Service and the Code of Conduct」にチェックを入れます。

  6. 「Create Account」をクリックします。

  7. 入力したメールアドレス宛に英語の確認メールが届きますので、メール本文内のURLをクリックし、認証を済ませましょう。

ライセンス同意

利用するモデルのライセンスを確認し、規約に同意するため、次の手順を踏みます。

  1. https://huggingface.co/CompVis/stable-diffusion-v1-4 にアクセスします。

  2. 「I have read the License and agree with its terms」にチェックを入れます。

  3. 「Access repository」をクリックします。

アクセストークンの取得

Hugging Face のユーザー設定画面から、アクセストークンを発行します。

  1. https://huggingface.co/ にアクセスします。

  2. 画面右上のあなたのアバターをクリックし、「Settings」 >> 「Access Tokens」の順にアクセスします。URLを使って一気にアクセスしても良いです。https://huggingface.co/settings/tokens

  3. 「New token」をクリックします。

  4. 「Name」に英数字でアクセストークン名を入れ、「Role」は「read」の値です。「Generate a token」をクリックします。

  5. アクセストークンが作成されます。「Show」をクリックすることで伏字になっている文字列が表示されます。これがアクセストークンです。文字列が表示されたらどこかにメモしておきましょう。後で使います。

Watson Studioで用いるノートブックの作成

Watson Studio の環境構築

IBM Cloud のカタログで、Watson Studioにアクセスし、Professional プランでWatson Studio環境を作成します。ロケーションは、ダラスを使いました。

プロジェクトの作成

Watson Studio環境を作成後、「Launch in IBM Cloud Pack for Data」をクリックします。その後、「プロジェクト +」をクリックし、Watson Studio上で動かすJupyter Notebookを作成する場所「プロジェクト」を作成します。

ノートブックの作成

Watson Studio のプロジェクト管理画面で、「資産」の「新規作成」をクリックします。

「新規資産」画面で、「コード・エディター」の「Jupyter ノートブック・エディター」をクリックします。

「新規 Notebook」画面で、ノートブック名を入力し、「ランタイムの選択」では、GPUありのランタイムを選びます。「作成」をクリックします。

「Work with data your way」などのメッセージが表示された場合は、メッセージを閉じます。

Jupyter ノートブック・エディターが表示されます。これで環境構築は終わります。

Stable Diffusionを実行するためのコードをノートブックに書く

この時点での完成形としては、次のようになれば良いです。すべてのコードを書き、上から順に「▶Run」をクリックします。Jupyterノートブックでは、1つ1つの枠を「セル」といいます。

各箇所(セル)を見ていきましょう。

ライブラリのインストールに関するコードは次のようになっています。実行すると、transformersのバージョンによっては、watson-nlpのライブラリとの依存性に関する警告が出ますが、Stable Diffusionではwatson-nlpは使わないので、無視しても動きます。

Hugging Face で取得したアクセストークンの値をセットします。

Stable Diffusionのパイプラインを準備するコードは下記です。

文章から画像を生成する仕組みについて、記述します。Stable Diffusionでは、promptに、文章を挿入し、画像を生成します。生成した画像は、「image.png」として一時的に保存します。

一時的に保存した「image.png」をノートブック内に表示します。保存といっても、どこかのストレージに保管されるわけではないので、表示された画像上で右クリックして画像を任意の場所に保存しておきましょう。

上から順に「▶Run」をクリックします。特にパイプラインを準備するところで、モデルのダウンロードが行われますので、十数分ほど待つことがあります。

処理中は、In [ *]と表示されます。処理が完了すると、*(アスタリスク)の部分に数字が入りますので、数字が表示されているかどうかを目安にしましょう。

表示された画像の上で右クリックを行い、画像を任意の場所に保存します。

他の画像を生成する場合

「#文章から画像生成」のセルに移動し、セル内の「prompt」の文章を変更します。

たとえば、a girl studying in a school とします。

変更後、「#文章から画像生成」のセルから順に「▶Run」をクリックします。

実行結果として、次のように表示されます。実行結果は毎回異なるので、気に入った画像はこまめに保存することが必要です。

生成された画像は上記のようになりました。よくみると手や腕の位置がおかしいので、画像生成に用いる文章は数回試して調整することが必要です。

画像生成に用いる文章を次のように変更し、某ゲーム風に仕上げてみました。またクリーチャーのようにならないように、人の顔で、鼻があってなど、明確に指示しました。

生成に用いた文章 : a girl studying , human face, nose, japanese anime , pixiv , finalfantasy , cinematic lighting , high quality

人の顔で、鼻があって、のように明確に指示することで、より品質の良い画像が表示されることがわかりました。同じ文章を実行すると、異なる結果になります。

画像生成に用いる単語や文章次第では、職場閲覧注意の警告が出ることがあります。警告が出た場合は文章を変更します。これは国によっては逮捕されたり、何とかハラスメントに該当する可能性のある画像が生成される可能性が高い場合に表示されます。

GPUあり環境 x Web UIあり(GradioによるWebアプリとして公開)の場合 (IBM Cloud Pak for Data , Watson Studio, Google Colab)

最低限必要な環境

前述の「GPUあり環境 x WebUIなしの場合 (IBM Cloud Pak for Data , Watson Studio)」と手順は同じですので、省略します。

Hugging Faceに登録

前述の「GPUあり環境 x WebUIなしの場合 (IBM Cloud Pak for Data , Watson Studio)」と手順は同じですので、省略します。

ライセンス同意

利用するモデルのライセンスを確認し、規約に同意するため、次の手順を踏みます。

  1. にアクセスします。

  2. 「I have read the License and agree with its terms」にチェックを入れます。

  3. 「Access repository」をクリックします。

アクセストークンの取得

前述の「GPUあり環境 x WebUIなしの場合 (IBM Cloud Pak for Data , Watson Studio)」と手順は同じですので、省略します。発行済みのアクセストークンを使いまわしても構いません。

Watson Studioで用いるノートブックの作成

前述の「GPUあり環境 x WebUIなしの場合 (IBM Cloud Pak for Data , Watson Studio)」と手順は同じですので、省略します。

Stable Diffusion Web UI版を実行するためのコードをノートブックに書く

この時点での完成形としては、次のようになれば良いです。すべてのコードを書き、上から順に「▶Run」をクリックします。Jupyterノートブックでは、1つ1つの枠を「セル」といいます。

Watson Studioの場合

Google Colab の場合

Google Colab を使用する場合、ランタイム環境に「GPU」を指定する必要があります。

Notebook概要

ここからは、各箇所(セル)を見ていきましょう。

WebUIが使用可能なStable Diffusionの使用に必要なファイルをGithub (.AUTOMATIC1111/stable-diffusion-webui ) から取得します。

Hugging Face で取得したアクセストークンの値をセットします。また、モデルを取得します。「/home/wsuser/work」は、Watson StudioのNotebookにおける、ユーザが操作するときに使われているディレクトリの様です。

AUTOMATIC1111/stable-diffusion-webui のセットアップでは、ライブラリのインストールには、「!COMMANDLINE_ARGS="--exit" REQS_FILE="requirements.txt" python launch.py」を実行するのですが、2022年10月1日現在、エラーになります。そこで直接各種ライブラリをインストールします。

Web UI ディレクトリに移動し、アップデートをダウンロードします。<< この箇所はなくても問題ありませんでした。(2022年11月、確認)

Web UI として、Gradioを起動します。ログイン画面が求められた際のユーザー名は、meとし、パスワードは、qwerty とします。1~2時間くらいかかります。

しばらくすると、次の様に表示されます。「Running on public URL」に表示されているURLに、別のタブなどでアクセスしましょう。

ログインを求められます。先ほどのユーザー名とパスワードを入力し、ログインします。先ほど、ユーザー名はmeとし、パスワードはqwerty としました。

「Gradio」は、機械学習モデルを使ったPythonアプリを手軽に作れるサービスです。Gradioを使うことで、72時間限定のWebアプリになります。


「Prompt」に、生成したい画像のもとになる文章を入力し、画面右側の「Generate」をクリックします。

例えば、Promptに「Portrait of a Girl, Anime Character , pixiv , finalfantasy , cinematic lighting , high quality」を入力し、「Generate」を実行すると、次ような結果になりました。


生成もとの文章を英語ではなく、日本語を使う場合

日本語に特化した画像生成モデル Japanese Stable Diffusionをノートブックで動かす手順 をご覧ください。