このシリーズは生成AI初心者が生成AIを含むいろいろなAIを駆使して、ブログ作成用GPTsを作成するまでを記事にしています。
始まって早々にChatGPTから離れてしまいましたが、画像生成も最近はマネタイズ領域において流行りになっているので今からでも遅くないかも!ということで手を付け(てしまい)ました。
生成AI歴:3か月
お仕事:IT関連企業のインストラクター
保有資格:情報処理安全確保支援士、FP2級、AWS CPEなど
一言:ChatGPTなどの生成AIが登場してすでに2年経っています。
「これから始めるには遅いかな」と思っている皆さん、一緒にがんばりましょう!
(画像はイメージ画像です。ご了承ください。)

シリーズトップはこちら

前回の記事はこちら

Stable Diffusionを使ってみよう
画像生成をしてあわよくばマネタイズしたい、という思いで商用利用できる(※そしてアダルトコンテンツの作成もできる)Stable Diffusionを選択。
Midjourneyのほうが使いやすいらしいですが、アダルトコンテンツの作成ができないのと、有料なので今回は選択肢から除外。
気合を入れてStable Diffusionを動かしてみます。
Stable Diffusionのインストールについて
Stable Diffusionはローカルで動かす、クラウドで動かす、の2択になります。
ローカルで動かす場合にはある程度以上(GPU16GBくらい)が必要です。
クラウドで動かす際にはGoogleCorabを使用する形になりますが、こちらは月額料金がかかってきます。
とりあえずお金をかけたくない気持ちでローカルで動かしてみよう!と10年前のノートPCでチャレンジしてみました
Stable Diffusionを使ってみた
というわけでいろんなサイトを見ながらインストールを進めます。
今回参考にした動画はこちらです。
ローカルPCにStable Diffusionのインストール
めちゃくちゃ時間がかかりましたが何とかインストールが完了。
Pythonやらほかの必要なソフトもインストールしてみます。
結果

動かない

やっぱりPCのスペックが足りないみたいね。

最後がランタイムエラーになり起動しません。
やっぱりちゃんとしたグラボが無いとそもそも動かないようです。
念のためどんなグラボがついているか「dxdiag」を使って確認しましたがこんな感じでした。

VRAM:112MBって…
共有メモリを足しても2GBほどにしかならないので動かないのは当たり前ですね。
どうしても自分のPCでStable Diffusionを動かしたいんだ!
という人はサクッとハイスペックPCを買ってしまいましょう。
私は次で紹介するGoogleCorabを使っていますが、セッションの予期せぬ切断などちょっと面倒なことが多い気がします。
使用の上限もありますしね。

GoogleCorabを契約してみた
というわけでGoogleCorabを契約してクラウド上で動かすことにしました。
これならハイスペックPCが無くてもStable Diffusionを動かせるので初期費用はかかりません。
料金も1ヶ月あたり1200円ほどなのでハイスペックPCを買うことを考えればだいぶオトクです。
Googleアカウントを持っていない方は最近少ないとは思いますが、Googleアカウントがあればサクッと作れます。
GoogleColab自体は無料でも使用できますがStable Diffusionを動かそうとするとエラーになってしまいます。
安いので有償契約してしまいましょう。
詳しくは上に貼ったサイトを見ていただければと思いますが、100コンピューティングユニットを使えるProで十分です。
GoogleDriveを追加してみた
あとはStable Diffusion入れる領域を確保しなければなりません。
Stable Diffusion本体はそんなに容量を食わないのですが、画像を生成するモデルが1つあたり2GBくらいあります。
またControlnetもあると便利なのですが、これも20GBくらいあります。
Controlnetって?
ControlNetは、Stable Diffusionの拡張機能であり、画像生成時に細かな条件を指定することが可能です。これにより、プロンプトだけでは表現しきれないポーズや構図を指定できるため、より精密な画像生成が実現します。
ControlNetの主な機能
- 出力画像の制御: ControlNetを使用すると、生成される画像の色調や構図、特定のスタイルやテクスチャを細かく制御できます。元画像から特徴を抽出し、それに基づいて新しい画像を生成します12。
- 微調整: 生成される画像のディテールや光の当たり方、色彩などを精密に調整することが可能です。特にキャラクターの表情やポーズの微妙な変更が簡単に行えます13。
- 解像度変更: ControlNetでは、高解像度の画像生成も可能です。特定のモデル(例: tile)を使用することで、必要な情報のみを拡大し、画像が破綻しにくくなります12。
ControlNetの導入方法
- Stable Diffusion Web UIを開く: 「Extensions」タブをクリックし、「Install from URL」を選択します。
- URL入力:
https://github.com/Mikubill/sd-webui-controlnet
を入力し、「Install」をクリックします。 - 再起動: インストール後、「Installed」タブでControlNetが表示されていることを確認し、「Apply and restart UI」を選択します24。
ControlNetモデルの種類
ControlNetには複数のモデルがあり、それぞれ異なる機能があります:
- Canny: 画像からエッジを抽出し、新しいスタイルで再生成します。
- OpenPose: 人物のポーズを検出し、そのポーズに基づいて画像を生成します。
- Depth: 画像の奥行き情報を強調して立体感を与えます。
- Scribble: 手書き風の線からリアルな画像を生成します34。
注意点
ControlNetは商用利用時に著作権や使用許諾に注意が必要です。また、導入時には設定ミスや互換性問題によるエラーが発生する可能性がありますので、事前にシステム要件を確認することが重要です13。
というわけで、GoogleColabと同時にGoogleDriveも課金しておきましょう。
こちらも100GBのプラント2TBのプランがありますが、とりあえず100GBで十分です。
fast-stablediffusionを使ってみた
準備が整ったのでGoogleColab上でStable Diffusionを動かしてみます。
こちらはこの動画を参考にさせていただきました。
私はPythonもGoogleColabも初めて使いましたが、動画の手順通りに進んで問題なく起動ができました。
動画で紹介されているfast_stable_diffusion_AUTOMATIC1111.ipynbですが、2024年10月19日あたりから動かなくなってしまいました。
Githubに対処法が載っていましたのでコードの更新が来るまでこれで対処しましょう。
2024年12月20日あたりからまた動かなくなってしまいました。
↓のサイトで有識者が頑張ってくれているので様子を見ながら待ちましょう。
エラーの内容
Traceback (most recent call last):
File “/usr/local/lib/python3.10/dist-packages/transformers/utils/import_utils.py”, line 1146, in _get_module
return importlib.import_module(“.” + module_name, self.__name__)
File “/usr/lib/python3.10/importlib/__init__.py”, line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File “<frozen importlib._bootstrap>”, line 1050, in _gcd_import
File “<frozen importlib._bootstrap>”, line 1027, in _find_and_load
File “<frozen importlib._bootstrap>”, line 1006, in _find_and_load_unlocked
File “<frozen importlib._bootstrap>”, line 688, in _load_unlocked
File “<frozen importlib._bootstrap_external>”, line 883, in exec_module
File “<frozen importlib._bootstrap>”, line 241, in _call_with_frames_removed
File “/usr/local/lib/python3.10/dist-packages/transformers/modeling_utils.py”, line 83, in <module>
from accelerate import __version__ as accelerate_version
File “/usr/local/lib/python3.10/dist-packages/accelerate/__init__.py”, line 7, in <module>
from .accelerator import Accelerator
File “/usr/local/lib/python3.10/dist-packages/accelerate/accelerator.py”, line 33, in <module>
from .tracking import LOGGER_TYPE_TO_CLASS, GeneralTracker, filter_trackers
File “/usr/local/lib/python3.10/dist-packages/accelerate/tracking.py”, line 34, in <module>
import wandb
File “/usr/local/lib/python3.10/dist-packages/wandb/__init__.py”, line 21, in <module>
from wandb import sdk as wandb_sdk
File “/usr/local/lib/python3.10/dist-packages/wandb/sdk/__init__.py”, line 28, in <module>
from .wandb_init import _attach, init
File “/usr/local/lib/python3.10/dist-packages/wandb/sdk/wandb_init.py”, line 39, in <module>
from . import wandb_login, wandb_setup
File “/usr/local/lib/python3.10/dist-packages/wandb/sdk/wandb_login.py”, line 19, in <module>
from .wandb_settings import Settings
File “/usr/local/lib/python3.10/dist-packages/wandb/sdk/wandb_settings.py”, line 25, in <module>
from pydantic import (
ImportError: cannot import name ‘computed_field’ from ‘pydantic’ (/usr/local/lib/python3.10/dist-packages/pydantic/__init__.cpython-310-x86_64-linux-gnu.so)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File “/content/gdrive/MyDrive/sd/stable-diffusion-webui/webui.py”, line 13, in <module>
initialize.imports()
File “/content/gdrive/MyDrive/sd/stable-diffusion-webui/modules/initialize.py”, line 17, in imports
import pytorch_lightning # noqa: F401
File “/usr/local/lib/python3.10/dist-packages/pytorch_lightning/__init__.py”, line 34, in <module>
from pytorch_lightning.callbacks import Callback # noqa: E402
File “/usr/local/lib/python3.10/dist-packages/pytorch_lightning/callbacks/__init__.py”, line 14, in <module>
from pytorch_lightning.callbacks.callback import Callback
File “/usr/local/lib/python3.10/dist-packages/pytorch_lightning/callbacks/callback.py”, line 25, in <module>
from pytorch_lightning.utilities.types import STEP_OUTPUT
File “/usr/local/lib/python3.10/dist-packages/pytorch_lightning/utilities/types.py”, line 28, in <module>
from torchmetrics import Metric
File “/usr/local/lib/python3.10/dist-packages/torchmetrics/__init__.py”, line 14, in <module>
from torchmetrics import functional # noqa: E402
File “/usr/local/lib/python3.10/dist-packages/torchmetrics/functional/__init__.py”, line 77, in <module>
from torchmetrics.functional.text.bleu import bleu_score
File “/usr/local/lib/python3.10/dist-packages/torchmetrics/functional/text/__init__.py”, line 30, in <module>
from torchmetrics.functional.text.bert import bert_score # noqa: F401
File “/usr/local/lib/python3.10/dist-packages/torchmetrics/functional/text/bert.py”, line 24, in <module>
from torchmetrics.functional.text.helper_embedding_metric import (
File “/usr/local/lib/python3.10/dist-packages/torchmetrics/functional/text/helper_embedding_metric.py”, line 26, in <module>
from transformers import AutoModelForMaskedLM, AutoTokenizer, PreTrainedModel, PreTrainedTokenizerBase
File “<frozen importlib._bootstrap>”, line 1075, in _handle_fromlist
File “/usr/local/lib/python3.10/dist-packages/transformers/utils/import_utils.py”, line 1136, in __getattr__
module = self._get_module(self._class_to_module[name])
File “/usr/local/lib/python3.10/dist-packages/transformers/utils/import_utils.py”, line 1148, in _get_module
raise RuntimeError(
RuntimeError: Failed to import transformers.modeling_utils because of the following error (look up to see its traceback):
cannot import name ‘computed_field’ from ‘pydantic’ (/usr/local/lib/python3.10/dist-packages/pydantic/__init__.cpython-310-x86_64-linux-gnu.so)
動きました!2024/12/30追記
Githubのコミュニティの有識者が修正方法の案内をしていました。
Start Stable-Diffusionの前に以下のコードを追加してください。
!pip uninstall wandb -y
!pip install wandb==0.15.12
最初にできた画像

これは元の画像からプロンプトを生成してそのプロンプトで出力した画像です。
Stable Diffusionでの画像生成はプロンプトのほかにモデルの変更やControlnet、VAEやLoraなど複数の要素があるのでとーーーーっても奥が深いです。
皆さんも一緒に画像生成の沼にはまりましょう(笑)
前回の記事はこちら

シリーズトップはこちら

コメント