【祝!!無限増殖】寝てる間に話題のStable Diffusionが無限に動く仕組みを作ってみた

こんにちは! Stable Diffusionネタです！

# サマリ
* 画像自動生成とテキスト自動生成を組み合わせて、勝手に無限に画像を作る仕組みを作ってみました。
* 結果
    * 昨日からずっと画像が増殖を続けています。具体的にはこんな感じ。
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18761/96fbb908-faca-7f1e-507f-e47069945626.png)
    
# stable Diffusionとは
* いい感じにテキストから画像を作ってくれるもので、最近モデルが公開されていて界隈で話題のものです。
<img src="https://i.gzn.jp/img/2022/08/24/stable-diffusion-google-colaboratory/00.png" width=50%>

引用: https://gigazine.net/news/20220824-stable-diffusion-google-colaboratory/

# アイデア
* 散歩していると「テキストから画像が作るAIと、画像からテキストを作るAIを繋げれば、永久機関ができるのでは？」と閃いたのでやってみました。
    * テキストから画像が作れるAIと、画像からテキストを作るAIを繋ぐイメージ
        * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18761/e7b455ef-6a56-6052-add1-2b367bcf04d1.png)


# 課題
これだといろんな猫は無限に作れそうですが、それでは物足りません。
そこで 「テキストに似たテキストを作る処理」を入れると、いろんな画像を作れそうだということを思いつきました。イメージはこんな感じです。
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18761/9114bd2a-6d50-ac10-7743-d1b697b9eb5f.png)

# 具体的な画像増殖の処理
* テキストを用意する
* 以下、loop
    * テキストから画像を作る
    * 画像からテキストを作る
    * テキストに似たテキストを作る

# 画像増殖の処理の具体例
* テキストを用意する
    * ```This is the mascot characters illustration. Here's a little thing I wanted to create for an ea```
    * コーディングサボったので50文字しか保存していないです...。あと、あと今回はマスコットをいっぱい作りたかったので、先頭に"This is the mascot characters illustration. "の文字列をいれて、生成される画像に制約を入れています。
* テキストから画像を作る
    * <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18761/3cd63384-6d88-60c9-a7f0-95db6702be9d.png" width=50%>
* 画像からテキストを作る
    * ```a sticker of a cat on a wooden surface.(DeepL: 木製の表面に猫のシールを貼ったものです。)```
    * 完璧ですね！
* テキストに似たテキストを作る(コーディングサボったので50文字しか保存していない...)
    *  ```There was a cat sign on the front of the cat's n (DeepL: 猫の看板があったのですが、その前面にある猫のン))```
    *  シールと看板がなんとなく紐づいていそうな...
* テキストから画像を作る
    * ```This is the mascot characters illustration. There was a cat sign on the front of the cat's n (DeepL: こちらはマスコットキャラクターのイラストです。猫の看板があったのですが、その前面にある猫のン)```
    * <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18761/e944c6eb-cbcf-2c66-dfc7-d286f53b9b0d.png" width=50%>
* 画像からテキストを作る
    * ``` painting of a cat with a red cross on it's chest, (DeepL: 赤十字の猫)```
    * 赤十字の猫とはw
* テキストに似たテキストを作る
    * ...


# 画像増殖の処理の詳細
## テキストから画像を作る
* stable Diffusion を使います。
* colab、ぐぐったらでます。

## 画像からテキストを作る
* BLIPというCLIPのようなAIを利用しました。
* 参考のcolab、見つけたら貼っておきます。

## テキストに似たテキストを作る
* GPT2を使いました。これで、"猫。"と入力すると、その後の文字(例えば"とっても可愛いです。")を自動で生成してくれます。この生成結果を似たテキストとして使いました。
* 参考のcolab、見つけたら貼っておきます。

# やってみた結果 いろいろ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18761/45e78523-8cb5-d7b3-20f8-676681f56105.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18761/8f14e499-f986-c8c4-e907-7f57ef0506e6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18761/a7eb0ed1-d4e8-db2b-4b7e-29844a1fa171.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18761/c92cf0dd-7a3d-8b76-716c-281d6f9a819b.png)

# 結論
* Stable Diffusionを使って無限に画像を増殖させること成功しました。
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18761/96fbb908-faca-7f1e-507f-e47069945626.png)
* 今もcolab pro+で画像を作り続けていて、google driveに画像が生成されて続けている状態です。暇な時にドライブの画像を眺めるとまあまあ楽しいような、頭がおかしくなるような気がしますw

# 課題と今後
* もうちょっとログを取るのを頑張ったら、いろんな面白い考察ができるかも
* colab pro+は24時間しか動かないので無限に動かしたい → cronの仕組みがありそう？
* 今回は制約でマスコットを生成するように指定しましたが、それをしない場合どうなるのか、試してみるのは面白そうです。

# 感想とか
* 無限に画像を作れるなら、もしこれを他人のコンピュータに突っ込めたらディスクを溢れさせられるウィルスに使えそうです。そんな時代が来るのだろうか。
* 久しぶりにとても楽しくて夜更かししました。技術進化は偉大ですね。