스테이블 디퓨전(StableDiffusion)

스테이블 디퓨전(SD) 깔았는데, 뭐가 뭔지 모르겠다구요? (UI 상세설명)

물범쌤 2024. 5. 9. 20:54

안녕하세요 여러분 ! 물범쌤입니다 :)

 

Stable Diffusion web-ui 든, COLAB을 통한 Stable Diffusion 설치든,
열심히 깔아놨는데 막상 내가 봤던 어마무시한 실사 이미지 뽑기에는
web-ui 창이 뭐가 무슨기능인지 너무 복잡하신분들이 있죠?

 

그래서 오늘은 스테이블 디퓨전의 UI별 기능을 자세하게

알려드리도록 할게요!

 

사실, 프롬프트 입력창과 네거티브(부정형)프롬프트 입력창은
이제 다들 익숙하실거라고 생각합니다.
오늘 우리가 집중적으로 알아볼 UI는 바로 아래쪽!

Sampling method를 포함한 상세설정부의 기능들을 알아보도록 하겠습니다!

자, 그럼 시작하겠습니다.

 


여러분들 화면과 다르다고 놀라셨나요?
차근차근 설명 드릴테니 걱정하지 마세요 ㅎ


 

먼저, 가장 익숙한 샘플링 메소드 부터 살펴보겠습니다.

1.샘플링 메소드(sampling method)


샘플링 메소드는 쉽게 이해할 수 있는 개념으로
'화가의 그림 스타일'이라고 생각하시면 될 것 같습니다.

 

스케치부터 그리는 화가가 있을것이고,
채색부터 시작하는 화가가 있을텐데요
둘 다 모두 그림 자체는 완성되겠지만

그 스타일에 따라서 그림의 퀄리티나, 완성되는 속도가 다르겠죠?
예를들어서 캐리커쳐를 그리는 화가가

초 현실주의로 그림을 그리는 화가보다 속도가 빠르지만

퀄리티 부분에서는 두 그림이 다른것처럼요

 

그런 개념으로 생각해주시면 되겠습니다.

 

이미지 생성에 적합한 몇가지 샘플링 메소드를 추천드릴게요.

 

1.DPM++ 2M(SDE) Karras :
DPM++ 2M Karras는 사실 한 개의 샘플링 모델로 묶여있지만,
DPM++ 샘플러와,  Karras라는 고화질 이미지 생성 방식을 결합한
복합적인 샘플링 모델입니다.
세부 사항 및 질감표현에 초점을 두고 생성하는 고화질 이미지 생성에 적합합니다.


2.LMS Karras:
DPM++ 2M Karras와 마찬가지로 복합 샘플링 모델입니다.
LMS방식은 DPM++ 샘플러와 마찬가지로 고화질에 초점을 둔 샘플링 방식으로 
높은 화질과 세부적인 이미지 표현에 적합합니다.

 

3.Euler a : 
Euler a 는 Euler의 업그레이드 버전입니다.
Euler방식의 샘플링은 빠른 이미지 생성속도와 안정적인 결과를 제공하지만,
때로는 더 빠른 방법이나 더 정교한 디테일이 필요한 경우가 발생합니다.

*작성하신 프롬프트가 제대로 설정되었는지
테스트 이미지를 생성해 보시기에 적합합니다.

 


 

다음은 샘플링 스텝입니다.

2.샘플링 스텝(Sampling steps)

샘플링 스텝을 이해하기 위해서 다시 그림을 그리는 작업이라고 생각해볼게요
우리가 이미지를 생성하는 작업은,
아무것도 없는 빈 캔버스에 화가가 물감으로 바로 그려내는 그림입니다.

샘플링 스텝은 화가가 움직일수 있는 일종의 행동 턴이라고 보시면 됩니다.

사진에 보이는 20이라는 숫자를 예시로 들면,

화가는 캔버스에 20번의 행동을 소모해서 그림을 완성해야 하는 것이죠!

 

Q. 쌤! 그러면 행동 횟수를 많이 설정 할수록 더 좋은 그림이 나오는게 아닌가요?


A. 일반적으로는 그렇겠지만,
Stable Diffusion은 컴퓨터이기 때문에
사용자가 설정한 턴을 모두 소모해야 행동을 끝냅니다.

만약에 이미 좋은 그림을 완성했는데,
턴을 소모하기 위해서 억지로 물감을 덧칠하면 어떻게 될까요?

너무 '과한' 채색이 되면서 그림이 이상해지겠죠?
그래서 샘플링 스텝을 너무 과하게 설정해주는 것도 좋지 않습니다.

 

*대부분 샘플링스텝은 20~35사이를 적정하다고 판단하고 있습니다.


다음은 기본 업스케일 방법인 Hires.fix 입니다.

3.하이어스 픽스(Hires.fix)

 

Hires.fix는 스테이블 디퓨전에서 기본으로 제공되는 업스케일 툴입니다.
업스케일링이란, 사진이나 동영상의 픽셀과 픽셀 사이에
새로운 픽셀을 끼워 넣어
해상도를 높여주는 기술입니다.

따라서 이 기능을 체크하고 이미지 생성 버튼을 누르면
일반적인 생성 시간보다 시간이 더 소요됩니다.
그럼, 각각 어떤 항목이 있는지 뜯어보도록 하죠.

업스케일러(Upscaler)

샘플링 메소드와 마찬가지로 업스케일링을 하는 방식에 따라
각각 다른 이름을 갖고 있습니다.
기본값으로 설정되어 있는 Latent도 무난하고 준수한 성능을 보여주지만,

실사이미지의 경우에는 'R-ESRGAN 4x+'를 ,
애니메이션 이미지의 경우에는  'R-ESRGAN 4x+ Anime6B' 를 선택하시면

조금 더 양질의 이미지를 생성하는데에 도움이 될 수 있습니다.

 


하이어스 스텝(Hires steps)

샘플링 스텝과 마찬가지로 업스케일링을 진행하는 행동횟수를 지정하며
기본 설정된 '0'으로 설정할 경우 샘플링스텝과 동일한 횟수로 적용되기 때문에

보통은 건드리지 않습니다만,
굳이 임의로 설정하는 경우에는 보통 5~10 정도로 설정합니다.

 

 

디노이징 스트렝스(Denoising strength)

말 그대로 디노이징, 노이즈를 제거하는 기능의 활성도입니다.
하지만 아까도 말씀드렸다시피,

업스케일링 자체는 이미지를 생성하는 중간중간에 진행되는 작업이기에

 

노이즈를 제거하는 작업에서
의도했던 원본의 이미지와 달라지는 경우가 발생할 수 있습니다.

따라서 수치가 높으면 원본 그림에서 많은 변화를 주고,
수치가 작을수록 원본 그림과 유사한 그림으로
업스케일링 된다고 보시면 될 것 같습니다.

의도했던 프롬프트와 너무 다른 느낌의 이미지가 나온다면
0.45~0.55정도로 설정해주시고,
원본그대로를 유지한 채 해상도만 올리고 싶은 분들은
0.1~0.2정도 설정해주시는것이 좋습니다.

 

 

업스케일 바이(Upscale by)

업스케일 바이는 이미지를 몇 배로 확장시킬건지 묻는 옵션입니다.
기본적으로 업스케일 된 이미지가 선명하게 보이는 이유
픽셀 사이에 새로운 픽셀을 끼워넣어 확장된 이미지를
우리가 설정한 사이즈로 축소해서 보는 개념이기 때문입니다.

예를 들면 

SD로 생성한 예시 이미지 입니다.

 

이렇게 확대해서 보면 코의 경계선이나 치아 같은 부분이
픽셀단위로 보이면서 흐려 보이지만,

 

이렇게 작게 보면 선명해 보이는 것과 같은 이치 입니다.

 

따라서 업스케일 바이를 크게 설정할수록 결과물이 선명하게 나오지만,
업스케일 바이 수치가 높을수록 생성되는 이미지 크기가 커지기 때문에

컴퓨터의 사양이나 용량에 맞춰서 설정해주셔야 합니다.
너무 과하게 설정하면 프로그램이 멈춰버리는 '튕김현상'이 일어날 수 있습니다.
보통 최대치를 1.5 ~ 2 정도로 설정하는 것이 좋습니다.

Resize width to , Resize hight to 는 비활성화 되어있듯이
현재는 쓰지 않는 기능입니다.
아마 업스케일 바이 기능이 나오기 이전의 기능이라고 추측하고 있습니다.

 


 

반응형

다음은 리파이너 refiner 입니다.

 


4.리파이너( refiner)

 

리파이너를 보시면 특이하게 체크 포인트가 있죠?
리파이너는 체크포인트 머지와 같이
두 가지의 체크포인트를 사용할 수 있도록 만들어진 기능입니다.

정확하게는 스테이블 디퓨전 SDXL 을 사용할때,

checkpoint merge 를 지원하지 않는
베이스 모델을 사용해야 하기 때문에 만들어진 기능입니다.

병합 사용을 원하는 체크포인트 모델을 설정하고,옆에 Switch at 을 사용하면
사용자가 설정한 리파이너모델(체크포인트)을
이미지에 적용할 '시점'을 설정할 수 있습니다.


시점이라는 말을 강조드린것처럼 0에 가까이, 최소값 0.01을 설정하면
그리기 시작하는 처음부터 리파이너 모델을 사용해서 그리겠다는 뜻이고,

 

1을 설정하면 리파이너 모델을 사용하지 않고 기본 모델을 사용하겠다는 뜻입니다.

 

 

 


 

 

다음은 아래쪽의 기능을 일괄적으로 알아보겠습니다.

 

5. 그 외 기본설정들

 

Width와 Hight는 넓이와 높이를 설정하여
전반적인 이미지 크기를 결정하는 기능입니다.
이에 대한 상세한 설명은 드리지 않겠습니다.^^

Batch count와 Batch Size

Batch count를 이미지 생성 갯수로 생각하시는 분들이 많은데
정확하게 Batch count는 '작업 반복 횟수'입니다.
이건 비슷하지만 의미가 조금 다른데요.

Batch size의 의미와 합쳐질때에 이해가 좀 쉬우실 수 있습니다.


Batch size는 '한 번의 작업동안 생성한 이미지의 갯수' 입니다.
Batch size와 Batch count는 곱셈의 관계라고 생각하시면 될 것 같습니다.

예를들어,
Batch size : 2 , Batch count : 3  = 2*3 = 6개의 이미지 생성이 되는 겁니다.

 

그렇다면 왜 Batch count 와 Batch size가 따로 있느냐 하면,

Batch size 는 숫자가 클수록 한번에 여러이미지를 생성하기에 제작속도가 빠르지만,
그만큼 이미지 생성에 사용하게 되는 vram(가상메모리)가 크기 때문에
PC에 부하가 생길 수 있습니다.

Batch count 는 vram의 사용량은 적지만
여러번의 횟수를 반복해야 하기 때문에 이미지를 생성하는데까지 시간이 걸립니다.

따라서 원하는 갯수의 이미지를 얻기 위해서는
적절한 Batch count 와 Batch size를 설정하셔서 제작하시는게 좋습니다.

 

 

 

CFG Scale
CFG scale은 이미지를 생성할 때 
입력한 프롬프트가 이미지가 결과에 
얼마나 영향을 미치는지를 조절하는 숫자입니다. 
쉽게 말해서 스테이블 디퓨전에 내가 설정한 프롬프트를
어느정도로 강요할지를 결정하는 기능이라고 보시면 될것같습니다.
보통 7.0에서 13.0 사이의 값을 사용하며,

CFG scale 값이 높을수록 프롬프트에 더 충실하게 이미지를 생성하려고 하지만,
이미지가 왜곡될 가능성이 높고,

반대로 CFG scale이 낮을수록 입력한 프롬프트 이미지와 멀어질 수 있지만,
이미지의 품질은 향상됩니다.

 

 

 

seed
seed 동일한 포즈의 그림을 출력하기 위해 사용됩니다.
잘 모르시는 분들도 많지만, 저희가 그림을 생성하면
하단에 입력한 프롬프트와 함께 시드값이 출력됩니다.

이 seed값을 그대로 seed 기능에 입력하고, 프롬프트를 바꿔서
똑같은 포즈로 생성되는 이미지의 스타일을 변경할 수 있습니다.

*기본값인 -1은 랜덤포즈를 생성하는 설정입니다.


script
특정 지시를 자동화 시켜 이미지 생성 과정을 제어할 수 있게 해주는 기능입니다.

Prompt Matrix: 프롬프트를 조합하여 
다양한 스타일과 주제의 이미지를 생성할 수 있습니다.

 

Prompts from file or textbox: 
텍스트 파일이나 텍스트 박스에 쓴 프롬프트를 사용하여 이미지를 만들 수 있습니다. 
많은 이미지를 빠르게 만들고 싶을 때 활용할 수 있습니다.

 

X/Y/Z plot: 
이미지의 다양한 속성(스타일, 색상 등)을 
X, Y, Z축에 맞춰 이미지를 만들고 시각적으로 표현합니다.

 

완벽한 예시는 아니지만, 이해를 위해서 아래 이미지를 준비했습니다.

기본프롬프트에는 없지만 script 기능으로 테니스 유니폼을 추가

 


여기까지, 오늘은 스테이블 디퓨전의 UI별 기능을 알아보았습니다.
이미지를 생성할때에 그저 기본셋팅대로  'generate' 버튼만 누르고 계시진 않았나요?
이제 여러분의 의도와 맞는 기능을 사용해서 더 디테일하고 아름다운 이미지를 생성해보세요!

 

이 컨텐츠가 유익하셨다면 공감(♡) 및 댓글 부탁드립니다.

그럼 다음 시간에 더 알찬 정보를 가지고 돌아오겠습니다.
모두들 좋은하루 되세요! ^^

반응형