가끔 드림부스 쓰면 좋겠지? 라는 글이 올라와서 그냥 간단하게 작성해봤어.

https://dreambooth.github.io/

드림부스는 단순히 어떤 특정 프로그램을 의미하는것이 아닌, 특정 주제에 대해서 파인튜닝 하는 방법을 의미해. 


https://github.com/huggingface/diffusers/tree/main/examples/dreambooth

구글에서 공개한 방법이지만 구글은 프로그램을 공개하지 않았기에 보통은 huggingface의 Diffusers를 기반으로 하고 있어.


https://github.com/JoePenna/Dreambooth-Stable-Diffusion

먼저 드림부스 보급을 시도한 버전은 JoePenna 버전으로 24GB 이상의 VRAM을 요구해. 지금은 가장 클래식한 드림부스 프로그램으로 취급받아.


https://github.com/ShivamShrirao/diffusers/tree/main/examples/dreambooth

그래서 12GB 이상의 VRAM을 요구하는 ShivamShrirao 버전이 등장했는데, 이 버전은 일부 모듈의 학습을 포기하고 VRAM 절약 기능을 붙어놓은 버전이야. 이 버전은 JoePenna 버전보다 성능이 나쁘기에 지금은 잘 사용하지 않아. ShivamShrirao 버전의 VRAM 절약 기능은 원본 Diffusers에서도 해당 기능이 추가된것으로 보여.


https://github.com/kohya-ss/sd-scripts

그러다가 8GB VRAM을 요구하는 드림부스가 등장하는데, kohya-ss 버전이야. kohya-ss도 VRAM 절약 기능을 붙어놓은 버전이야. 다만 필요한 데이터셋 구조가 huggingface의 Diffusers랑 전혀 다르고 버킷이라는 기능을 지원하는것이 가장 큰 특징이야.


이후 kohya-ss 버전 드림부스에 LoRA 기술을 접목시키면서 우리가 잘 쓰는 LoRA가 등장하였고 이 글을 작성하는 시점에서 LoRA 학습과 사용이 보편화 되었어. 그래서 kohya-ss의 LoRA 제작 방법을 조금만 손보면 바로 kohya-ss 버전의 Dreambooth 학습을 진행할 수 있어. 


만약 드림부스를 시도한다면 kohya-ss를 먼저 시도한 다음 결과가 마음에 들지 않는다면 JoePenna 버전을 시도하면 될거야. 물론 3090이나 4090 오너가 아니라면 JoePenna는 포기해야겠지만.


https://github.com/victorchall/EveryDream2trainer

한편 드림부스는 아니지만 드림부스하고 비슷한 EveryDream도 있어.