準備
何をどのように学習するかによって、写真を特定の幅と高さにクロップする必要がある場合があります。別の種類の学習では、画像をさまざまなサイズに分類できるため、クロップが不要な場合もあります。使用している学習手法、学習対象のモデル、そしてモデルの学習に使用しているプログラムで何が必要かを確認してください。キャプション作成 – 一般的な注意点
自動キャプション作成は避ける
- BLIP と deepbooru は興味深いものですが、まだ少し早い段階です。
- BLIP と deepbooru は、文脈や相対的な重要度の扱いが苦手です。
- BLIP や deepbooru が作ったミスを修正し、結局手動でキャプションを付けるよりも、最初から手動でキャプションを付ける方が速いです。
プロンプトを書くときと同じようにキャプションを書く
- キャプション作成とプロンプト作成は関連しています。
- 自分が普段どのようにプロンプトを書いているかを把握しましょう。冗長な文章を使いますか?短い説明ですか?曖昧なプロンプトですか、それとも詳細なプロンプトですか?
- 普段プロンプトを書くときのスタイルや詳しさに近い形でキャプションを書いてください。
コンセプトごとに決まった構造に従う
- 構造に従うことは、学習プロセスに役立ちます。
- 写真用の構造とイラスト用の構造を別々に用意してもよいでしょう。ただし、1 つのデータセットにキャプションを付ける際には、構造を混在させることはなるべく避けてください。
キャプションはプロンプトで使用できる変数のようなもの
キャプションで説明したものはすべて、プロンプト内で操作できる変数のように考えることができます。これには 2 つの意味があります。- 暗黙的に教えたいコンセプトではないものについては、できるだけ多くの詳細を説明する必要があります。言い換えると、変数にしたいものはすべて説明してください。たとえば、特定の顔を教えたいが髪の色は変更できるようにしたい場合、各画像で髪の色を説明することで、“hair color” が変数の 1 つになります。
- 暗黙的に教えたいものについては、クラスレベルの説明を超えて何も説明しない方がよいです。言い換えると、教えようとしているもの自体を変数にしてはいけません。たとえば、特定の顔を教える場合、それを大きな鼻を持つものとして説明すべきではありません。鼻の大きさを変数にしてしまうと、それはもはやその特定の顔ではなくなるからです。ただし、必要であれば “face” とキャプションに入れることはできます。これは学習中のモデルに文脈を与えます。ただし、これには次のポイントで説明するようないくつかの影響があります。
クラスをタグとして活用する
- ここには 2 つの考え方があります。
- 汎用的なクラスタグを使用すると、そのクラス全体が学習データの方向にバイアスされます。これが望ましいかどうかは、目的によって異なります。
- 汎用的なクラスタグを使用すると、学習プロセスに文脈を与えられます。概念的には、モデルがすでに “face” について妥当な近似を持っている場合、“face” が何であるかを学習する方が簡単です。
- モデル内のクラス全体を学習画像の方向にバイアスしたい場合は、具体的なタグではなく広いクラスタグを使用してください。たとえば、すべての男性が Brad Pitt のように見えるべきだとモデルに教えたい場合、キャプションには “man” タグを含めるべきですが、それ以上具体的にするべきではありません。これにより、プロンプトで “man” という単語を使うたびに、モデルが Brad Pitt のような見た目の男性を生成するよう影響を与えます。また、学習中にモデルがすでに知っている “man” という概念を利用し、活用することもできます。
- 学習がクラス全体へ与える影響を減らしたい場合は、具体的なタグを含め、クラスタグの重要度を下げてください。たとえば、“ohwxman” だけが Brad Pitt のように見えるべきだとモデルに教えたいが、すべての “man” が Brad Pitt のように見えることは望まない場合、“man” をタグとして使わず、“ohwxman” のみでタグ付けします。これにより、学習画像が “man” タグに与える影響が減り、学習画像は “ohwxman” と強く関連付けられます。モデルは “ohwxman” について知っていることを利用しますが、それは実質的にはほとんど何もありません(注を参照)。そのため、ほぼ学習画像だけから知識を構築することになり、非常に強い関連付けが作られます。
- 注: これは理解しやすくするために単純化しています。実際にはこれは “ohwx” と “man” という 2 つのトークンにトークン化されますが、これらのトークンは学習上は強く相関します。そのため、キャプション内で “man” をトークンとして使って学習する場合と比べると、“man” という全体クラスへの影響は依然として抑えられるはずです。関係する数学はかなり複雑で、このドキュメントの範囲を大きく超えています。
一貫したキャプション作成
- すべての学習で一貫したキャプションを使用してください。これにより、プロンプトでコンセプトを一貫して呼び出しやすくなります。
- データセット全体で一貫性のないタグを使用すると、教えようとしているコンセプトをモデルが把握しにくくなります。これは本質的に、コンセプトそのものと、そのコンセプトを表す複数の言い回しの両方を学習させることになるためです。1 つの用語の下でコンセプトだけを学ばせる方がはるかに良いです。
- たとえば、脚を空中に上げた人物という 1 つのコンセプトを教えたい場合、“legs raised in air” と “raised legs” の両方を使うのはおそらく望ましくありません。プロンプト内でこのポーズを一貫して呼び出せるようにしたいので、キャプションの付け方を 1 つ選んでください。
反復を避ける
- 可能な限り反復は避けてください。プロンプトと同様に、単語を繰り返すとその単語の重みが増えます。
- たとえば、“background” という単語を繰り返しすぎると、“background” を含むタグが 3 つできてしまうかもしれません(例: simple background, white background, lamp in background)。背景の重みを低くしたいにもかかわらず、意図せず重みを大きく増やしてしまっています。これらは結合するか、言い換えた方がよいでしょう(例: simple white background with a lamp)。
順序に注意する
- 繰り返しになりますが、プロンプトと同じように、タグの相対的な重み付けには順序が重要です。
- キャプションに対して普段使う特定の構造や順序を持つことで、データセット内の画像間でタグの相対的な重みを維持しやすくなり、学習プロセスに役立つはずです。
- 標準化された順序があると、その構造でのキャプション作成に慣れるにつれて、全体のキャプション作成プロセスも速くなります。
モデルの既存知識を有利に活用する
- モデルはすでにそれなりに良い結果を生成でき、あなたがプロンプトで指定している内容も妥当な範囲で理解しています。プロンプト内でうまく機能している単語を使ってキャプションを付けることで、それを活用してください。
- 説明的な単語を使いたいところですが、あまりに難解またはニッチな単語を使うと、既存知識をあまり活用できない可能性があります。たとえば、“sarcastic” と言うことも、“mordacious” と言うこともできます。モデルは “sarcastic” が伝える意味についてある程度の考えを持っていますが、“mordacious” が何を意味するかはおそらくほとんど分かりません。
- 逆の視点から見ることもできます。“mordacious” という概念を教えようとしている場合、“sarcastic” を伝える画像で構成されたデータセットを用意し、それらに “sarcastic” と “mordacious” の両方のタグを並べてキャプション付けするかもしれません(相対的な重みが近くなるようにするためです)。
キャプション作成 – 構造
これは主に人物やキャラクター向けなので、ファンタジー風景のようなものにはあまり適用しにくいかもしれませんが、何らかの着想にはなるかもしれません。一般的な形式
緩やかな連想
- ここには、その画像に対して最後に思い浮かぶ緩やかな連想を入れます。
- これは頭に浮かぶものであれば何でもよく、通常は画像を見たときに感じる「感情」や、描かれていると感じる概念です。画像内に存在している限り、基本的には何でも構いません。
- これは緩やかな連想のためのものであることを覚えておいてください。画像が非常に明確に何らかの感情を描いている場合は、より高い重みを与えるために、キャプションの先頭に近い位置でタグ付けした方がよいかもしれません。
- 例: happy, sad, joyous, hopeful, lonely, sombre
1 枚の画像の完全な例
これは、safebooru から選んだ 1 枚の画像にどのようにキャプションを付けるかの例です。この画像のスタイルを学習し、それを “ohwxStyle” タグに関連付けたいと仮定します。また、データセット内にはこのスタイルの画像が多数あると仮定します。 サンプル画像: https://safebooru.org/index.php?page=post&s=view&id=3887414- グローバル: ohwxStyle
- 種類または視点: anime, drawing, of a young woman, full body shot, from side
- アクション語: sitting, looking at viewer, smiling, head tilt, holding a phone, eyes closed
- 被写体の説明: short brown hair, pale pink dress with dark edges, stuffed animal in lap, brown slippers
- 注目すべき詳細: sunlight through windows as lighting source
- 背景または場所: brown couch, red patterned fabric on couch, wooden floor, white water-stained paint on walls, refrigerator in background, coffee machine sitting on a countertop, table in front of couch, bananas and coffee pot on table, white board on wall, clock on wall, stuffed animal chicken on floor
- 緩やかな連想: dreary environment