Automatic1111 DreamBooth extension을 학습 하는 과정을 소개하겠습니다.
아래 DreamBooth Extention wiki 에서 제공하는 튜토리얼을 참고하여 작성한 글입니다.

0. DreamBooth란?
아래의 예시처럼 어떤 특정한 Object
를 AI 모델(Stable Diffusion)
에게 학습 시키는 tranfer learning
입니다.
출처: https://dreambooth.github.io
앞서 설명한 AI, Stable Diffusion
은 Stability AI라는 회사에서 방대한 양의 데이터로 학습한 거대한 생성 AI입니다.
따라서 sunglasses 가 무엇인지, backpack이 무엇인지 이미 알고 있습니다.
DreamBooth
는 Input images
로 주어진 아래와 같은 갈색 선글라스와 보라색 가방을 AI가 이해하고 이를 생성하도록 하는 방법입니다.
1. 모델 준비
본 튜토리얼에서는 Stable Diffusion v1.5 를 사용합니다.
기본 모델 사용
- 아래와 같이 버튼을 눌러 모델을 다운로드 받습니다.
[optional] Linux, mac 환경이라면 화살표에서 오른쪽 마우스를 클릭해 링크를 복사하고 wget 명령어로 직접 다운로드 받을 수 있습니다.
- 다운로드 받은 파일을
models/Stable-diffusion
폴더에 넣습니다.
커스텀 모델 사용하기
Stability AI가 강력한 모델을 무료로 배포하였기에 수많은 사람들이 본인이 원하는 이미지를 생성하기 위해 각자 모델을 더 학습을 시켰습니다.
그 중엔 기본 모델보다 더 뛰어난 모델들이 많습니다. 또한 이를 아래와 같은 사이트에서 공유하기도 합니다.
그 중 DreamShaper라는 모델을 사용하도록 하겠습니다. 선정 기준은 제 마음😃 입니다.
2. 데이터 준비
좋은 데이터셋의 특징 | 나쁜 데이터셋의 특징 |
---|---|
고해상도 | 저해상도 |
학습하는 Object 를 가리지 않는 이미지 | Object 가 다 나오지 않게 엉망으로 잘린 이미지 |
단순한 이미지 | 여러 Object가 나오는 이미지, (e.g. 요정, 초콕, 양말이등 다양한 고양이 등장) |
다양한 이미지 (배경/빛/옷/표정/포즈 등등) | 반복되거나 아주 비슷한 이미지들 |
학습하고자 하는 Object 가 메인이 아닌 이미지 |
상명대학교에 사는 귀여운 고양이, 요정이
를 학습 시켜보겠습니다.
데이터 준비 단계 | 준비 과정 |
1. | 학습 데이터 준비 (이미지 구하기) |
2. | 전처리 (해상도 512x512 사이즈로 통일) |
3. | Caption(이미지에 대한 설명) 준비 |
- 전처리 (해상도 512x512 사이즈로 통일)
아래 링크에 접속하여 1. 에서 준비했던 이미지들을 업로드 합니다. (드래그 앤 드롭)
BIRME - Bulk Image Resizing Made Easy 2.0 (Online & Free)BIRME is a flexible and easy to use bulk image resizer. It can resize multiple images to any specific dimension and crop images if necessary. It's an online tool and you don't need to download or install on your computer. BIRME is absolutely free to use. It works on both Mac and Windows machines.https://www.birme.net/?target_width=512&target_height=512
아래 사진과 같이
Width
,Height
를 512, 512로 맞춥니다.각 사진의 선명한 부분은 남길 부분, 하얗게 블러 처리된 부분은 정사각형 이미지를 만들기 위해 잘라낼 부분입니다. 적절히 선명한 부분을 움직여 요정이가 잘 나오도록 조정합니다.
그리고 우측 메뉴에서
SAVE AS ZIP
을 눌러 전처리된 이미지를 다운로드 받습니다.위와 같이 zip 파일이 다운로드 되고 이를 압축해제합니다.
압축 해제한 위 이미지들을
학습
과3. Caption
에 사용합니다.
- Caption(이미지에 대한 설명) 준비 💡요정이라는 고양이를 학습시키기 때문에 Caption에 반드시 “Instance word”,
yojeong
(=object) 이라는 단어가 중복돼야합니다. (e.g. ayojeong
sitting on the ground)이미지의 캡셔닝을 도와주는 고마운 툴이 있습니다. 아래 링크에 접속하여 이를 활용합니다.
Comparing Captioning Models - a Hugging Face Space by nielsrDiscover amazing ML apps made by the communityhttps://huggingface.co/spaces/nielsr/comparing-captioning-models
각 이미지를 아래에 드래그 앤 드롭합니다. 그리고
Submit
을 클릭합니다.그러면 아래와 같이 오른쪽에 Caption이 생성됩니다.
저는 여기서
a cat laying on the ground next to a metal pole
이 가장 디테일 하여 이를 사용하도록 하겠습니다.여기서
cat
앞에yojeong
을 추가하겠습니다.해당 text를 아래와 같이 이미지의 이름과 같은 .txt 파일을 생성하여 저장합니다.
위와 같이 파일명을 동일하게 맞춥니다. 다른 파일에 대해서도 똑같이 적용해줍니다.
최종 caption의 예시는 아래와 같습니다.
캡션 a yojeong
cat laying on the ground next to a metal polea yojeong
cat laying under a cara yojeong
cat is standing on a stonea yojeong
cat is sitting on a concrete blocka yojeong
cat sitting on a concrete road.… 💡반드시!<Instance Token>
과 <Class Token>이 들어가야합니다.
3. 학습 파라미터 셋팅
단계 | 과정 |
1. | DreamBooth Extension 설치 |
2. | 학습할 DreamBooth model 생성 |
3. | 파라미터 설정 |
- DreamBooth Extension 설치
Pass
- 학습할 DreamBooth model 생성
- 상단 Tabs 에서
Dreambooth
를 클릭합니다.
- Name을 설정합니다. 본인이 하고싶은 이름을 정합면 됩니다.
512x
Model을 선택합니다. (SD v1.5를 사용하기 때문)
- 앞서 설치한 모델,
DreamShaper
를 선택합니다. (확장자명은 safetensors, ckpt 상관없습니다.)
Create Model
버튼을 눌러 모델을 생성합니다.
우측
Output
tab에 아래와 같이 출력되면 모델이 잘 생성된 것입니다. - 상단 Tabs 에서
- 파라미터 설정
Settings tab
셋팅 값General
LoRA를 사용할 것이 아니기 때문에 아무것도 선택하지 않습니다.
Intervals
파라미터 값 설명 Training Steps Per Images (Epochs) 100 몇 Epochs 학습 시킬지? Pause After N Epochs 0 몇 Epoch 학습 이후에 일시 중지할지? (정지하지 않기에 0) Amount of time to pause between epochs 0 각 epoch 마다 쉬는 시간 (안쉬기 때문에 0) Save Model Frequency (Epochs) 5 몇 epoch 마다 모델을 저장할지? Save Previews Frequency (Epochs) 5 몇 epoch 마다 preview(학습 중 생성하는 이미지 결과)를 저장할지 Batching, Learning Rate, Image Processing
기본 셋팅 그대로
Advanced
아래 파란 박스 안에 있는 부분을 변경하는 것 외에 모두 기본 값 사용
Memory Attention default Step Ratio of Text Encoder Training 0 Scale Prior Loss check & 0.75
Concepts
셋팅 값Directories
파라미터 설명 값 Dataset Directory 데이터셋의 폴더 경로 앞서 생성한 요정 데이터셋의 경로를 주면 된다. Classification Dataset Directory Class 이미지가 저장될 경로 비워놔도 괜찮다. Filewords
파라미터 설명 값 Instance Token yojeong
이라는 단어를 고양이 요정이와 매칭시켰었다. 그yojeong
이라는 단어yojeong
Class Token 요정이는 cat
이다. 모델을 이미 이를 알고 있다. 모델이 이미 알고 있는cat
과yojeong
을 구분하기 위해 학습시 사용하는 이미지를 생성하기 위해 사용하는 단어cat
A
yojeong
cat sitting on the ground
라는 prompt 로 요정이를 학습한다고 했을 때 Class Token이 cat 이라면A
cat
sitting on the ground
라는 prompt로 class 이미지를 생성한다.Prompts
파라미터 설명 값 Instance Prompt 학습 데이터를 표현하는 prompt. 여기선 직접 생성한 prompt를 사용하기 때문에 [filewords]
를 사용한다.[filewords]
Class Prompt class image(yojeong은 cat 이기 때문에 cat 이미지)를 표현하는 prompt. 자동으로 Instance Prompt에서 앞서 정의한 Instance Token, yojeong
을 뺀 prompt를 사용하기 때문에 [filewords] 로 둔다.[filewords]
Sample Image Prompt 학습 중간 중간 이미지 생성을 얼마나 잘하는지 파악하기 위해 사용하는 prompt A yojeong cat wearing hat, by Tomer Hanuka
Classifiction Image Negative Prompt class image를 사용하는데 사용하는 negative prompt low quality, worst quality
Sample Prompt Template File - - Sample Negative Prompt - - Image Generation
파라미터 설명 값 Class Images Per Instance Image 각 instance image 별 생성한 class image의 수 4 ( Class Batch Size
의 배수)Classification CFG Scale class 이미지를 생성할 때 얼마나 프롬프트를 강하게 따라갈지에 대한 값 7.5 (default) Classification Steps 얼마나 많은 Step으로 이미지를 생성할지 40 (default) Number of Samples to Generate 학습 중 얼마나 많은 샘플 이미지를 생성할지 4 (크게 상관 X) Sample Seed - -1 Sample CFG Sclae - 7.5 (default) Sample Steps - 20
4. 학습
Train 버튼 클릭.
우측 Output tab을 보면 중간중간 모델이 생성하는 이미지들을 확인할 수 있다.

Uploaded by N2T