어두운 배경이 싫으시다면 페이지 우측 하단에 보이는 초승달 모양의 아이콘을 클릭하면 화이트모드로 변경됩니다. 초승달 모양 버튼 : `화이트/다크 모드` 전환 |
이번 포스팅에서는 이미지를 생성하기 위한 Generation 옵션에 관하여 설명하도록 하겠습니다.
1. Generation 옵션값 설명
🟦 Sampling method / Schedule type
이전에 제가 작성한 포스팅에서 기본 설정을 통해 Sampler 설정을 하였다면 위와 같이 'Sampling method'가 똑같이 나올 것입니다. 만약 다르더라도 자주 사용하는 것들은 거의 정해져 있다 보니 아래에 적힌 Sampler들만 있다면 크게 상관하지 않으셔도 됩니다.
🔹DPM++ 2M, DPM++ SDE, DPM++ 2M SDE, Euler a, LMS
하나씩 다 설명하기에는 내용도 너무 많고 처음 사용하는 사람들은 이게 뭔지 조차도 잘 모르기 때문에 간단하게 위의 나열한 것들만 사용하셔도 이미지를 생성하는데 문제없습니다.
혹시나 각각의 Sampler와 Scheduler에 대해서 자세히 알고 싶으시다면 아래 Civitai에 올라온 글을 공유해 드릴 테니 가셔서 한글 번역으로 보시면 됩니다. (내용이 많습니다...)
물론 다른 것을 사용한다고 문제될 일은 없지만 상황에 따라, 그리고 Generation 옵션값이나 체크포인트 모델에 따라서 전혀 다른 이미지가 생성되거나 노이즈가 많은, 깨진 이미지가 생성될 수 있습니다. 시간도 Sampler에 따라 천차만별이기 때문에 자세한 내용은 추후 따로 포스팅하도록 하겠습니다.
'Schedule type'도 보다시피 다양한 기능을 제공하는데, 이것들은 이미지를 생성할 때 Sampler들의 노이즈 제거를 보조해 주는 역할을 합니다. 사실 초반엔 뭐가 뭔지 모르기 때문에 'Automatic'을 사용하시면 됩니다. 아래는 'Sampling method' 종류별로 생성한 이미지 예시입니다.
🔹사용한 프롬프트 내용
(masterpiece, best quality, highres, highest detailed), outdoors, sky, city, destroyed, 1boy, mechanical parts,robot joints, helmet, upper body, looking at viewer
🔸부정 프롬프트
(worst quality, low quality:1.4)
대체로 사람을 그릴 때에는 업스케일링이나 기타 다른 기능들을 사용하지 않고 순수하게 WebUI의 기본기능만으로 생성하면 이상하게 나옵니다. 특히 인체 비율, 거리감에 따라서 얼굴, 손가락 등의 디테일은 매우 떨어지게 됩니다.
🟦 이미지 크기 (Width / Height)
스테이블 디퓨전은 기본적으로 512x512 이미지 사이즈 기반으로 학습합니다. 이후 업데이트를 통해 768x768 이미지까지 학습할 수 있게 되면서 모델에 따라 약간 다를 수 있지만 해당 이미지 크기로 학습된 모델을 사용하면 512 ~ 768 사이즈의 이미지를 생성할 수 있습니다.
이미지 크기를 다르게 하는 것만으로도 전혀 다른 이미지가 생성됩니다. 아래는 Width를 512로 고정하고 Height를 각각 512, 600, 768로 생성한 이미지입니다. (Seed값은 같음)
🟦 CFG scale / Sampling steps
두 옵션은 이미지를 생성하는데 있어 중요한 값입니다. 두 값을 조절하며 디테일, 노이즈, 진하기 정도를 조절할 수 있습니다.
스테이블 디퓨전은 원본 이미지를 학습할 때 노이즈를 일부러 넣으면서 완전히 뭉개버립니다. 그러면 최종적으로 전혀 알아볼 수 없는 노이즈 이미지가 만들어지고 다시 역순으로 수학적인 계산 방식을 통해 단계적으로 방향을 확률 계산하며 이미지를 복구(생성) 해 나가는 방식입니다. 마치 방정식을 푸는 것과 같습니다. (이게 너무 방대한 양이어서 노가다를 위해 GPU의 힘이 필요한 것!)
🔹CFGScale
얼마만큼의 확률(각도)로 각각의 프롬프트를 해석하여 정확하게 원본 이미지 복구해갈지를 정하는 값입니다. 뭐 말은 어렵지만 간단하게 설명하면 '윌리를 찾아라'를 생각하시면 됩니다. '동그란 뿔테 안경, 빨간색 방울 모자, 횐색과 빨간색이 섞인 줄무늬 셔츠, 청바지'와 같은 프롬프트를 사람에게 던져주고 '찾아'라고 하는 것과 같은 원리입니다.
즉, 아래 사진만 봐도 누가 윌리인지를 눈으로 찾기 정말 힘든데, AI는 확률 계산으로 '이놈이겠지, 이놈이겠지'를 반복하면서 노이즈를 제거해 수많은 노가다로 방정식을 GPU로 풀면서 이미지를 만들어내는 것입니다.
CFG 값이 낮으면 대충 이놈이겠지를 정하고 그려나가는 것이고 너무 높으면 이놈이 제일 비슷한 놈인 것 같다고 들입다 그놈만 분석합니다. 그래서 전혀 다른 놈을 윌리라고 말할 수도 있고, 엄청 비슷한 놈일 수도 있고, 진짜 윌리일 수도 있습니다.
그렇기 때문에 CFG Scale 값은 보통 5 ~ 10 사이로 사용하며, 추천하는 값은 7입니다.
🔹Sampling steps
어느 정도의 단계를 거쳐서 노이즈를 제거하며 원본 이미지를 구현해갈지를 정하는 값입니다. 이것도 노이즈가 어떤 의미를 나타내는지를 잘 모르면 어려운 말일 수 있는데 간단한 예시로 포스트잇에 볼펜으로 꾹꾹 눌러 글씨를 쓰고 뜯어내면 바로 아래 포스트잇에 글자 자국이 남습니다. 이것을 연필로 문지르면 글자가 나타나는 원리를 생각하시면 됩니다.
즉, 연필로 계속 문지르면서 원하는 이미지의 모습을 찾아가는 과정을 'Sampling step'이라 하며, 이 값이 낮으면 연필로 대충 몇 번 슥삭하는 정도라 뭔 글자인지 알아보기 힘들고, 반대로 너무 높으면 연필로 찐하게 여러 번 문질러서 잘 보이긴 하는데 굳이 그렇게 열심히 문지를 필요가 없을 정도라 오히려 연필심(GPU)만 낭비하게 됩니다.
마찬가지로 'Sampling steps'가 낮으면 이미지가 선명하지 않고 좀 뿌옇게 나옵니다. 반대로 높으면 꽤 디테일하게 나오지만 어느 정도 임계점을 넘어가면 별다른 차이가 없습니다. 보통 20 ~ 40 정도의 범위로 사용하며 추천하는 값은 30입니다.
아래는 'CFG scale' 값과 'Sampling steps' 값에 따른 이미지 생성 예시입니다. 각각 'CFG Scale'은 3, 7, 10 값을, 'Sampling steps'는 5, 30, 60 입니다.
🟦 Batch count / Batch size
'Batch count'는 단순히 이미지의 개수를 의미합니다. 2를 입력하면 2장을 생성합니다. 'Batch size'는 한 번에 생성할 이미지의 개수를 지정합니다. 즉, 3을 입력하면 한 번 이미지를 생성할 때 총 3장을 생성합니다. 즉, Batch count X Batch size만큼 이미지가 생성됩니다.
한 번에 여러 장을 생성할 때는 컴퓨터 하드웨어와 그래픽 카드 성능에 따라 달라질 수 있겠지만, 한 장씩 개별로 생성하는 것보다는 대체 조금 더 빠릅니다. 그래서 여러 장을 만들어 원하는 특정 이미지를 찾아낼 때 유용한 방법입니다.
🔸번외 : Seed
Seed 값은 저번 포스팅에서도 설명하였는데, 이미지를 생성시키게 하기 위한 씨앗(Seed)으로 이 값에 따라서 다양한 이미지를 생성합니다. 범위는 겁나 큽니다. 64bit 크기이기 때문에 2^64 제곱이니 뭐... 알아서 계산하시길;; 숫자는 0부터 시작입니다.
-1 값을 넣으면 랜덤 한 Seed로 생성되며, 여러 장을 생성할 경우 처음 생성된 Seed 번호에 +1씩 더해져서 생성됩니다. 어차피 특정 Seed가 무슨 이미지를 생성한다는 것 자체가 의미 없기 때문에 이미지를 수정하기 위한 용도 또는 누군가 올린 이미지의 Seed값을 이용하여 똑같이 만들거나 수정하고 싶을 때를 제외하고는 그냥 -1 값을 기본으로 사용하면 됩니다.
Seed 값 오른쪽에 보이는 두 아이콘이 있는데, 🎲아이콘이 랜덤 시드(-1)로 변경하는 버튼이고, 그 옆에 있는 ♻️아이콘은 생성한 이미지의 Seed 값을 복사하여 넣는 버튼입니다.
아래는 같은 Seed 값으로 다른 프롬프트(머리 스타일만 바꿈) 특징을 넣어서 만든 예시 이미지입니다. 물론 주변 환경도 일부 바뀌긴 했지만 전체적인 인물 특징이나 구도는 거의 유지된 상태입니다. 프롬프트를 너무 많이 바꾸거나 옵션값을 다르게 주지 않는다면 같은 Seed일 때 유사한 이미지를 만들어낼 수 있습니다.
다음 포스팅에서는 본격적으로 이미지의 퀄리티를 높이는 작업으로 업스케일링(Hires), Textural Inversion 사용하는 방법에 대해서 설명하도록 하겠습니다.
구독 및 좋아요는 컨텐츠를 생산하는데 많은 도움이 됩니다. 😊
감사합니다.