Hard Prompts Made Easyで、画像生成AIのpromptを簡単にする

1.はじめに

 今回ご紹介するのは、画像生成AIのプロンプトを短くし、かつ画像とプロンプトの類似度を高めるHard Prompts Made Easy という技術です。

2.Hard Prompts Made Easyとは?

 従来の画像生成AIのプロンプトは、解釈可能なトークンのみで表されるため、トークン数は多くなり、画像とプロンプトの類似度を上げるためには試行錯誤や直感が必要でした。

 一方、Hard Prompts Made Easy(PEZ)は、解釈可能なトークンの間に解釈出来ない連続値トークンを埋め込むことによって、少ないトークン数ですみ、画像とプロンプトの類似度を上げるために数理的手法を用いることが出来ます。

 下記は、PEZで画像と類似度の高いプロンプトを求め、そのプロンプトで再度画像を生成した例です。nucclなどの解釈出来ないトークンが使われトークン数は少ないですが、元画像と類似度の高い画像が生成出来ていることが分かります。

 この技術を使うと、どんなことが出来るのか見て行きましょう。1つ目は、プロンプトの蒸留です。これはプロンプトのトークン数を減らすことです。

 2つ目は、スタイル転送です。左側のTarget Style4枚の画像に類似度の高いプロンプト[A]を求めて、A Tiger in the style of [A] という様なプロンプトにするだけで、スタイル転送が出来ます。

 3つ目は、イメージの合成です。左側の Separate Generation(2枚の画像)に類似度の高いプロンプトをそれぞれ求め、その2つのプロンプトを結合するとConcatenated Generation(合成したイメージ) を得ることが出来ます。

3.コード

 コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Open in Colab」ボタンをクリックすると動かせます。

 まず、セットアップを行います。

 

 1番目は、画像と類似度の高いpromptを求めます

 最初に、picで01.jpgを指定して画像を読み込みます。自分の用意した画像を使いたい場合は、picフォルダにその画像をアップロードして下さい。なお、画像は内部で512×512で扱われますので正方形に近い画像が良いです。

 これが読み込んだ画像です。

 次に、この画像と類似度の高いpromptを求めます。

best cosine sim: 0.5095803141593933

best prompt: paoloweymouth bournemouth prismdaughters imports onceuponpgatbath pony artiste portray sargent impressionist gilleonceupon

 ログの最後に、最も類似度の高いpromptが表示されます。このpromptから画像を生成してみましょう。

 最初に読み込んだ画像に近いイメージで画像が生成できることが分かります。

 2番目は、promptの蒸留です

 最初に、長いpromptを入力します。ここでは、”realistic car 3 d render sci – fi car and sci – fi robotic factory structure in the coronation of napoleon painting and digital billboard with point cloud in the middle, unreal engine 5, keyshot, octane, artstation trending, ultra high detail, ultra realistic, cinematic, 8 k, 1 6 k, in style of zaha hadid, in style of nanospace michael menzelincev, in style of lee souder, in plastic, dark atmosphere, tilt shift, depth of field” と入力します。

 次に、この長いpromptで画像を生成します。

 こんな未来の自動車工場の風景が生成されます。

 次に、このpromptを蒸留(短縮)してみましょう。

best cosine sim: 0.8279194235801697

best prompt: realistic surrealism futuristic futuristic iot dereltechnological car factory individually visualization renderrender depicting destined production 

 ログの最後に、最も類似度の高いpromptが表示されます。最初と比べてかなり短縮化されていますね。それでは、このpromptから画像を生成してみましょう。

 最初に読み込んだ長いpromptと似たイメージの画像を生成できるていることが分かります。

  3番目に、negativepromptへの活用です。

 最初に、picで02.jpgを指定して画像を読み込みます。自分の用意した画像を使いたい場合は、picフォルダにその画像をアップロードして下さい。なお、画像は内部で512×512で扱われますので正方形に近い画像が良いです。

 これが読み込んだ画像です。

 次に、この画像を生成するpromptを求めます。

best cosine sim: 0.41112083196640015

best prompt: upright valitonne sustainable lawn located resurg💙disturbed ingredients accused ilanregarded rewartsk pnpp

 ログの最後に、最も類似度の高いpromptが表示されます。それでは、これをnegative promptとして、”two dogs are running” という文から画像を生成してみましょう。

 上段がnegative prompt無しの場合、下段がnegative prompt有り場合です。上手くnegative promptが機能していることが分かります。

  4番目に、スタイル転送です。

 最初に、pic_listで ’03.jpg’, ’04.jpg’, ’05.jpg’, ’06.jpg’というような形で画像を指定して読み込みます。自分の用意した画像を使いたい場合は、picフォルダにその画像をアップロードして下さい。なお、画像は内部で512×512で扱われますので正方形に近い画像が良いです。

 これが読み込んだ画像です。

 次に、この4つの画像に類似度の高いpromptを求めます。

best cosine sim: 0.4465205669403076

best prompt: galaxies inspired virgo cruelty anime stil puja glos wallis inktober dday inspiration blogtutorbeautiful hwa

 ログの最後に、最も類似度の高いpromptが表示されます。それでは、このpromptをスタイルとして画像を生成してみましょう。

 main_prompt” the streets of Paris”(パリの通り)と入力すると、内部で” the streets of Paris in the style of + 先程のprompt” というpromptから画像を生成します。

 スタイル転送が出来ていることが分かります。これを活用すると、今までDream Boothでやっていたことの一部が代替出来ます。

 プロンプトエンジニアリングの世界は、まだまだ進化して行きそうです。では、また。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

アバター

ディープラーニング・エンジニアを趣味でやってます。E資格ホルダー。 好きなものは、膨大な凡ショットから生まれる奇跡の1枚、右肩上がりのワクワク感、暑い国の新たな価値観、何もしない南の島、コード通りに動くチップ、完璧なハーモニー、仲間とのバンド演奏、数えきれない流れ星。