【Python】AIで、ゴッホ風のイラストを生成してみたよぉ

環境メモ
⭐️Windows 11
⭐️プロセッサ:AMD Ryzen 7 6800HS with Radeon Graphics
⭐️Python 3.12.3


ゴッホ風のイラストをAIを使って画像生成できることを知ったので、試してみたよぉ

↓↓完成内容
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/2908f5f8-285d-42b4-d320-767eef97dede.png)

![0020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/a5f887a7-1e58-26b3-73b7-be7cf7b10070.png)

![スクリーンショット 2024-04-28 185029.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/eb9550e6-f01f-e5ee-99d4-ca7f01d43d91.png)

![スクリーンショット 2024-04-28 185146.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/2a8b31ce-fe9a-3699-9367-4d11cf8b1690.png)

https://x.com/nonnonkapibara/status/1784673943615398242


↓↓↓生成したイラストは、下記、はてなブログに載せています。

https://nonkapibara.hatenablog.com/entry/2024/04/29/020007


# 1.Stable Diffusion（ステイブル・ディフュージョン）
Stable Diffusion（ステイブル・ディフュージョン）とは、Stability AI社が開発した画像生成AIサービスです。
テキスト（prompt）を入力し、それに応じたリアルな画像やアニメ風の画像まで作成します。
Stable Diffusionは、オープンソースなので使用料はかかりません。（2024/04/27時点の情報）
Stable Diffusionは、Webブラウザ上で利用する方法と、ローカル環境で利用する方法の２つがあります。

# 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パッケージをインストールします
```shell-session
$ pip install torch diffusers transformers scipy ftfy
```

# 8.ゴッホ風のイラストを生成する

以下のコマンドで実行します。

``out_put``フォルダの中にpng画像が出力されます。

```gogh.rb
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")

```