AI画像生成ソフトStable diffusionで画像を生成するUbuntu amd64編

アプリ

皆様こんにちは。今画像生成ソフトStable Duffusionで画像を生成するのが流行っています。生成した画像はどうも商用利用まで可能なフリー素材?らしくゲームソフトに組み込んだり本にして売ったりもできるようです。(要確認自信なし)。すでにこれで作った画像で本も発売されたらしくその可能性は無限大ともいえるのではないでしょうか。

しかしながらすでに活動中のアーティストや作品からデータを集めトレーニングしているらしく無法地帯とも考えられるかもしれません。自分の作品でトレーニングして欲しい人はいないでしょう。そこは少し保留しておいて今回は使い方や実際に生成した画像などを紹介したいと思います。

フィルターがある

このソフトでは倫理的意味や精神的苦痛を感じるような画像を簡単では有りますがフィルタリングしているようで、裸や奇形などの画像はフィルタリングされることも多いようです。

なんにもフィルタをかけないと少し怖い画像もでるようなのでフィルターを外して処理するのはお勧めではありませんが、中には外してしまって生成する人もいるようです。

外し方はぶっちゃけわかりませんが、オープンソースなのでよくソースを読めば可能なようですね。

SWAPファイルの設定

メモリが8Gでも足りないようなのでSSD搭載ならSWAPファイルを設定することでメモリを拡張できます。ハードディスクでは遅いのでお勧めはしません。ubuntuの例ですがすでにスワップファイルがるのでサイズを変更します。


sudo swapoff /swapfile
sudo rm /swapfile 
sudo dd if=/dev/zero of=/swapfile bs=1M count=4000
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show

Stable Dufusionの設定方法

依存パッケージなどをインストールして行きます。


sudo apt-get update
sudo apt-get install -y python3-pip libjpeg-dev libopenblas-dev libopenmpi-dev libomp-dev
sudo -H pip3 install setuptools==58.3.0
sudo -H pip3 install Cython
sudo -H pip3 install gdown
pip install torch
pip install transformers
pip install diffusers

そしてAIのモデルのユーザ登録ですが
https://huggingface.co/join
からユーザー登録を行い
https://huggingface.co/CompVis/stable-diffusion-v1-4
でモデルの使用の利用規約に同意し
https://huggingface.co/settings/tokens
からトークンを発行
トークンをスクリプトに埋め込みます。

依存関係などはコマンドからインストールを実行するだけなので環境構築は比較的非常に容易といえます。YOUR_TOKEN の箇所に取得したトークンを代入してください。promptには生成したい画像のタイトルを入れます。英語で詳細に入力する事がコツです。

その後スクリプトを実行します。コマンドラインからpython Gene.pyのように叩きましょう。スクリプトの内容は以下のとおりです。

Pythonスクリプト(Gene.py)


from torch import autocast
from diffusers import StableDiffusionPipeline
import torch

YOUR_TOKEN = "ooooooooooooooooooooo"


pipe = StableDiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    use_auth_token=YOUR_TOKEN
)

prompt = "Hibiscus in a vase. painted by van gogh"

image = pipe(prompt, guidance_scale=7.5)["sample"][0]

image.save("ok.png")

なおCPUを使うかGPUを使うかは自動判定されますのでCPUしかない環境でも実行可能です。むしろ指定しようとしましたが指定の方法がわからず、エラーが出るため指定を削除する事で対応できました。

処理の実行

処理を実行すると以下のような画面になり処理が進んでいきます。

ftfy or spacy is not installed using BERT BasicTokenizer instead of ftfy.
1it [00:18, 18.43s/it]

トータル時間が00:18秒で1it毎に18秒かかるよという表示です。すべての処理で51itで終わりますから18x51で918秒。約15分で終わる計算になります。時間は非常に正確で他に処理を走らせたりしなければ時間が短くなったり早くなったりはしないようです。

生成した画像と呪文(画像タイトル)など

夜空を彩る花火とタワー。アニメ風
Fireworks and a tower that color the night sky. anime style

ピカソが描いたサッカー選手のメッシ。
soccer player Messi. painted by picasso.

おさるさんは桃をゲットした
Monkeys are getting the peach.

ゴッホが描いた花瓶に生けたハイビスカス
Hibiscus in a vase. painted by van gogh

上空からみたナイアガラの滝
Niagara Falls seen from above

インストールなどの詳細は解説サイトもあるよ

当サイトの方法でできなかった場合、詳細がわからなくて進めないと行った場合にはインストールの詳細などに関して以下のサイトが詳しいです。
Stable Diffusionをローカル環境のラズパイで動かす方法(苦行)

処理時間に関して

Ryzen 5 4000番台で6コア8Gメモリ処理になりまして15分かかりました。スワップしているので多少は遅くなってると思います。しかしながらある程度の低スペックでも処理ができる素晴らしさがありますので、動くだけでもありがたやでしょう。皆様面白いのでぜひ自分の手で動かしてみてくださいませ。それではまたお会いしましょう。

レビュー
【マイクラ】Bedrockサーバーを立ててみた体験記

皆様こんにちは。お久しぶりになります。ネタ不足でしばらくブログを更新していませんでした。 今日は久しぶりの記事としては路線が外れていますが、マインクラフトの統合版サーバーであるBedrockサーバーを立ててみましたという内容のブログとなります。 マインクラフトには大きく分けて2種類のエディションがあります。実際にはこれに当てはまらない種類のマイクラもあるよう …

トンネル
アプリ
SSH通信でリモート作業、SSHとは

皆様こんにちは。皆様SSHをご存知ですか。SSHとはなんなのでしょうか。 実はサーバをリモートで操作する事ができるのがSSHです。Secure Shellの略のようです。linuxを使っていると殆どの作業はコマンドラインから行えます。そんな中、コマンドをリモートから発行できるのがSSHです。応用でポートフォワードなどを行って安全なトンネルを作ってTCP通信を …

アーカイブの画像
アプリ
WinRARで秘密のファイルを管理しよう

Winrarは世界中で有名な便利ソフトです。 ただのアーカイバーでしょといえばそれまでなのですが、セキュリティの強固なAESを使った暗号化などが行えるため手軽にセキュアな環境を構築できます。 もちろん持ち運びにも便利で暗号化したファイルを持ち運べばUSBをなくしてしまってデータ漏洩が心配という場合にも対応できます。 ポータブルWinRAR ポータブルで使う場 …