見出し画像

そうだ!AI画像生成をちゃんと勉強しよう💡3章:プロンプトについて(前半戦)

※勉強しているのは、Stable Diffusion、SeaArt系になります。

前回は「モデルについて」を勉強しました ♪
今回は、「画像生成におけるプロンプト」というお題で勉強していきたいと思います。
本日も等身大の私で書いていきます、よろしくお願いします(*⩌⩊⩌*)

あ、私の記事は画像は無断転載禁止ですが、プロンプトはバンバンコピーして使ってもらって大丈夫なので、もしよかったら勉強にお役立てください✨



おさらい

1章でさわり程度にしておいたプロンプトですが、まずはおさらい。

画像生成におけるプロンプトは画像の内容を定義するためのもので、
AI をより効果的に誘導するために、肯定的または否定的なフィードバックを提供してモデルの動作を制限する方法。

でした。

画像生成におけるプロンプト

プロンプトの基本構文


AI をより効果的に誘導するために、肯定的または否定的なフィードバックを提供って言われてもよくわからないけど要するにどういうこと??

って思いますよね。要するにこういうことです。

  • 肯定的=望ましい画像コンテンツを説明するプロンプト(プロンプト)

  • 否定的=画像に望ましくないコンテンツを説明するプロンプト(ネガティブプロンプト)


「こういうの出してほしい~」と、「こういうのはやめてほしい~」ってことですね( ⩌⩊⩌)✧

画像生成ではこの2つの要素で画像の内容を定義していきます。

肯定的な方が通常のプロンプトで、
否定的な方はネガティブプロンプトと呼ばれていて、モデルが特定の詳細(手の構造など)を十分に理解していない場合に特に役立ちます。
ネガティブプロンプトをうまく使うと、使わない時よりも画像の品質を向上させることができるんです!


自然言語とフレーズ形式

さて、これらのプロンプトを実際に書く時ですが、みなさんはどうやって書いていますか?
私はついChatGPTくんに話しかけるように一つの文章で書きたくなってしまうのですが…

一応それは自然言語という入力方法としてあるらしいです。
でも、私がサムネを生成する時にいつも使っている

「そうだ!AI画像生成をちゃんと勉強しよう💡3章:画像生成におけるプロンプト」というタイトルのnote記事を書きました。 このタイトルに合うような画像を作ってください。 要望は、日本の少女漫画のようなタッチで、水彩画のようなカラーリングで16:9で描いてください。

みたいなやつはちょっと違うみたいで、例えば

「Twin-tailed girl with arms raised and jumping
(両腕を上げてジャンプをしているツインテールの女の子)」

みたいな感じで入力します。


一方で、フレーズ形式というやつは、それぞれを単語に区切って入力する方法です。
さきほどの例でやってみると、

「A girl, pigtails, Jumping, Raise both arms
(一人の女の子、ツインテール、ジャンプしている、両腕をあげる)」

のようになります。
単語はカンマ(,)で区切ります。半角スペースはあってもなくても大丈夫なようです。


自然言語とフレーズ形式比較(Stable Diffusion)


試しにこの2種類で画像を生成してみたいと思います。
画像サイズは512×768の縦長にしてみます。(ジャンプしてるから縦長の方がいいかなっていう理由。)
ネガティブプロンプトや他のパラメータ?はいじりません。
サンプラーは何かしら指定しないといけないのでDPM++ 2Mにしました。

プロンプトはすべて先ほどの例に出てきた、
「両腕を上げてジャンプをしているツインテールの女の子」です。

※足の本数が多かったり、腕や指の本数が多かったりします。
そのような画像が苦手な方は次の見出しまで飛ばしてお読みください。

モデル:ENCartoony

自然言語:Twin-tailed girl with arms raised and jumping
フレーズ形式:A girl, pigtails, Jumping, Raise both arms

モデル:AnyLoRA - Checkpoint

自然言語:Twin-tailed girl with arms raised and jumping
フレーズ形式:A girl, pigtails, Jumping, Raise both arms

モデル:MeinaMix

自然言語:Twin-tailed girl with arms raised and jumping
フレーズ形式:A girl, pigtails, Jumping, Raise both arms

以上、3種類のモデルで生成してみました。

うーん、私の素人目だとあんまり違いがわかりませんが、
若干フレーズ形式のほうが出来がいいような?


自然言語とフレーズ形式比較(SeaArt)

そういえばこのガイドブックはSeaArtのものでした。
結果が何か違うかもしれないので、SeaArtでもう一度生成してみたいと思います。

モデルは先ほどの3種類と同じものを探して使います。
プロンプトと画像サイズも全く同じものにします。
SeaArtは日本語でもいけるという噂を耳にしたこともありますが、今回は比較ということで英語で入力しました。

モデル:ENCartoony

自然言語:Twin-tailed girl with arms raised and jumping
フレーズ形式:A girl, pigtails, Jumping, Raise both arms

モデル:AnyLoRA - Checkpoint

自然言語:Twin-tailed girl with arms raised and jumping
フレーズ形式:A girl, pigtails, Jumping, Raise both arms

モデル:MeinaMix

自然言語:Twin-tailed girl with arms raised and jumping
フレーズ形式:A girl, pigtails, Jumping, Raise both arms

こんなのが出ました。
…Stable Diffusionとずいぶん違くないか…?

と思ってよく見てみたら、SeaArtには最初からネガティブプロンプトが設定されていました😅

verybadimagenegative_v1.3, ng_deepnegative_v1_75t, (ugly face:0.8),cross-eyed,sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, bad anatomy, DeepNegative, facing away, tilted head, {Multiple people}, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worstquality, low quality, normal quality, jpegartifacts, signature, watermark, username, blurry, bad feet, cropped, poorly drawn hands, poorly drawn face, mutation, deformed, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, extra fingers, fewer digits, extra limbs, extra arms,extra legs, malformed limbs, fused fingers, too many fingers, long neck, cross-eyed,mutated hands, polar lowres, bad body, bad proportions, gross proportions, text, error, missing fingers, missing arms, missing legs, extra digit, extra arms, extra leg, extra foot, ((repeating hair))

SeaArtにデフォルトで設定されていたネガティブプロンプト

こんなにたくさん入力されていたら、そりゃ結果も違うよな。
ちなみにこのネガティブプロンプトを日本語訳するとこんな感じです。

verybadimagenegative_v1.3、ng_deepnegative_v1_75t、(醜い顔:0. 8),横目,スケッチ, (最悪画質:2), (低画質:2), (通常画質: 2), lowres, 標準品質, ((monochrome)), ((grayscale)), 皮膚のシミ, ニキビ, 皮膚のシミ, 解剖学的に悪い, DeepNegative, 反対側を向いている, 頭を傾けている, {複数の人物}, lowres, 解剖学的に悪い, 手が悪い, テキスト, エラー、 指がない, 余分な指, 桁が少ない, 切り抜き, 最悪品質, 低品質, 正常品質, jpegartifacts, 署名, 透かし, ユーザー名, ぼやけた, 悪い足, 切り抜き, 下手な手, 下手な顔, 突然変異、 変形, 最悪品質, 低品質, 標準品質, JPEGアーティファクト, 署名, 透かし, 余分な指, 桁が少ない, 余分な手足, 余分な腕, 余分な足, 変形した手足, 融合した指, 指が多すぎる, 長い首, 反対目, 変形した手, 極低レス, 悪いボディ, 悪いプロポーション, 総プロポーション, テキスト, エラー, 欠けた指, 欠けた腕, 欠けた足, 余分な桁, 余分な腕, 余分な足, ((繰り返す髪))

上のネガティブプロンプトの日本語訳


という訳でもう一度…いっていきますw

自然言語とフレーズ形式比較(SeaArtネガティブプロンプト無し)

今度こそStable Diffusionのときと同じ条件で生成しました!

プロンプトは「両腕を上げてジャンプをしているツインテールの女の子」を英語で自然言語とフレーズ形式で入力しました。
他パラメータは何もなし、サンプラーは何かしら指定しないといけないのでDPM++ 2Mです。

モデル:ENCartoony

自然言語:Twin-tailed girl with arms raised and jumping
フレーズ形式:A girl, pigtails, Jumping, Raise both arms

モデル:AnyLoRA - Checkpoint

自然言語:Twin-tailed girl with arms raised and jumping
フレーズ形式:A girl, pigtails, Jumping, Raise both arms

モデル:MeinaMix

自然言語:Twin-tailed girl with arms raised and jumping
フレーズ形式:A girl, pigtails, Jumping, Raise both arms

いかがでしょうか?
私的には自然言語もフレーズ形式も大差ないかな?という感じを受けました。

それよりも、思いがけずネガティブプロンプトの偉大さがわかりました😂

ネガティブプロンプトがあるかないかだけでもあんなに出力に差が出るんですね。
特に、足や腕、指の本数に対しては必須なんじゃないかという予想が立ちました。



次回へつづく

まだこれで半分くらいなのですが、次回にしたいと思います。

すでに奥が深い画像生成のプロンプト…ワクワクすっぞ(棒

そして今回も例にもれずこちらのガイドブックで勉強させていただきました!




今日のサムネ生成過程(ChatGPT,DALL-E 3)


私「「そうだ!AI画像生成をちゃんと勉強しよう💡3章:画像生成におけるプロンプト」というタイトルのnote記事を書きました。 このタイトルに合うような画像を作ってください。 要望は、日本の少女漫画のようなタッチで、水彩画のようなカラーリングで16:9で描いてください。」

ChatGPTくん「こちらが「そうだ!AI画像生成をちゃんと勉強しよう💡3章:画像生成におけるプロンプト」のタイトルに合うイラストです。日本の少女漫画のようなタッチで、水彩画のようなカラーリングで描かれています。ご確認ください。」

私「ありがとうございます!」

以上。


(2024.8.2追記)

おまけの成果ギャラリーvol.3

英語での指示出しに気づかず数日

この頃はまだ気づかずにずっと日本語で指示文を打ってます😂
ほとんど反映されていないのが分かるかと思います。

ミニキャラ、女の子、ステッカー、うずくまっている、フードをかぶっている
全身、ミニキャラ、女の子、白背景のステッカー、うずくまっている、布団に隠れる
全身、ミニキャラ、女の子、白背景のステッカー、うずくまっている、布団に隠れる
白背景のステッカー、全身、小さい女の子、布団に隠れている
白背景、シール、全身、ミニキャラ、女の子、布団に隠れている

この記事が参加している募集

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