스테이블 디퓨전에서 이미지를 생성할 때는 text(prompt) 만 입력하여 생성하거나 , 이미지를 load하여 그것을 수정하여 이미지를 생성한다.
이 내용은 스테이블 디퓨전으로 이미지를 생성하는데 아주 초보이신 분들에게 도움이 될 내용이다.
여기서는 주로 Comfyui 에서 Flux 모델을 사용하여 이미지를 생성한다.
![]() |
Flux - Text to Image |
1. Text to Image
이것은 prompt 를 입력하면 거기에 따라 checkpoint 모델이 이미지를 생성하기 때문에 이미지를 생성 할 백지상태의 캔버스를 입력해 주면 된다. 그 이미지를 Latent Image 라고 한다.
![]() |
Empty Latent Image 를 KSampler 로 연결 |
빈 백지에 명령 prompt 대로 이미지를 생성해 준다고 보면된다.
이 procedure 를 Text to Image 생성방법 이라고 한다.
2. Image to Image
이미지 투 이미지는 원본 이미지를 주고 그것을 일부 또는 전부를 수정하여 이미지를 생성하는 방식이다. 따라서 빈 latent Image 를 KSampler 에 연결하는 것이 아닌 이미지 원본을 입력해 준다.
![]() |
Load Image Nodes |
원본이미지를 그대로 입력할 수는 없다.
여기서 우리는 Latent Image 라는 개념을 알고 있어야 한다.
Latent image는 **눈에 보이지 않는 "압축된 이미지 정보"** 이다.
Stable Diffusion은 실제 이미지 공간에서 바로 작업하지 않고, 먼저 이미지를 숨어 있는(=latent) 압축된 형태로 변환한 뒤 작업한다. 그 이유는 압축하여 크기를 대폭 축소한 후 그것을 가지고 이미지 작업을 하면 속도가 빠르기 때문이다.
Stable Diffusion은 실제 이미지 공간에서 바로 작업하지 않고, 먼저 이미지를 숨어 있는(=latent) 압축된 형태로 변환한 뒤 작업한다. 그 이유는 압축하여 크기를 대폭 축소한 후 그것을 가지고 이미지 작업을 하면 속도가 빠르기 때문이다.
그래서 Latent Image 는 우리가 눈으로 알아볼 수 없다.
원본 이미지를 스테이블 디퓨전이 작업할 수있는 Latent Image 로 바꾸어 주는것이 VAE Encode 이다. 그 후에 KSampler 로 연결해 줄 수있다.
물론 Ksampler 에서 작업이 끝난 이미지도 Latent Image 이기 때문에 이것을 우리가 볼 수있는 이미지로 다시 바꾸어 주는것이 VAE Decode 이다.
3. Img to Img 이미지 생성 요령
Workflow 를 만들어 원본이미지를 올리고 Prompt 를 입력하여 생성을 시켜보면 원하는 대로 안나올 것이다.
여기서 KSampler 에 있는 Denoise 값을 이해해야 한다.
Denoise 값은 쉽게 말하면
- 값 1 : 원본 이미지를 무시하고 Text to Image 처럼 Prompt 대로 생성한다.
- 값 0 : 원본이미지 대로 변화없이 생성한다.
- 0.4 ~ 0.6 : 이 정도 수치에서 적절히 사용하면 원본이미지를 어느 정도 유지하며 Prompt 에 맞추어 적절히 수정을 해 준다. 따라서 수치를 조정하면서 자기가 원하는 이미지를 만들어야 한다.
- 처음 고양이 이미지를 원본으로 하여 Denoise 값을 1 ~ 0.5 로 변경시키면서 이미지를 생성한 결과이다.
- prompt : "A dog sitting on a beach at sunset, in watercolor style"
![]() |
값 0.7일때 |
![]() |
값 0.6 일때 |
![]() |
값 0.5 일때 |
값이 0.5로 갈 수록 원본과 거의 유사한 이미지가 만들어 졌다.
이 workflow 가 가장 기본적인 Img to Img 방식이다.
그런데 이 방식으로 이미지를 생성해 보면 자신이 원하는 것을 얻기가 참 어렵다.
이미지의 일부분만 수정하기도 어렵다.
4. Flux-Fill 모델 사용 (Inpaint)
이 모델을 사용하면 원본이미지의 일부분을 원하는 것으로 바꾸는 것이 매우 쉽다.
![]() |
Flux-Fill Inpaint Workflow |
원본이미지의 변경하고 싶은 부분을 Masking 하고 prompt 를 입력한 후 이미지를 생성하면 원본이미지의 원하는 부분만 변경하여 만들어 진다.
Prompt : A dog sitting on a beach at sunset, in watercolor style
![]() |
Flux-Fill Inpaint |
깔끔하게 모든 부분은 원본 그대로이면서 고양이 이미지를 강아지 이미지로 바꾸어 졌다.
전체적인 이미지를 어떤 스타일이나 구도는 유지하고 변경하고 싶으면 기본적인 workflow 를 이용하면 되고, 이미지의 일부분을 수정하거나 변경을 원하면 Flux-Fill 모델의 Inpaint 기능이 아주 유효하다.
댓글
댓글 쓰기