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枚を使って、「自分」を完全再現するモデルを作る
→ その人の顔・髪型・肌色などをモデルに埋め込むような感覚。
→ 生成される画像は、どれも「自分の顔」になる。
仕組み:
ベースモデル(例:SD1.5 や SDXL)を「微調整」して、特定の人物・キャラ・アイテムをモデル全体に覚え込ませます。
必要なデータ:
10~30枚程度の画像でも動きますが、モデル全体を更新するので、より多く(数百枚)のデータがあると安定します。
モデルサイズ:
元のモデル(2GB前後)+DreamBooth後のモデル(同じくらいのサイズ)=数GB単位。
GPU負荷:
フルモデルを更新するのでVRAMと時間が必要(8GB以上、できれば12GB以上推奨)。
特徴:
1つのモデルに直接書き込むので再現性は高いが、柔軟性は低め。
LoRAでの学習
- 自分のキャラ絵20枚程を使って「そのキャラの絵柄・特徴・雰囲気」を覚えさせる
→ いろんなポーズや表情で出力できるが、他キャラにも適用可能。
→weight=0.7などで「混ぜる」ことが可能。
仕組み:
モデル全体を更新せず、「差分(学習した特徴だけ)」を小さな追加ファイルとして保存。
→ LoRAを読み込むと、ベースモデル+LoRAで同じ効果が得られる。
必要なデータ:
数十枚程度から学習可能。DreamBoothより少なくてもOK。
モデルサイズ:
数MB~数百MB程度(一般的には 50~200MB)。
GPU負荷:
軽量で学習できる(8GB VRAMでも可能)。
特徴:
追加・切り替えが簡単。キャラごとにLoRAを作っておけば、同じベースモデルに読み込むだけで使える。
使い分けのコツ
| 目的 | おすすめ |
|---|---|
| 自分の顔やペットを忠実に再現したい | 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は「モデルを書き換えるタイプ」で、再現性に優れますが重く、用途が限定されます。
