環境メモ
⭐️Windows 11
⭐️プロセッサ:AMD Ryzen 7 6800HS with Radeon Graphics
⭐️Python 3.12.3
ゴッホ風のイラストをAIを使って画像生成できることを知ったので、試してみたよぉ
↓↓↓生成したイラストは、下記、はてなブログに載せています。
1.Stable Diffusion(ステイブル・ディフュージョン)
Stable Diffusion(ステイブル・ディフュージョン)とは、Stability AI社が開発した画像生成AIサービスです。
テキスト(prompt)を入力し、それに応じたリアルな画像やアニメ風の画像まで作成します。
Stable Diffusionは、オープンソースなので使用料はかかりません。(2024/04/27時点の情報)
Stable Diffusionは、Webブラウザ上で利用する方法と、ローカル環境で利用する方法の2つがあります。
2.Hugging Face(ハギングフェイス)
Hugging Face(ハギングフェイス)とは 機械学習モデルの開発と共有、公開をするためのプラットフォームです。
Hugging Face社のオープンソースライブラリは「Hugging Face Hub」で公開されている学習済みモデルやデータセットをプログラム上で使用できます。
今回、Hugging Faceで公開されているオープンソースライブラリの画像生成タスクに特化した「Diffusers」を使用します。
Hugging FaceとDiffusersについては、下記のサイトに詳しく記載されています。
https://ledge.ai/articles/The-Al-community
3.Van Gogh Diffusion(バンゴッホ ディフュージョン)
Van Gogh Diffusion(バンゴッホ ディフュージョン) とは、ゴッホ風のイラストを生成するモデルです。
Hugging Faceで学習モデルが公開されています。
※ゴッホとは、Vincent Willem van Gogh(フィンセント・ヴィレム・ファン・ゴッホ)オランダのポスト印象派の画家のこと。
Hugging Face 公式サイト(Van Gogh Diffusion)
https://huggingface.co/dallinmackay/Van-Gogh-diffusion
4.開発環境を構築する
Stable Diffusionは、クラウド環境のGoogle Colabを使うことも可能ですが、今回、勉強のため、ローカル環境に構築しました。
Google Colabとは、Google社が提供しているブラウザ上でPythonコードを実行できる環境です。なので、環境構築が不要です。
5.PyTorchをインストールする
PyTorchのインストール方法は、こちらのサイトを参考にインストールしました。
https://zero-cheese.com/7851/
6.pipとPythonをインストールする
こちらを参考にしてpipとPythonをインストールしました。
https://zero-cheese.com/1309/
ちなみに、Hugging Faceのユーザー登録やアクセストークンが無くても使用できるようになっていました。
こちらHugging FaceのGitHubに記載されています。
https://github.com/huggingface/diffusers/issues/1447
7.Diffusersパッケージをインストールする
Diffusers
と呼ばれるパッケージを使用するため、pip
でDiffusersパッケージをインストールします。
Diffusers
は、Stable Diffusionのような、拡散モデルによる画像生成を実行できるフレームワークです。
下記コマンドでDiffusersパッケージをインストールします
$ pip install torch diffusers transformers scipy ftfy
8.ゴッホ風のイラストを生成する
以下のコマンドで実行します。
out_put
フォルダの中にpng画像が出力されます。
import torch
from torch import autocast
from diffusers import StableDiffusionPipeline
from datetime import date
import datetime
# 出力サイズ
image_size_height=720
image_size_width=1280
#ゴッホ風のイラストを生成するモデル
model_id = "dallinmackay/Van-Gogh-diffusion"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")
#高品質へと調整する
negative_prompt = "EasyNegative"
#キーワードlvngvncntは必須です。
#prompt = "lvngvncnt, night sky, Lake"
#実行日時
today = datetime.datetime.now()
output_date = today.strftime("%Y%m%d%H%M")
# 出力枚数
image_cunt = 10
for i in range(image_cunt):
with autocast("cuda"):
image = pipe(prompt, negative_prompt=negative_prompt, height=image_size_height, width=image_size_width).images[0]
# 出力先
image.save(f"./out_put/image_{output_date}_{i}.png")