---
tags: NTUST
title: 初次嘗試 Dreambooth
---
<style>
#doc{
font-size:18px;
line-height:1.7;
}
</style>
## Dreambooth 以及與 Lora 的粗淺效果比較
Dreambooth 是 google 於 2022 年提出用於對 diffusion model 做 finetune 的技術,且號稱只需要 3~5 張圖片就有一定的效果,剛好在之前也已經有人將它做成 stable diffusion webui 的 extension 了,想說來試試看它的效果🤔。
<div style="text-align:center; font-size:14px">

只需要提供大約3~5張特定物體的圖片,Dreambooth 能有效學習該物體的特徵
</div>
### 在 Dreambooth 之前...
在之前小弟我用 stable diffusion 時,從網路上抓了一些各方面都畫的不錯的模型後,如比較有名的像是:AbyssOrangeMix、Toonyou 之類的,**通常**都不能直接畫出你想要的角色。比如說我想畫一張手遊天尊--蔚藍檔案裡面的角色"天童愛麗絲",用網路上找到的模型
輸入角色名字 *prompt : blue archive , tentou arisu*,興奮地等待生圖,結果:
<div style="text-align:center;">

</div>
...
這...這是誰,這不是愛麗絲阿 ಥ_ಥ ! ~~反倒比較像是隔壁星穹鐵道的黑塔~~
不過這當然也合理,訓練素材百百種,二次元紙片人更是多倒數不清,模型訓練時為了保持語意清晰也不太會加入角色名字。但是,如果你輸入一些非常有名,且已經出現很久的角色名字例如 *hatsune miku* ,有機會從大模型之中直接白嫖到你要的角色。
<div style="text-align:center; font-size:14px">

prompt : (masterpiece, best quality, ultra-detailed, highres),
depth_of_field, perfect face, hatsune miku , 1girl, high lighted, full_body, standing, shiny
</div>
### 在 Dreambooth 之後...
無法準確畫出想要的角色該怎麼辦 ? 通常這時候我們可以使用 Lora 模型來去輔助指定。儘管現在有諸如 Civitai,hugging face 等用於專門分享模型的網站,上面已經有許多知名角色的 Lora,但對於一些比較冷門,或甚至是自創的角色可能就有點困難。
當然你也可以自己訓練一個 Lora ,一個 Lora 模型的大小通常是在100~200MB左右,訓練時所需要的 VRAM 要 8GB 以上;另一方面 Dreambooth 是由現有的大模型去做 finetune,輸出的也會是一個大模型,至於模型大小的規律小弟目前還不太清楚@@,以我的訓練結果為例:
- 原模型2GB,輸入圖片21張做 150 個 epoch,**沒有**勾選 half model 練完後變 3.7 GB
另外訓練時所需要的 VRAM 要 12GB 以上。
那麼,同樣都能繪製特定物件,Lora 跟 Dreambooth 的成效差距如何呢?
### Lora 與 Dreambooth 的效果對比...
為了比較的公平性:
- 使用 Lora 的模型與 Dreambooth finetune 前的模型我們選相同的,這邊我用的是 AbyssOrangeMix3_aom3a1b
- 使用相同的訓練資料集
- 使用相同的 prompt
- 其他如 CGF scale,圖片 size 等參數均相同
<div style="text-align:center; font-size:14px;">

輸入的訓練資料集,512x512 的圖片 21 張
</div>
### 效果
#### 單純繪製同一人物
使用 prompt:
(masterpiece, best quality, ultra-detailed, highres), depth\_of\_field, perfect face, 1girl, hight lighted, neon lighting , full_body, standing, shiny , flower in hair
<div style="display: flex;">
<div style="text-align:center; font-size:18px; padding: 15px; width: 50%;
">
<img src="https://lh4.googleusercontent.com/HdBq74J6GWX1dyqAyvpEG_E7Hv-pgGTx7ZTdMtATl2gwlbppKTRxRhGqju2iosaXudgHLlVAUTcofxEAcxHdoeOtNOF20fzm3SXUl5GnVaiMiaW93jNtSPpEsI0Q99n5uLIdfPKgO9rxZI_cCtby6TWD=s2048" alt="Image 1">
Lora
</div>
<div style="text-align:center; font-size:18px; padding: 15px; width: 50%;
">
<img src="https://lh3.googleusercontent.com/h7JiRxAg82nqSTNWfMX-SbopkgyO7VXZlRFcezIwXHE1lNUSQybFPIoJIaWT-LalOxdYP7RSGULU2PWHiZNx0YrFnI_eM1xuEqkTP41NmF2ecc0e_BDRTkD6U_TI_Ce_VmC3ezi0SyL-VrXsILHN6O92=s2048" alt="Image 2">
Dreambooth
</div>
</div>
Dreambooth 的輸出更加多樣,且與 原素材相差較遠
#### 指定背景
使用 prompt:
(masterpiece, best quality, ultra-detailed, highres), depth\_of\_field, perfect face, 1girl, hight lighted, **in forest** ,full_body, standing, shiny , flower in hair
<div style="display: flex;">
<div style="text-align:center; font-size:18px; padding: 15px; width: 50%;
">
<img src="https://lh4.googleusercontent.com/VDrJIDDpDy6hLhOtUO0w9KDZ1asVCzg6jjMl6rwIkGdXf5NErgsHM7xixyd0sgwZs6lOzAfN5THjeAFku30Lst9dfQaPg2dXWQVa6ls5Z46RzZR_c6KmEWF3EIChftAWDBbKmmUarXRF90zlNYgRzIUg=s2048" alt="Image 1">
Lora
</div>
<div style="text-align:center; font-size:18px; padding: 15px; width: 50%;
">
<img src="https://lh4.googleusercontent.com/UtM6I9zOTENFG3bogowrw0zjZpLvO75G4BDshHOiMnuWJGk4RwUtrNY738msZEKl5JcdompmWpuECJ7ky2mrh679jLVK0abZJ4KmBTjXgAAJjgNsc1dhWoERGXw4vEo7rFHby5TMHM6t4DjUqWmKmfqg=s2048" alt="Image 2">
Dreambooth
</div>
</div>
Lora 無法有效修改背景,輸出全都是和訓練資料集相同的白背景
#### 配件修改
使用 prompt:
(masterpiece, best quality, ultra-detailed, highres), depth\_of\_field, perfect face, 1girl, **red ribbon**, hight lighted, in forest , full_body, standing, shiny
<div style="display: flex;">
<div style="text-align:center; font-size:18px; padding: 15px; width: 50%;
">
<img src="https://lh4.googleusercontent.com/Cz-Jvklse6dbp_d-knmiHtvVfzowuS0L6ihxk9mONA8PCMopRmauLeOSfAGewaWjuK1m-WHsWvWE9xDdj5OhXfoCJ6L7KjbC1RWjJK6W_kB7TBtAmdGG_p-MQQsn5uXVmJIy41_E29hRoE0e8zXxdJmi=s2048" alt="Image 1">
Lora
</div>
<div style="text-align:center; font-size:18px; padding: 15px; width: 50%;
">
<img src="https://lh4.googleusercontent.com/7-K0DYY6aLM26KjKr3Y59j_0Xc-iZZWBYnru65BOM4Pu2rUJVsOIugetUJb70sGbJp2B5kS7Fo6lf2S7A4DXuwoexeKRnBiUZsk1KWLymL4sxN18ipBj7cGxq5D3eavk5-cTkYzJ2BdelaI-WY7NirQu=s2048" alt="Image 2">
Dreambooth
</div>
</div>
Lora 的輸出還是非常相似,且不能做出較精準的配件修改
---
可以看到在相同訓練素材之下 Lora 的成果很容易與訓練資料集相似,另一方面 Dreambooth 能夠更好的抓住重點,畫面中的非主體所造成的語意偏移(language drift)也有明顯改善。換句話說,Dreambooth 能夠更好的理解,需要記憶的主體是什麼,不會連著其他非主體(如:背景)產生錯誤的認知。
### 額外加碼測試角色套用
Dreambooth 更準確的理解主體,也意謂著當我們需要修改圖片時,就更加 flexible,這邊嘗試使用 img2img 的功能,將另外一位角色的圖修改成我們要的樣子,單純使用 img2img 不太容易控制輸出的輪廓,所以以下的輸出圖均**有搭配 controlNet 輔助**。
使用 prompt:
(masterpiece, best quality, ultra-detailed, highres), depth\_of\_field, perfect face, 1girl, hight lighted, full_body, standing, shiny
<div style="display: flex;">
<div style="text-align:center; font-size:18px; padding: 15px; width: 33%;">
<img src="https://lh5.googleusercontent.com/7dJXGPsuG50LFJoD6wtbnJ1Roo9-HpEwY6MVA35VYj3kUs9W_fNROkPJhkQtGReHU_EfhY65DRpBknWRX8ZH1x9j73a0PUE4M3kjRRQQc066hTIGZevirb-FIJ34TaGCmMGtWYYP3I8s-1hdFKyBiXQH=s2048" alt="Image 1">
</div>
<div style="text-align:center; font-size:18px; padding: 15px; width: 33%;">
<img src="https://lh5.googleusercontent.com/VF-PQo-5q_g-_6gXQfWC92vHkXxv2vttvoKeVOpzKGbFFtgv3LLx3pvZayHIFTT-k2z9AL6aJxEecLaCYQoFzc9GOMQMEF2zqlGQd5Qy3KAlJ74TK3uJZDXJNChn_gby8JbGZEIJoX5NlTPtvhxiCLmM=s2048" alt="Image 2">
</div>
<div style="text-align:center; font-size:18px; padding: 15px; width: 33%;">
<img src="https://lh5.googleusercontent.com/rGBaY1ZrRs7cJ6DJ4lGTRcxhEJZPlsxuAgXgBDF4jZ3hwlTWT9NBy7WqwAIstl0E8dg_gBOHbduK62uC5WsgLgm8mIL1e5ryzlWjBvNwexfla2fSDd2GJxN-HwFB0ekOEmKLxXNNElpeaAAPdwCa_Yap=s2048" alt="Image 3">
</div>
</div>
<div style="display: flex;">
<p style="text-align:center; font-size:18px; padding: 15px; width: 33%;">
原圖 + conrtolNet
</p>
<p style="text-align:center; font-size:18px; padding: 15px; width: 33%;">
Lora
</p>
<p style="text-align:center; font-size:18px; padding: 15px; width: 33%;">
Dreambooth
</p>
</div>
Lora 有明顯原素材的痕跡,且畫面有點撕裂效果不太好,當然我們可以將 Lora 單獨的權重調低,減少它對畫面造成的不協調感,但這同時也會使我們想要的角色特徵減少,甚至消失。而 Dreambooth 除了手持槍以及右手的部分出現錯誤,其他則是很好地將角色的特徵融合進原圖中,~~還順便換了套衣服非常有趣~~。
最後放上一些同樣也是角色套用的結果:
<div style="display: flex;">
<div style="text-align:center; padding: 15px; width: 50%;">
<img src="https://hackmd.io/_uploads/HkSikc_1T.jpg" alt="Image 1">
</div>
<div style="text-align:center; padding: 15px; width: 50%;">
<img src="https://hackmd.io/_uploads/BkX91cdy6.png" alt="Image 2">
</div>
</div>
<div style="display: flex;">
<p style="text-align:center; font-size:18px; width: 50%;">
原圖 + conrtolNet
</p>
<p style="text-align:center; font-size:18px; width: 50%;">
Dreambooth
</p>
</div>
---
<div style="display: flex;">
<div style="text-align:center; padding: 15px; width: 50%;">
<img src="https://hackmd.io/_uploads/SJa91c_JT.jpg" alt="Image 1" style="height:400px">
</div>
<div style="text-align:center; padding: 15px; width: 50%;">
<img src="https://hackmd.io/_uploads/r17jbc_kT.png" alt="Image 2"style="height:400px">
</div>
</div>
<div style="display: flex;">
<p style="text-align:center; font-size:18px; width: 50%;">
原圖 + conrtolNet
</p>
<p style="text-align:center; font-size:18px; width: 50%;">
Dreambooth
</p>
</div>
---
<div style="display: flex;">
<div style="text-align:center; padding: 15px; width: 50%;">
<img src="https://hackmd.io/_uploads/SJwcNq_ka.jpg" alt="Image 1"style="height:400px">
</div>
<div style="text-align:center; padding: 15px; width: 50%;">
<img src="https://hackmd.io/_uploads/SyzcN5u16.png" alt="Image 2"style="height:400px">
</div>
</div>
<div style="display: flex;">
<p style="text-align:center; font-size:18px; width: 50%;">
原圖 + conrtolNet
</p>
<p style="text-align:center; font-size:18px; width: 50%;">
Dreambooth
</p>
</div>
:邦邦喀邦~愛麗絲已成功模仿出大家了