DreamBooth(ドリームブース)学習

DreamBooth学習は、特定の人や物を、AI画像生成モデルに覚えさせる学習方法で、Stable Diffusionなどの既存モデルに対して、たった数枚の写真(通常3~30枚)を使って、対象の外見や特徴を学習させることができます。
これにより、その人・その物を自由なポーズやシーンで生成可能になります。
この記事では、Kohya_ssなどのツールで使用できる、DreamBoothについて、解説しています。
DreamBoothでできること
できること | 具体例 |
---|---|
人物やキャラクターの再現 | ペット、コスプレ、自作キャラなどを忠実に生成できるようになる |
少量データで学習可能 | 数枚の写真で特定の対象を覚えさせる(数十万画像の学習不要) |
背景や衣装のバリエーション生成 | 例:「自分のキャラが宇宙で戦う」「猫がスーツを着る」など |
商品写真の応用 | 自作の雑貨や衣類を、さまざまなシーンで画像化してPR可能 |
アートスタイル適用 | 覚えさせた対象を、浮世絵風や油絵風などにも変換できる |
DreamBoothの特徴
項目 | 内容 |
---|---|
モデルサイズ | baseモデル(例:v1-5、SDXL)に上書きする形 |
学習対象 | 特定の人・キャラ・物体など |
学習画像数 | 通常3〜30枚(最適10〜20枚程度) |
学習時間 | 環境やパラメータによるが、RunPodで1〜2時間前後 |
モデル保存形式 | .ckpt や .safetensors 、またはLoRA形式でも保存可能 |
キャプション | 主に「クラス名」と「特定名詞」(例:a photo of zwx dog )が必要 |
よくある使い方例
- クリエイター:自作キャラをAIで描いてもらう
- コスプレイヤー:自分の姿を元に別ポーズ生成
- 企業:商品やキャラのプロモ素材量産
- 個人:ペットのさまざまな表情や場所での写真風画像生成
DreamBooth vs LoRAの違い(ざっくり)
DreamBoothとLoRAは「分類としては同じ“ファインチューニング(追加学習)手法”の一種」ですが、仕組みや特徴は大きく異なります。したがって、「同じ分類に入るが、用途や目的・重さ・適用方法は別」と考えるのが正確です。LoRAはDreamBoothの代替・簡易版として登場したものですが、今ではLoRAのほうが主流になりつつあります。
比較項目 | DreamBooth | LoRA(Low-Rank Adaptation) |
---|---|---|
モデル本体 | 元のモデルに直接上書きする | 元のモデルはそのまま、追加学習ファイルだけを使う |
ファイルサイズ | 数GB以上(通常3〜8GB) | 数MB〜100MB前後(軽量) |
学習対象 | 人物・キャラ・物体の「再現性重視」 | スタイル・表情・ポーズなど「調整性重視」 |
環境負荷(VRAM) | 高い(16GB以上推奨) | 軽量(8GBでも可能) |
再利用のしやすさ | 別モデルとの併用が難しい | 複数LoRAの組み合わせが簡単 |
学習方法 | 単体画像でも可・画像数は多め | キャプション付き画像推奨・構造も必要 |
推論時の自由度 | 出力が固定されがち(狙ったキャラしか出ない) | 出力の調整がしやすい(強さを調整できる) |
DreamBoothでの学習
- 自分の顔写真10枚を使って、「自分」を完全再現するモデルを作る
→ その人の顔・髪型・肌色などをモデルに埋め込むような感覚。
→ 生成される画像は、どれも「自分の顔」になる。
LoRAでの学習
- 自分のキャラ絵20枚程を使って「そのキャラの絵柄・特徴・雰囲気」を覚えさせる
→ いろんなポーズや表情で出力できるが、他キャラにも適用可能。
→weight=0.7
などで「混ぜる」ことが可能。
使い分けのコツ
目的 | おすすめ |
---|---|
自分の顔やペットを忠実に再現したい | DreamBooth |
キャラの絵柄や表情、服装のパターンを自由に出したい | LoRA |
軽量で複数併用したい | LoRA |
1つのモデルに全て詰め込みたい | DreamBooth(ただし容量が重い) |
たとえば「キャラクターを覚えさせたい」場合
ポイント | 内容 |
---|---|
ポーズのバリエーション | 正面・横・後ろ・斜めなど 10〜20パターン |
表情のバリエーション | 無表情・笑顔・怒り・驚きなど |
衣装・色違いも可 | 学習用として許容される(ただしLoRAは統一した方が安定) |
背景は白・透過が理想 | 背景ノイズを減らしてモデルがキャラに集中しやすくなる |
キャプション(txt)も忘れずに | a photo of sks1 girl のように「トリガーワード+種別」 |
→ これらを合わせて最低10枚、できれば20〜30枚が理想的です。
DreamBoothの為のデータセット
フォルダ構成(例)
/dataset/
├── char1/
│ ├── img001.png
│ ├── img002.png
│ ├── img003.png
│ ├── img001.txt ← キャプション(LoRAで使用)
│ ├── ...
- 画像ファイル(.png / .jpg)
- 可能ならキャプション(.txt)
この構成は LoRAでもDreamBoothでも使えます。
項目 | LoRA | DreamBooth |
---|---|---|
キャプション必須? | ほぼ必須(タグ精度に関わる) | なくてもOK(*トリガーワードとクラスで十分なことも) |
使う語句 | 複数タグ(1girl, hat, smile…) | a photo of sks1 character など簡潔な構文 |
画像の精度 | 背景あっても可 | できるだけクリーン(白背景推奨) |
正則化画像(optional) | 通常不要 | DreamBoothでは「学習の偏りを防ぐため」に正則化画像が必要な場合もある(後述) |
トリガーワード(固有トークン)
トリガーワード(固有トークン) は、絶対に必要というわけではありませんが、非常に強く推奨される要素です。
目的 | 説明 |
---|---|
他のデータと混同しないようにするため | 例えば「girl」だけだと、世の中の「女の子」の平均像になってしまう。sks1 を使えば、「この子=sks1」という固有キャラとして覚えさせられる。 |
画像生成時に呼び出すトリガーになる | 学習した後は、sks1 をプロンプトに入れることで、そのキャラを出すことができる。 |
キャラの出力精度が大きく変わる | 固有トークンがあるだけで再現度・安定性が格段に上がる。 |
LoRAでもDreamBoothでも「ほぼ必須」と考えるとよい
トリガーワードがなければ「何を学習したか」がぼやけてしまい、
出力もランダム気味になりやすいです。
LoRAの場合
- 必要性:多くの場合必要。ただし、既存のタグ(例:
1girl
,long hair
,smile
など)だけで出せる場合は省略も可。 - 目的:学習した内容を特定のキーワードで呼び出せるようにする。
- 例:
sks1 girl
,mychar
,originalcat
など、自分で決める。caption
ファイル(txt)やtrain_data.toml
などに含めておく。
DreamBoothの場合
- 必要性:基本的に「必須」です。
- 目的:全く新しいキャラクターやスタイルを、他の一般的なプロンプトから区別するため。
- 例:
photo of sks1 person
,painting of sks1 dog
など。- 「sks1」はあくまで一例で、自分で指定可能(
abcxyz
,mylola
などでもOK)。 - ただし 「sks1」などの無意味な単語にしておくと他と被らず安全 です。
トリガーワードの命名ポイント
- 既存のタグ(Danbooru、Prompt)と被らない名前にするのがコツ。
- 半角英数字で3〜6文字程度が一般的。
- 学習データの全キャプションに入れておくことが望ましい。
どんな文字列でもOK!
sks1
,abc123
,sakasa01
など、他に使われていない文字列なら何でも大丈夫。- できれば 3~6文字+数字 にすると、既存トークンと被りづらい。
- 日本語は使わない方が良い(トークナイザーがうまく扱えません)
キャプション例(LoRA)
a photo of sks1 girl, short brown hair, school uniform, smiling
→ この「sks1」が「この画像はこのキャラのもの」とAIに伝えるカギになります。
生成時に「トリガーワード+補足プロンプト」で構成。
例:sks1 girl in school uniform, masterpiece, 1girl, smile
など。
DreamBooth特有の「正則化画像」とは?
- 正則化(regularization)画像とは、一般的な同じクラスの画像のこと。
- 例:あなたのキャラが「anime girl」なら、他の一般的な「anime girl」の画像を使う。
- 目的:AIが「sks1 = anime girl」と覚えてしまわないよう、カテゴリの平均像を維持するために使います。
| フォルダ例(Kohya GUI用) |
/dataset
/my_character
image1.png(自作キャラ)
image2.png
...
/regularization
/person_ddim
person1.png(一般的な「anime girl」画像など)
person2.png
...
※学習時には、正則化画像のフォルダパスを指定します
instance:自分のキャラ画像
regularization:正則化用の一般画像(枚数=instanceと同じが理想)
caption不要でも学習可能(Kohya GUIの--caption_extension
なしでOK)
--prior_loss_weight
や--class_data_dir
を使う場合に使用- ➡ ただし最近のLoRAベースのDreamBoothでは 正則化画像なしでも十分うまくいくケースが多い
LoRA / DreamBooth 共通の構成ルール
学習用画像
: 自キャラ画像(LoRAもDreamBoothも同様)正則化画像
: DreamBooth時のみ必要(LoRAではオプション)class name
としてフォルダ名を揃える必要あり(例:sks1
とanime_512
)
Kohya GUIおすすめ学習パラメータ(LoRA or DreamBooth)
項目 | 8GB (低VRAM) | 12〜16GB (中VRAM) | 24GB以上 (高VRAM) |
---|---|---|---|
resolution | 512 | 512〜640 | 640〜768 |
batch_size | 1 | 2〜4 | 4〜8 |
max_train_steps | 1000〜2000 | 2000〜4000 | 3000〜6000 |
learning_rate | 1e-4 | 1e-4〜5e-5 | 5e-5 |
network_dim (Rank) | 4〜8 | 8〜32 | 32〜64 |
network_alpha | Rankと同じか半分 | 同じ | 同じ |
save_every_n_epochs | 1 | 1〜2 | 1〜2 |
optimizer_type | AdamW8bit | AdamW8bit | AdamW |
mixed_precision | bf16 or fp16 | bf16 | fp16 |
DreamBooth系のフルモデル学習手法
DreamBoothのようにStable Diffusionモデルに新しい情報(人物・スタイル・キャラクターなど)を学習させるための手法(ファインチューニング手法)には、他にもいくつかの類似手法があります。
手法名 | 概要 | 備考 |
---|---|---|
DreamBooth | 元のモデルを直接改変し、人物やキャラを強く反映 | 忠実な再現が可能、モデルサイズは大きい |
Textual Inversion | 画像に固有の単語(トークン)を関連付ける | 非常に軽量だが、再現力はやや弱い |
Native Fine-Tuning(ノーマルFine-tune) | DreamBoothよりさらに自由度の高い全体学習 | 上級者向け。LoRAよりも自由度は高いが重い |
DreamBoothやFine-tuneは「モデルを書き換えるタイプ」で、再現性に優れますが重く、用途が限定されます。