セーブポイント

特にジャンルの決まってない雑記です。

画像置き場作った&拡散モデルすげえ~の巻 - 技術日記 10月6日号

前回の記事を書いてからも、ぽちぽちNovelAIで遊んでいる。

普通に生成された画像を眺めているだけでも面白いのだけど、せっかくだしイラストのギャラリーでも作りたいなと思い、作ってみた。

notfbk.mgcup.net

今回はとりあえずこれを作った話からしていこうかな。

追記:
Twitter Botにもなりました。これから運用するのはこっちになるかも。

AIイラストのためのギャラリー

今回のサイトはReactを使って作られている。

React、先週くらいに引退したんだけど。
まあ、画像を並べるだけならできそうということでやってみた。

ちょうどReact向けにいい感じのライブラリがあって、まあそのおかげである。

github.com

サイトの見た目は、このライブラリとMUIでサクッと20分くらいで作れた。

画像用にストレージを用意する

問題はサイトに載せたいイラストをどこでホスティングするか、である。できれば無料で済む手段が良い。

リポジトリpublicディレクトリに全部置いてしまえばいいじゃん、という話もあるが、あまりやりたくはない。

というわけで、最初は自分のGoogle Drive上に画像をアップロードして、そこに直リンクを張る方法でやってみることにした。

以下の記事で紹介されているような方法で、Google Drive上にアップロードされている画像をWebサイトで表示することができる。

qiita.com

ただしこの方法には落とし穴がある。これをやると、GoogleからAutomated queriesやめろ(要約)と言われてしばらくページの表示を繰り返してると画像が表示されなくなる。

というわけで、Google Driveを画像などのホスティングに利用することはおそらく無理そう。バイパスする手段があったりするかもしれないけど、あまり行儀が良くないのでやめておく。

次に考えたのは、GitHubのプライベートリポジトリに画像を置く方法。実際GitHubに音声などを置いてそれを流したり、みたいなことをすることもある。

ただちょっとプライベートリポジトリだとリンクにtokenというクエリパラメータがついててあんまり公開するもんじゃなさそうな雰囲気があったので、やめた。

大人しくホスティング用のサービスを使う

無料で済ませたかったけど、そこをケチるとめんどくさそうという雰囲気がしてきたので、普通にAmazon S3でも使うかという気になった。
と思っていたところ、GCPのCloud StorageにはAlways Freeの枠があるらしいことを知り、最終的にそっちにした。現在のサイトではCloud Storageを利用している。

Always Freeがなくとも普通にS3も画像置くくらいの用途なら多分クソ安いのだけど、心のゆとりは大切である。

Cloud Storageの無料枠については、リージョンの制約があるため注意が必要。

公式ドキュメント(日本語)より引用

別に対戦ゲーム用のサーバーとかを建てるわけじゃないので、サーバーの位置をアメリカにしたところで特に問題は無いはず。
Cloud Storageでバケットを作成する際、デフォルトだとロケーションタイプがMulti-regionになっているため単一リージョンにするかus-west1とus-central1でDual-regionとかにしておけばいいと思う。
筆者はus-west1(オレゴン)にしました。なんとなく日本から一番近いから。

単一リージョンであっても、そのリージョン内で結局分散して保存されるようになっているらしいので、オレゴンが丸ごと沈んだりしない限りは大丈夫。そもそも今回の場合は消し飛んでも良いようなデータなので、本当に単一リージョンですらオーバースペック……。Googleは格が違うぜ。

ところで、今回の使い方で問題になるのは下りネットワークの料金だけど、上の表では1GBとあるけど最近100GBまで無料になったらしい。急にサイトの訪問者数が10万人とかにならなければ、普通は超えないラインかな~と。

Cloud Storageこれまで使ったことが無かったけど、普通に神のサービスだと思う。

拡散モデルが強すぎの話

ところで話は変わり、最近画像生成モデルの進化凄いですよね~という話を少しだけ。

なんか、まだ進化するかもみたいな話があったりするらしい。
Stable Diffusionや今回のNovelAI Diffusionに利用されているらしいLatent Diffusionモデルというのがあるんだけれども、このモデルは計算速度と引き換えに精度を一部犠牲にしているらしいので、じゃあ時間計算量の条件を無視してひたすら精度良いモデルに差し替えたら……?みたいな話だそう。私も機械学習の浅い部分しか分からないので深い話はできないですが、面白いですよね。

なんでも、Googleが発表しているImagenはLatent Diffusionに乗っかっていないらしいので、じゃあこいつを魔改造したら……?と考えている人がいるみたいです。

最近はNovelAIがDanbooruを利用していてなんやかんやという話で持ちきりですが、学習データセットが別に本質じゃないのでは?というのはWaifu DiffusionとNovelAI Diffusionを比較してみたときに思うことだったり。

画像生成モデルと人間がどうやって上手く付き合っていけるか、難しい課題ですね。