見出し画像

ChatGPTさんに画像生成AIの効率的な制作方法について訊いてみた

はじめに

StableDiffusionにて、低解像度でtxt2imgした場合と高画質でtxt2imgした場合とで比較した際に、後者の方が破綻の比率が多くなる現象について疑問だったので聞いてみました。
ただし、ChatGPTさんは2021年以前の知識しかなく「StableDiffusion」については知らないはずなので、画像生成AI一般について聞いています。

ChatGPTさんとのやりとり

わたし:画像生成AIについてご存じですか?たとえばtxt2imgとかimg2imgについて知っていますか?

ChatGPTさんの回答:

はい、私は画像生成AIについての情報を持っています。特に、近年の進化した深層学習の技術を使用して、テキストから画像を生成する方法や、画像から別の画像を生成する方法が研究されてきました。以下はそれぞれの概要です。

  1. txt2img (テキストから画像へ):

    • DALL·Eは、OpenAIによって開発されたGPT-3のアーキテクチャをベースにしたモデルの一つで、テキストの説明に基づいて新しい画像を生成することができます。たとえば、"二つの頭を持つ鶏"といったテキストを入力すると、それに対応するユニークな画像を生成します。

    • この技術は、アート、デザイン、ゲームの開発などの分野での応用が考えられています。

  2. img2img (画像から画像へ):

    • Pix2PixやCycleGANなどのモデルが、このカテゴリの代表的なものです。これらは、ある種類の画像(例:白黒の写真)を別の種類の画像(例:カラー写真)に変換するために使用されます。

    • これらの技術は、写真のスタイル変換、画像の強化、仮想的な環境の生成など、多岐にわたる用途が考えられています。

近年の深層学習の進化により、これらのモデルは高い精度と現実味を持つ結果を出すことができるようになりました。ただし、生成された画像はデータセットや学習方法によって異なるので、使用する際はその特性を理解して適切に利用することが重要です。

※ということで、一応画像生成について知っているようなので質問を進めます

わたし:最終的には1024x1024の高画質サイズくらいの高サイズの画像作品を作っています。 経験上分かったのですが、最初から高画質サイズでtxt2imgで作ろうとすると 800x800などの粗い画像でtxt2iimgで作った場合と比べて構図や人体が破綻している比率が高まる気がします。 そのため、t2iで小サイズで作成してからいい構図のものを選んでi2iにかけるという感じでやってます。 荒い画像作った場合に比べて高画質でtxt2imgを作ろうとすると破綻の比率が高いのはなぜでしょうか? 直観的にはサイズに関係なく破綻の比率は一緒になりそうなものですが。

ChatGPTさんの回答:

画像生成AI、特にテキストから画像を生成するモデル(txt2img)において、高解像度での生成が困難な理由はいくつか考えられます。

  1. モデルの容量:

    • 生成モデルは有限の容量を持ちます。高解像度の画像を直接生成しようとすると、その有限の容量の中で多くのピクセルに対する情報を正確に学習し管理する必要があります。それに対して、低解像度の画像は情報量が少ないため、モデルがその情報をより簡単に学習し、適切な画像を生成することができる可能性が高まります。

  2. 学習データの量と質:

    • 高解像度の画像を生成するための学習データは、それ自体が高解像度であり、そのようなデータを大量に収集するのは困難です。一方、低解像度の画像データは比較的容易に収集・生成できます。データセットの量や質がモデルの性能に大きく影響します。

  3. 詳細の再現性:

    • 高解像度の画像には、多くの細かい詳細やテクスチャが含まれています。モデルがこれらの詳細を正確に捉えることは、低解像度の場合よりも困難です。

  4. 計算量の問題:

    • 高解像度の画像生成は計算量が大きく、訓練や生成にかかる時間やリソースが増加します。これにより、オプティマイザが適切な解に収束するまでの時間が長くなり、学習が不安定になることも考えられます。

あなたが採用している方法、つまり低解像度での生成を行い、その後で高解像度に変換する方法は、上記の問題を回避する効果的なアプローチと言えるでしょう。低解像度での生成により、良好な構図やデザインを確立し、その後でimg2imgのモデルを使用して解像度を上げることで、高品質な画像を得ることができます。

わたし:ありがとうございます。 生成しようとするサイズに関わらず、同じ学習データが使用されるのでないのでしょうか? 生成しようとするサイズに応じて使用する学習データが変わる仕組みになっているということですか?

ChatGPTさんの回答:

いいえ、通常は生成しようとするサイズに関わらず、同じ学習データが使用されることが多いです。ただし、学習データ自体は、もともと高解像度である場合、低解像度のモデルの学習のためにリサイズされることがあります。そして、高解像度のモデルの訓練の際には、元の高解像度のデータが使われることが一般的です。

私が前回言及した「学習データの量と質」の点について誤解を生む表現をしていたかもしれません。指摘いただき、ありがとうございます。正確には、高解像度の画像を生成するモデルを訓練する場合、そのモデルが捉えるべき情報の量や複雑さが増加するため、相対的にデータの「効果的な」量が不足するという意味でした。

要するに、同じ学習データを使っても、高解像度の画像を生成するモデルが要求されるタスクの難易度は高くなります。各ピクセルの関係性、細かいテクスチャ、色のグラデーションなど、より多くの情報を正確にモデル化する必要があるためです。

しかし、一部の研究やアプローチでは、特定の解像度に特化したデータセットを使用することも考えられます。これは状況や目的に応じて変わるため、一概には言えません。

わたし:となるとt2iで小サイズで作成してからいい構図のものを選んでi2iにかけるという制作方法がやはり効果的であるという結論であっていますか? そのほかによりよい効率的な制作手順の提案があったらください。

ChatGPTさんの回答:

はい、現在の技術の制約のもとでは、低解像度でのtxt2img生成(t2i)を先に行い、その後で適切な構図やデザインを持つ画像を選択して、img2img変換(i2i)により高解像度化する方法は、高品質な画像を効率的に得るための有効なアプローチと言えます。

以下は、より効率的な制作手順の提案として考えられる方法です:

  1. 途中評価の自動化:

    • 生成された低解像度の画像の中から「良好な構図」を持つものを自動で選択するモデルやシステムを開発することが考えられます。例えば、画像の品質や構図を評価するための別のAIモデルを使用することで、選択プロセスを高速化できるかもしれません。

  2. 低解像度のFine-tuning:

    • 一度低解像度で生成した画像に対して、微調整や改善を行うための追加の学習フェーズを設けることも考えられます。これにより、低解像度の段階でより高品質な画像を得ることができる可能性があります。

  3. 逐次的な解像度向上:

    • 一度低解像度の画像を生成した後、中間の解像度(例:128x128から256x256へ)でのimg2img変換を行い、その後再びtxt2imgやi2iを適用するという、段階的な解像度向上の方法も考えられます。これにより、よりスムーズに高解像度に近づけることができるかもしれません。

  4. データ増強:

    • 既存の学習データを利用して、異なる解像度や視点での画像を生成し、それらを追加の学習データとして用いることで、モデルの汎用性や生成品質を向上させることが考えられます。

  5. 適切な前処理・後処理:

    • 生成された画像の品質を向上させるための前処理や後処理技術を導入することも有効です。例えば、ノイズ除去やシャープネスの調整などの技術を利用することで、生成画像の見栄えを改善することができます。

これらの提案は一般的なものであり、具体的なタスクや目的に応じて適切に選択・適用する必要があります。

まとめとわたしの感想

ということで、やはりt2iで荒く作って良作を選択したあとi2iにかけるというのがやはり現状の最適解ということのようです。
ChatGPTだけの回答で結論づけるのもちょっと危うく、本来はさらに検索して色々と調べるべきかもしれませんが、ChatGPTの回答に一応の納得感はあり私の直感が気のせいはないことが分かったので個人的には調査はこれでいいかなと思っています。

なお、私のAI画像作品公開サイトAI.img (http://aiimg.fun)では
この手順で制作する前提で効率化するための仕組みを入れています。

具体的には、以下のようなフローです。

  1. プロンプトはランダム+固定でtxt2imgで800x800サイズで作成する(正確には縦横比は1:1ではなく同じ面積になる範囲で縦横比をランダムにしています)

  2. 1で作成された中で良い構図にマーキングする。(自作システムではこの操作を"シード化"と呼んでいます)

  3. シード化された画像をi2iにかけて3枚作成 (面積サイズは1000x1000となるように、縦横比は元画像に一致させる)

そして画像生成プロセスは、
・生成待ちのシード化画像がある場合は3の処理をする。
・生成待ちの画像がない場合は1の生成を繰り返す。
という優先度でまわすことで無駄なく、かつ、制作者(=わたし)の待ち時間を最小化するようにしています。

さらに効率化させるために、ChatGPTが提案してくれてた「途中評価の自動化:」良好な構図を自動判定する仕組みの導入などは挑戦してみたいですね。

以上です。それではまた!

この記事が気に入ったらサポートをしてみませんか?