윈디하나의 누리사랑방. 이런 저런 얘기

글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - Sampler #4

UniPC 는 좀 더 적은 스텝에 양질의 이미지를 생성하기 위해 만들어진 샘플러다. #4에는 StableDiffusion 의 초창기 샘플러들도 있어서 잘 사용 안한다. DPM-adaptive 계열은 매우 느리기 때문에 더더욱 사용 못한다.

21. DPM fast
22. DPM adaptive
23. LMS Karras
24. DPM2 Karras
25. DPM2 a Karras
26. DPM++ 2S a Karras
27. Restart
28. DDIM
29. PLMS
30. UniPC

사용자 삽입 이미지

DPM fast


사용자 삽입 이미지

DPM adaptive


사용자 삽입 이미지

LMS Karras


사용자 삽입 이미지

DPM2 Karras


사용자 삽입 이미지

DPM2 a Karras


사용자 삽입 이미지

DPM++ 2S a Karras


사용자 삽입 이미지

Restart


사용자 삽입 이미지

DDIM


사용자 삽입 이미지

PLMS


사용자 삽입 이미지

UniPC

글쓴시간
분류 기술,IT/스테이블 디퓨전

Stable Diffusion - Sampler #3

필자가 주로 사용하는 샘플러가 DPM++ 2M SDE Heun Karras이다.

- DPM++ : DPM++ 알고리즘 사용. DPM (Fast ODE(Ordinary Differential Equation, 상미분방정식) Solver for Diffusion Probabilistic Model Sampling) 은 2022년에 Stable Diffusion 을 위해 개발된 샘플러다.
- 2: DPM 에서 Second Order 의 의미.
- M: DPM 에서 Multi Mode 의 의미
- SDE: Stochastic Differential Equation. 확률 미분방정식의 의미로 이 방정식의 메소드도 섞여 있다는 의미
- Heun: 카를 호인의 상 미분방정식 해법 메소드도 들어있다는 의미
- Karras: Karras 가 고안한 노이즈 스케줄러를 사용한다는 의미. 기본 스케줄러보다 스텝별로 더 완만하게 제거한다.

14. DPM++ 2M SDE
15. DPM++ 2M SDE Heun
16. DPM++ 2M SDE Heun Karras
17. DPM++ 2M SDE Heun Exponential
18. DPM++ 3M SDE
19. DPM++ 3M SDE Karras
20. DPM++ 3M SDE Exponential

사용자 삽입 이미지

DPM++ 2M SDE


사용자 삽입 이미지

DPM++ 2M SDE Heun


사용자 삽입 이미지

DPM++ 2M SDE Heun Karras


사용자 삽입 이미지

DPM++ 2M SDE Heun Exponential


사용자 삽입 이미지

DPM++ 3M SDE


사용자 삽입 이미지

DPM++ 3M SDE Karras


사용자 삽입 이미지

DPM++ 3M SDE Exponential



글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - Sampler #2

샘플러이름에 a 가 붙은건 Ancestral 이라는 의미다. 이 샘플러는 각각의 스텝에서 노이즈를 추가하기 때문에, 스텝이 달라지면 다른 샘플러에 비해 많이 다른 이미지가 생성된다.

5. Euler a
6. Euler
7. LMS
8. Heun
9. DPM2
10. DPM2 a
11. DPM++ 2S a
12. DPM++ 2M
13. DPM++ SDE


사용자 삽입 이미지

Euler a




사용자 삽입 이미지

Euler


사용자 삽입 이미지

LMS


사용자 삽입 이미지

Heun


사용자 삽입 이미지

DPM2


사용자 삽입 이미지

DPM2 a


사용자 삽입 이미지

DPM++ 2S a


사용자 삽입 이미지

DPM++ 2M


사용자 삽입 이미지

DPM++ SDE

글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion - Sampler #1

스테이블 디퓨전에서 샘플러는 이미지에서 노이즈를 제거하는 방법에 대한 정의다. 생성한 이미지의 품질에 직접적인 영향을 끼치기 때문에 좋은 샘플러를 사용하는건 그만큼 좋은 이미지를 생성할 수 있다는 의미다.

샘플러의 동작 원리 같은건 인터넷을 찾아보자. 필자도 잘 모른다.

이번 Stable Diffusion WebUI 1.6 (이하 SDUI) 버전에서 꽤 많은 샘플러가 추가 되어있다. 샘플러는 "상 미분방정식(Ordinary Differential Equations)" 이나 "확률 미분방정식(Stochastic Differential Equation)"을 푸는 알고리즘이 들어가 있다. 세계적인 수학자 오일러의 방식이나 카를 호인의 방식이 그것이다. 자세한 구현 방법은 생략하겠다.

어쨌든 SDUI 에서 사용할 수 있는 샘플러에 대한 샘플 이미지를 작성해 보았다. 결론부터 말하자면 현재 필자가 사용하는 샘플러는 "DPM++ 2M SDE Heun Karras" 이다.

샘플러도 좋아야 하지만 샘플러와 모델도 맞아야 한다. 모델을 보면 어떤 샘플러를 사용해 튜닝했는지가 나오는데 예전엔 DPM++ SDE Karras 을 많이 사용했다. (필자도 지난달까지만 해도 이걸 썼다)

1. DPM++ 2M Karras
2. DPM++ SDE Karras
3. DPM++ 2M SDE Exponential
4. DPM++ 2M SDE Karras

사용자 삽입 이미지

DPM++ 2M Karras


사용자 삽입 이미지

DPM++ SDE Karras



사용자 삽입 이미지

DPM++ 2M SDE Exponential


사용자 삽입 이미지

DPM++ 2M SDE Karras

글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion 구도 프롬프트 정리

필요에 의해 정리해 놓는다. 총 10가지 인데, 대략 의미는 아래와 같다.

1. extreme facial close up: 최대 얼굴 클로즈업 - 얼굴 - (face portrait 라고도 함)
2. facial close up: 얼굴 클로즈 업 - 어깨 부터 위
3. medium close up: 미디엄 클로즈 업 - 겨드랑이 부터 위
4. bust shot: 바스트 샷 - 가슴 위
5. waist shot: 웨이스트 샷 - 허리 위
6. medium shot: 미디엄 샷 - 배꼽부터 위
7. upper body: 상반신 - 골반부터 위
8. cowboy shot: 카우보이 샷 - 허벅지 중간부터 위
9. thigh above body: 허벅지 상위 샷 - 허벅지부터 위
10. full body: 전신 - 발끝부터 위

Stable Diffusion 에서는 구도는 이미지의 크기에 영향을 받는다. SD 1.5 는 512px x 512px, SDXL 은 1024px x 1024px 이기 때문이 1:1 비율이 아닌 이미지 생성시에는 구도가 다르게 표현되곤 한다.

아래는 위 샷 이미지를 540px x 960px (9:16 비율) 에서 구현하고 업스케일한 이미지다. 같은 프롬프트에서 구도 프롬프트만 변경했다. 구도에 따라 얼굴 형태가 어떻게 바뀌는지 살펴봐야 이미지를 제대로 생성할 수 있다.

사용자 삽입 이미지

1. extreme facial close up


사용자 삽입 이미지

2. facial close up


사용자 삽입 이미지

3. medium close up


사용자 삽입 이미지

4. bust shot


사용자 삽입 이미지

5. waist shot


사용자 삽입 이미지

6. medium shot


사용자 삽입 이미지

7. upper body


사용자 삽입 이미지

8. cowboy shot


사용자 삽입 이미지

9. thigh above body


사용자 삽입 이미지

10. full body