蛇(Python)が龍を生む

蛇(Python)が龍を生む、
と何やら格言めいたことを生成してしまった当方だが、
この文言には大した意味は無い。


経緯と目的

ただ事務的な作業の効率化のためだけにスクリプトを書くのが、
つまらなくなってきた😔

Google Colabの環境でできることを、いろいろやってみたい。

画像生成も、できるらしい。

では、やってみよう。

ところで、お題を何にしようかな。

当方、先月末に白い龍が天に昇る夢を見たので、
AIには、白い龍の画像でも生成していただきましょうかね。

実行環境(20231102時点)

Device:
Android 11

Browser:
Google Chrome 117.0.5938.60

Google Colaboratory:
Python 3.10.12

※ 別の意味での実行環境(20231102)は、SENDAI-Kaffeeと神楽坂事業所(吾が拠点)です🤗

作業の準備

今や、Hugging Faceのアクセストークンは不要とのこと😳

実行用ノートブック(.ipynb)の置き場所:
/content/drive/My Drive/Colab Notebooks/

実行結果のファイル(.png)の保存先:
/content/drive/My Drive/
↑ スクリプト内に記載のパスを御参照くださいませ。

いざ、実践

Androidスマホから、chromeブラウザ経由で、Google Colaboratoryに入って実行した。
実行結果は、いずれもpngファイルとしてGoogle Driveに新規保存した。

Ok-Gcolab-AI-artTest02-20231102.ipynb

# Ok-Gcolab-AI-artTest02-20231102.ipynb

# coding:utf-8

# Run cell [1]: 

# GoogleDriveと連携しよう(Mount at /content/drive)
from google.colab import drive
drive.mount('/content/drive')
# diffusersパッケージを導入
# !pip install diffusers==0.8.0 transformers scipy ftfy python-ulid

!pip install --upgrade diffusers[torch] transformers accelerate


# StableDiffusionパイプラインを準備しよう
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
import torch
from IPython.display import Image,display

model_id = "stabilityai/stable-diffusion-2-1"

# Hugging Faceのアクセストークンは不要になった

scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler,torch_dtype=torch.float16)
pipe.to("cuda")
#pipe.enable_attention_slicing()
!mkdir outputs

# Run cell [2]: 

# 画像の作成と保存
image_number = 2 # 画像の作成枚数
prompt = 'white dragon' # 呪文を唱えて発注

# ファイル名はimage0.pngから連番で保存
for i in range(image_number):
 image = pipe(prompt).images[0]
 image.save('/content/drive/MyDrive/image'+str(i)+'.png')
 
 # "AI-artTest02 in python3.10", 
produced by K.masamix “KIXAN” as the SHYNAMITES/La CHENAMITOJ, on google colab.,2023/11/02.


実行結果(其の壱)


▲ image0.pngの画像生成例。


▲ image1.pngの画像生成例。


実行結果(其の弐)


▲ image0.pngの画像生成例。


▲ image1.pngの画像生成例。


実行結果についての感想

Google Colabの充実した環境に、改めて感動しつつ、
見よう見まねで書いたスクリプトが動いてくれて満足🤗

画像については、
AIなりに生成してくれたのか、それとも何処かから拾ってきただけなのか、
当方からは判断できない仕上がりだ。

しかし、これで少なくとも人間が、
お題を前にして、(いったい何を描いたらいいのか判らない、なんて)途方に暮れることは、
きっと無くなるだろう。

いわゆる呪文を工夫して指示したり、
生成された画像を更に加工したり、
と、応用の余地はかなり有りそうだ☺️

紆余曲折

1.)
Google colabのランタイムのタイプを予めGPUにしてなかっただけで、
早速エラーを喰らう。

2.)
インストールするdiffusersパッケージは新しいバージョンのものにしよう(ver.0.8.0)。

参考資料に倣ってインストールしたのが、古いバージョンのdiffusersパッケージだった。
→スクリプト内のpipeが記載されてる辺りの行でエラーになった。

3.)
Google driveに保存した画像を、スマホに直接ダウンロードするのに失敗した。
しかも、google driveから直接noteにアップロードするのも失敗した。
オフライン利用okにしたのに。

しかし、google drive上の画像を一旦、別のアプリ(Lumii)で開いてダウンロードしたら、できた(つまり別名保存)。
不思議だなぁ🤔

4.) 
予めHugging Face( https://huggingface.co/ )でアカウント登録して、
アクセストークン(APIトークン)を取得する必要がある、と或る記事に書いてあったから、
それに従ってスクリプトを書いたところ、
とにかく動いたので喜んだ。
(Ok-Gcolab-AI-artTest01-20231102.ipynb ※非公開スクリプト)

しかし、その後で、別の記事を読んだら、
バージョンアップにより仕様が変更されていた。
一部の表記を変更したり、
そもそもアクセストークンが不要になってたり。
何だよ!! もう!!😡

悔しいので、アクセストークン無しで動くスクリプトに書き直した🙌
(Ok-Gcolab-AI-artTest02-20231102.ipynb)

参考資料

【簡単無料】画像生成AIのStable Diffusionに絵を描いてもらおう【準備編】
https://www.boardgamepark.com/entry/stable_diffusion1#%E7%9F%A5%E8%AD%98%E3%82%82%E9%87%91%E3%82%82PC%E3%82%82%E3%81%AA%E3%81%97%E3%81%A7AI%E3%81%AB%E7%B5%B5%E3%82%92%E6%8F%8F%E3%81%8B%E3%81%9B%E3%81%9F%E3%81%84

Hugging FaceのAPIトークン(アクセストークン)を取得する
https://laboratory.kazuuu.net/obtain-an-api-token-access-token-for-hugging-face/?amp=1

画像生成AIのStable DiffusionでAI画伯に絵を描かせよう【Colabを使った画像作成編】
https://www.boardgamepark.com/entry/Stable_Diffusion2

Stable Diffusionによる画像生成(Python ローカル実行版)
https://zenn.dev/wurly/articles/ce84f66dd5f68e

久しぶりにStable Diffusion使ったらエラーが出た件
https://panomegon.com/stable-diffusion-new/#toc1

diffusersで使える Stable Diffusionモデル一覧|npaka @npaka123  https://note.com/npaka/n/ned44e0242ac0



当方はク◯エイターです🤗 さて◯の中に入るのは何でせう? 「リ」だと思ったらサポート宜しくです(少額支援歓迎)☺️ 「ソ」だと思ったら即、退場せよ🥺 ※1: 記事のシェア歓迎。 ※2: 只今100円玉と壱萬圓札が不足しております🙏