画像生成AI(モデル)を catch up する(2024)
Ai Hoshino generated by FLUX1.1 pro
みなさん、画像生成AI、キャッチアップできてますか?!
私は最近だと Text-to-Text の LLMモデルばかりを扱っているのですが、画像生成もそろそろキャッチアップしないとなということで、記事を書きつつまとめていきたいと思います。
普段は会社経営をしつつ、フリーランスのMLエンジニアやデータサイエンティストとして活動してます。直近ではシリコンバレーの AIスタートアップで MLE(Machine Learning Engineer)をしていましたが、諸々の事情でリソースが空いてしまったので、LLM を組み込んだプロダクト研究開発に勤しんでいます。
お仕事の相談は X (former Twitter) にて随時受け付けております。
画像生成モデルの分類
さて、分類方法には色々な切り口がありますが、ここでは大きく
- モデルの目的と入出力
- モデル or サービス
という二軸で見ていきたいと思います。
今回、モデルは Hugging Face に公開されており、かつ商用利用が可能なものを中心に取り上げています。
Text-to-Image Models
Text-to-Imageモデルは、その名の通り prompt を入力して画像を得るモデルです。
LLM(Large Language Model)の台頭で一気に脚光を浴びましたね。
このモデルの目的は言うまでもなく、テキストから画像を生成することです。
特に用途が固定されていない代わりに、使い手の創造性が求められるモデルかなと思います。
最近は拡散モデル(Diffusion Models)が多い印象です。
Models on Hugging Face
- Stable Diffusion XL (SDXL)
-
DeepFloyd IF
- non-commercial use only
- Openjourney
- DreamShaper
- Waifu Diffusion
サービス
- DALL-E 3
- Flux AI
- Midjourney
- Adobe Firefly
- Imagen (by Google)
- Canva Magic Studio
- Microsoft Designer
-
Meta AI
- not available in Japan
Image-to-Image Models
Image-to-Imageモデルは、入力画像を特定の条件下において変換して出力画像を得るタスク(モデル)です。
タスクは無数に考えられるため、ここでは一例として 5種類紹介します。
こちらは打って変わって GAN(Generative Adversarial Networks)が多い印象です。
ただし、本質的に GAN の方が向いているというよりはまだ拡散モデルを適用できていないという方が近いのかもしれません。一年後には拡散モデルばかりに塗り替えられている可能性もあります。
- 汎用Image-to-Image変換
- 画像インペインティング(画像内の一部分を描き変えるタスク)
- 超解像(低画質な入力画像から高画質な画像を得るタスク)
- スタイル変換(画風の変換)
- 特殊タスク
各モデルの定性評価
これだけたくさんのモデルがあるとどれを使えば良いかわからないので、サクッと評価できる範囲で試してみます。もっとも多く研究・開発がなされている Text-to-Textモデルについて見ていきます。さすがに全て(全てとは?)を試すのは時間的にもコスト的にも難しいので、いくつかランダムにピックアップしています。そもそも今の時点でちゃんと評価しても、半年後には全く異なる勢力図になっている可能性もあるので......
また、ほとんどのモデルは確率モデルであるため、出力品質には揺らぎがあります。しかしここでは、それぞれのモデルを一度だけ実行してその結果を載せています。複数回の実行でより良い画像が得られる可能性もありますが、それでも一度の実行で得られた結果からある程度振れ幅も推測できるのではと思っています。
画像生成アルゴリズムの評価をどのように行うかはなかなか難しい問題ですが、ここでは学術的評価(※1)をしたいわけではなく実用性を見たいので、以下のようにプロンプトを固定して出力を見てみることにします。
Prompt
A Japanese idol. She has long, dirk purple hair with a light purple tinge. Her most distinctive feature is her eyes, which have star-shaped highlights in both irises. When performing as an idol, she typically wears her hair in a side ponytail on the left side. She has a youthful, charming appearance that captivates her audience.
これは、『推しの子』の「星野アイ」の外見的特徴を perplexity で文字に起こさせたものです。
解像度は特に指定していないので、ノイズの有無には目を瞑ってもらって、単純な生成画像の品質で見ていただければと思います。
Stable Diffusion XL (SDXL)
Openjourney
DreamShaper XL 1.0
DALL-E 3
Flux AI
Flux1 [dev]
Flux1.1 [pro]
考察
今回の検証では、単純に「アイ」の特徴を文字に起こしたものを入力しています。
この点について結果の解釈には注意が必要で、より高品質な画像を得たい場合は、他の LLM と同様に prompt engineering を施す必要があると考えられます。
一方で、Flux1.1 pro や DALL-E 3 などの商用サービスでは、このプロンプトからも比較的高品質な画像が生成されており、エンジニアではない方にとっても利用しやすいモデルなのかなと思います。
余談ですが、一部のモデルに関しては特に指定していないにも関わらず二次元(anime)的な絵になっていたのが面白いなと思いました。
まとめ
商用サービスは商用だけあって、あまりモデルの気持ちを考えなくても高品質な画像が得られるものが多い印象でした。対して、モデルのみ公開されているものの出力を実用レベルに持っていくためには、prompt engineering を行う必要があるなと感じます。
いやー、画像生成、魔法ですね。
※1: 画像生成の定量的評価には、FID(Fréchet inception distance)や NFE(Number of Function Evaluations)などが使われるようです。それぞれ、生成された画像の品質と多様性を評価する指標、生成プロセスの効率を評価する指標とのことです。
Image Generation | Papers With Code
Discussion