LINEから、作りたい画像のイメージをテキストとして入力すると、
AIが画像を生成してくれるボットを実装した。

画像生成AIのStable DiffusionとPython、そしてPHPを使っている。
Stable DiffusionはGPUを利用するため、レンタルサーバでは動かせない。
そこで研究者の方々が良く利用しているHugging Faceというサービスを利用してみた。
Hugging FaceではStable Diffusionを置いておくサーバを作れるほか、
AIの核となるデータやモデルも置いておくことができ、そしてそれらを簡単に連携させることができる。
まさにAIプログラムを管理・運用するのに特化したようなサービスだ。

選んだGPUサーバは1時間0.6ドルと、他のサーバと比べて安い。
また、サーバを指定の時間利用していないと自動的にシャットダウンし、その間課金も止まるところが嬉しい。
ただ、再開する際にそこそこ時間がかかってしまうのが難点。

画像生成プログラムに関しては、Stable Diffusionの場合、
Midjourneyのような有料サービスと比較して同じテキスト内容でも質が悪い。
そこで、質を高めるテキストをデフォルトで組み込むようにした。
(前から色々と試していていくつかの候補を見つけていたため、それを利用することにした)

そのおかげで同じようなテキストを入力した時に、質の高い画像が生成できるようになった。

アップデート

生成する画像の質を上げるために、以下の改良を行った。

3/3 guidance_scale パラメータの設定

これは入力されたテキストをどの程度重要視するか、という設定。
4.0が設定していたところを7.5とした。

例えば「Pictures of Poodle Puppies.」と入力した場合、
guidance_scaleの値が小さいと、犬は1匹しか生成されなかったりする。
この値を上げてあげることで、複数の指定をAIが重要視し、複数の犬を生成してくれるようになったりする。

値が小さいほど、AIがうまいことテキストを補完して生成してくれて、
値が大きいほど、テキストに忠実に再現してくれる。というわけだ。

3/3 seed パラメータの導入

Stable Diffusionなどの拡散モデルは、
はじめにランダムなノイズ(テレビの砂嵐みたいなもの)を用意し、
そこからノイズを取り除いて画像を生成していく。

そのランダムなノイズを用意する時に使われる乱数が、このseed値。
この乱数に同じ値を設定することで、用意するノイズを同じものにすることができ、
同じテキストであれば、同じ画像を生成することができるようになる。
そうすることで、2度目以降の画像生成時の微調整が可能になる。

3/4 消費GPUの節約と生成画像の増加

Stable Diffusionはノイズを少しずつ取り除いていきながら画像を生成する。
これらの作業をまとめて行うと、多くのGPUを消費することになる。
そこで作業単位に分けて計算処理を行っていくことで、GPUの消費を減らすことができる。
今回はそのアップデートを行った。

また、1度の入力で生成する画像の枚数を増やすカスタマイズを行った。
seed値と組み合わせれば、生成した複数の画像の中から1枚を選んで微調整していくことも可能だ。

3/5 翻訳機能の追加

Stable Diffusionに入力するテキストは、基本的に英語。
Google翻訳を内部で利用することで、日本語で入力してもそれを自動的に英語に翻訳して利用できるようにした。

Contact
AI に関するお問い合わせは、当サイトのContactページのフォームよりお問い合わせください。