Search

3.2. ImageSize 사이즈

Chapter
3.Util : 유용한 도구
챕터3는 순서대로 모두 읽으실 필요는 없습니다! 필요하실때 참고하실 수 있는 문서 정도로 생각해주세요.

학습목표

여러 상황에서 이미지를 만들다보면 '이미지의 사이즈'에 신경써야 하는 상황이 나옵니다. 그럴때 이미지 사이즈를 어떻게 결정하고, 어떤 테크닉을 활용할 수 있는지 팁을 익혀둡시다.
Plain Text
복사

비율에 따른 출력 이미지 결정

Latent Size

Latent가 무엇인지에 대해서는 2-2에서 설명했습니다.
Latent 사이즈는 8의 배수로만 설정가능하기 때문에, width를 519를 입력하면 520으로 자동으로 올림됩니다.
그렇다고 항상 이미지를 8의 배수에 대하여 의식하고 있을 필요는 없고, 알아서 변경해주니 알고만 계시면 됩니다.

모델에 따른 추천 이미지 비율

SD1.5 (512)

SD1.5 모델을 사용하는 경우 일반적으로 최적의 크기는 512x512이며 일부는 768x768까지 가능합니다. 따라서 SD v1.5의 일반적인 종횡비는 다음과 같습니다:
1:1 (정사각형): 512x512, 768x768
3:2 (가로): 768x512
2:3 (세로): 512x768
4:3 (가로): 768x576
3:4 (세로): 576x768
16:9 (와이드스크린): 912x512
9:16 (세로): 512x912

SDXL (1024)

SDXL 모델을 사용하는 경우 최적의 크기는 1024x1024이며, 일반적인 종횡비는 다음과 같습니다:
1:1 (정사각형): 1024x1024, 768x768
3:2 (가로): 1152x768
2:3 (세로): 768x1152
4:3 (가로): 1152x864
3:4 (세로): 864x1152
16:9 (와이드스크린): 1360x768
9:16 (세로): 768x1360
SD1.5와 SDXL의 이미지 사이즈가 다른 주된 이유는 이러한 모델들이 훈련 단계에서 서로 다른 크기의 이미지로 훈련되었기 때문입니다.
(조각에 비유하자면 SD1.5 조각가들은 512x512 대리석으로만 연습을 했고 SDXL 조각가들은 1024x1024 대리석으로만 연습했기에 이와 다른 사이즈의 대리석의 경우 제대로 된 조각품을 만들기 어려울 가능성이 있습니다.)

업스케일

그렇기 떄문에, 2048x2048 해상도로 된 이미지를 얻고 싶을 경우에는 업스케일링을 해야합니다. 4-5에서 다뤄집니다.

챗지피티에게 물어보기. 단순한 초등수학 비율계산.

위에 적힌 비율을 활용할 수도 있지만, 가볍게 chatgpt에게 물어보면서 하셔도 좋습니다.

Convert Input / Resize

(이 기능은 나중에 컨트롤넷을 공부할 때쯤 다시 읽어보셔도 좋습니다.
컨트롤넷 등 다양한 상황에서 유용하게 쓰이는 기능입니다.)
지금 이 워크플로우를 보면, 494x400 비율의 이미지를 입력하고, 1024x1024 이미지를 만들라고 하고 있습니다.
비율도 안맞고, 사이즈도 안맞습니다. 이런 경우에는 뭔가 에러가 나거나 잘 되지 않을 가능성이 존재합니다.
너무 큰 4k 이미지를 넣거나 너무 화질이 깨져있는 이미지를 넣지 말고, 적당한 사이즈(512~1024)로 리사이즈 해서 넣습니다.
resize를 할때는 nearest 말고 bilinear 또는 bicubic을 사용하세요. 그게 더 성능이 좋습니다.
그리고 keep proportion → true을 해주면, 긴변의 길이가 1024가 되도록 비율을 맞춰줍니다.
아래에 있는 empty latent image의 경우도, 늘 그에 맞는 비율로 변경해주어야 하는 것이 너무 귀찮습니다.
우클릭을 통해 convert … 를 찾아 width와 height를 각각 widget을 통한 입력이 아닌 input을 통한 입력으로 바꿔줍니다.
그리고나서 resize에서 출력된 width와 height를 연결해주면 완성됩니다.
현재 ComfyUI에는 다양한 Image Resize 노드가 있지만 이러한 이유로 범용적으로 쓰기 좋은 앞에 펜치 모양이 있는 Image Resize 노드를 추천합니다.

Image Resize Node

Image Resize

사용자가 입력한 이미지의 사이즈를 자유롭게 조절 할 수 있다.
사용자가 입력한 이미지를 받아올 수 있도록 Load Image 노드의 IMAGE와 연결한다.
width
원하는 너비 입력
height
원하는 높이 입력
interpolation
Image Resize를 어떤 방식으로 할지 선택
기본적으로 nearest를 추천하나, 입력한 이미지 보다 사이즈를 작게 조절한다면 area가 좋다.
keep_proportion
비율 유지 옵션
true로 설정하면 비율을 유지하면서 resize를 한다.
false로 설정하면 비율과 상관 없이 resize를 한다.
condition
어떤 이미지가 들어왔을 때 Image Resize를 실행할지 선택
always 어떤 이미지가 들어오던 Image Resize를 실행한다.
downscale if bigger 설정 값보다 큰 이미지가 들어오면 Image Resize를 실행한다.
upscale if smaller 설정 값보다 작은 이미지가 들어오면 Image Resize를 실행한다.
ex)
width = 1024
height = 1024
interpolation nearest
keep_propoltion = true
condition = always
으로 설정한다면
사용자가 입력한 이미지 크기에 상관없이 width와 height 중 큰 부분을 1024로,
나머지 부분을 비율에 맞춰 resize 한다

(주의) 이런 ImageSize 실수도 많이 발생합니다. (6-1. Relight)

1232x928 이미지를 512x512로 keep proportion 하면서 줄이면 긴변에 길이를 맞춰주기 때문에 1232:928 = 512:x, x=385.66이 됩니다.
이미지가 너무 작아져버리는 것입니다. 이미지의 사이즈를 확인하기 위해서는 display any 같은 노드를 사용해서 값을 찍어볼 수 있습니다.
그래서 resize의 비율을 768x768로 변경해주었습니다. 이미지가 훨씬 개선된 것을 볼 수 있습니다.