본문 바로가기
개발 이야기

WebUI Forge, CFG, Distilled CFG, Sampler에 따른 결과 차이 비교 실험 결과 공유

by AI동키 2025. 6. 30.
반응형

요즘 이미지생성에 빠져있는데, 특히 제 워크스테이션에서 직접 생성하는 과정이 정말 즐겁습니다.

만들어져 있는 Saas들을 유료로 활용하는 아주 쉬운 방법도 많지만, 역시나 직접 파라미터를 조절하며 실험하면서, 무한히 생성하면서도 돈이 들지 않는 다는 사실에서,  직접 만들어 내는 것이 훨씬 맛있기 때문이다.

 

WebUI Forge를 쓰고있고, 제 RTX3090에서 아주 만족스럽게 돌아가고 있습니다. 

그 중 특히 만족스러운 모델은 FLUX Dev 모델인데요, Flux Dev모델은, 같은 프롬프트를 넣어도 퀄리티 자체가 Stable Diffusion(SD) 모델들과 비교가 되는 확연히 높은 퀄리티를 보여줍니다. 물론 SD의 특장점도 있기는 하지만, 개인적으로는 FLUX의 결과물이 마음에 듭니다.

 

오늘 글을 쓰는 이유는 실험을 기록하기 위함인데, Flux Dev model에 여러가지 변수를 비교해보고자 XYZ-Plot을 써서 실험을 해봤습니다. 

 

XYZ-Plot에 대해 알아보고, 셋팅값과 결과를 공유드리겠습니다.

 

XYZ-Plot은 X, Y, Z 세 개의 축에 각기 다른 변수를 할당해 한 번에 여러 조건을 테스트하고 결과를 표(Grid) 형태로 비교할 수 있게 해주는 아주 강력한 기능입니다. 제가 설정한 값들은 다음과 같습니다.

X축: 샘플러 (Sampler)

- X축 변수: `Sampler`
- 적용 값: `Euler`, `DPM++ 2M SDE`, `Euler a`

샘플러(Sampler)란 무엇일까요?

쉽게 비유하자면, AI가 이미지를 그리는 '붓질 방식' 또는 '그림 스타일'이라고 할 수 있습니다. AI는 처음엔 노이즈만 가득한 이미지에서 시작해, 점차 노이즈를 걷어내며 우리가 입력한 프롬프트에 맞는 이미지를 완성합니다. 이때 어떤 알고리즘(방식)으로 노이즈를 걷어낼지를 정하는 것이 바로 샘플러입니다. 샘플러에 따라 같은 프롬프트와 시드(Seed) 값이라도 결과물의 디테일, 분위기, 안정성이 달라집니다.

- Euler: 가장 기본적이고 빠른 샘플러 중 하나입니다. 단순하고 속도가 빨라 테스트용으로 이미지를 빠르게 뽑아볼 때 좋습니다.
- DPM++ 2M SDE: 비교적 최신 기술이 적용된 샘플러로, 일반적으로 적은 스텝(Sampling steps)으로도 안정적이고 높은 퀄리티의 이미지를 만들어내는 것으로 알려져 있습니다. 디테일 표현력이 뛰어납니다.
- Euler a (Ancestral): 'a'는 Ancestral의 약자입니다. 일반 Euler와 달리 각 스텝마다 약간의 노이즈를 추가해, 좀 더 창의적이고 예측 불가능한, 다채로운 결과물을 만들어내는 경향이 있습니다.


Y축: 고해상도 보정 (Highres. fix)

- Y축 변수: `Hires. fix`
- 적용 값: `활성화(On)`, `비활성화(Off)`

고해상도 보정(Highres. fix)은 왜 필요할까요?

AI 모델이 처음부터 너무 큰 해상도의 이미지를 생성하려고 하면, 종종 팔이 세 개가 되거나 얼굴이 두 개로 나오는 등 부자연스러운 결과물이 생길 수 있습니다. '고해상도 보정'은 이런 문제를 해결하기 위한 기술입니다.

이 옵션을 켜면 AI는 먼저 안정적인 저해상도 이미지를 생성한 뒤, 그 이미지의 구도를 바탕으로 디테일을 추가하며 고해상도로 업스케일링하는 2단계 과정을 거칩니다. 덕분에 훨씬 안정적이고 디테일이 살아있는 고품질의 큰 이미지를 얻을 수 있습니다. Y축 비교를 통해 이 기능을 켰을 때와 껐을 때의 이미지 안정성 및 디테일 차이를 확인해 볼 것입니다.


Z축: 리파이너 (Refiner)

Z축 변수:`Refiner`
적용 값: `활성화(On)`, `비활성화(Off)`

리파이너(Refiner)는 어떤 역할을 할까요?

리파이너는 말 그대로 이미지를 '정제'하고 '다듬어주는' 두 번째 전문가라고 생각하면 쉽습니다. SDXL 모델부터 본격적으로 도입된 개념으로, 기본 모델(Base Model)이 전체적인 구조와 형태를 그리며 이미지를 만들면, 리파이너 모델이 그 위에 미세한 질감, 선명도, 최종적인 디테일을 덧입혀 완성도를 극적으로 끌어올리는 역할을 합니다.

Forge UI의 이 체크박스는 이러한 2단계 정제 과정을 활성화하는 옵션입니다. 리파이너를 켰을 때와 껐을 때, 이미지의 최종적인 마감 처리와 디테일 수준이 얼마나 달라지는지를 Z축을 통해 비교해 볼 예정입니다.

 

프롬프트는 아래와 같고,

(best quality:1.2), (masterpiece), (high resolution), 1girl, in a jungle, black hair, hazel eyes, white onpiece,  very detailed, sharp focus (intricate detailed)

 

결과물은 아래와 같습니다.

 

실험 결과 분석: 무엇을 알 수 있었나?

드디어 XYZ-Plot을 통해 생성된 결과 이미지가 나왔습니다. 한눈에 봐도 각 줄과 칸마다 확연한 차이가 보이는데요. 이 복잡한 표를 통해 제가 사용한 FLUX.dev 모델의 숨겨진 특성과 최적의 조합을 찾아낼 수 있었습니다.

이 결과는 크게 세 가지 관점에서 분석해 볼 수 있습니다.

1. 메인 변수: Distilled CFG Scale의 영향

가장 먼저 눈에 띄는 것은 Distilled CFG Scale 값(2.5, 3.5, 4.5)에 따라 전체적인 이미지 톤이 달라진다는 점입니다.

  • CFG Scale이란? AI가 이미지를 생성할 때 프롬프트를 얼마나 '엄격하게' 따를지를 정하는 수치입니다. 값이 높을수록 프롬프트의 내용을 강하게 반영하려 하고, 낮을수록 AI가 좀 더 자유롭게 해석합니다. Distilled CFG는 특정 모델(주로 LCM, FLUX 등)에서 더 낮은 값으로도 효율적인 제어가 가능하도록 최적화된 방식입니다.
  • 관찰 결과:
    • CFG 2.5: 이미지가 안정적이지만 색감이 다소 차분하고 부드럽습니다.
    • CFG 3.5 (가운데 그리드): 제가 설정했던 기본값으로, 프롬프트의 의도(정글, 검은 머리 등)를 잘 반영하면서도 색감과 대비가 가장 균형 잡힌 모습을 보여줍니다.
    • CFG 4.5: 색감이 훨씬 강렬하고 선명해집니다. 특히 배경의 녹색이 아주 진해졌습니다. 하지만 일부 이미지에서는 디테일이 너무 강해져 소위 '그림이 타는' 현상이 나타날 조짐을 보입니다.

결론: FLUX.dev 모델에서는 Distilled CFG Scale 3.5가 디테일과 안정성을 모두 잡는 '스위트 스팟(Sweet Spot)'으로 보입니다.

2. Y축(세로): 샘플러(Sampler) 별 극명한 차이

이번 실험에서 가장 드라마틱한 결과를 보여준 것은 바로 샘플러의 차이였습니다.

  • Euler (첫 번째 줄): 어떤 CFG 값에서도 매우 안정적으로 고품질의 인물 이미지를 생성했습니다. 프롬프트에 충실하면서도 부드러운 애니메이션 스타일의 결과물을 꾸준히 보여줍니다. **'믿고 쓰는 샘플러'**라고 할 수 있겠네요.
  • DPM++ 2M SDE (두 번째 줄): 가장 충격적인 결과입니다. 이미지가 전혀 생성되지 않고, 검은 실루엣과 정체불명의 녹색 광원만 나타났습니다. 이는 FLUX.dev 모델이 DPM++ 2M SDE 샘플러와 호환성이 매우 낮다는 것을 의미합니다. 샘플러가 나쁘다는 뜻이 아니라, 특정 모델과는 궁합이 맞지 않을 수 있다는 것을 보여주는 아주 중요한 실험 결과입니다.
  • Euler a (세 번째 줄): 전반적으로 Euler와 비슷하게 안정적인 결과물을 보여주지만, 미묘하게 더 분위기 있거나 다채로운 느낌을 줍니다. 'Ancestral' 샘플러의 특성상 약간의 무작위성이 더해져 그림에 재미를 더해주는 것 같습니다.

결론: FLUX.dev 모델을 사용할 때는 Euler 또는 Euler a 샘플러를 사용하는 것이 필수적입니다. DPM 계열 샘플러는 피해야 합니다.

3. X축(가로): CFG 는 그냥 1.0 쓰자.

다른 값들은 볼 것도 없습니다.

 

최종 결론 및 요약

이번 XYZ-Plot 실험을 통해 다음과 같은 핵심 정보를 얻었습니다. 사실상 기본 셋팅값이 답이다 라는게 결론이긴 합니다만, 

  1. 최적의 조합: FLUX.dev 모델 + Euler 또는 Euler a 샘플러 + Distilled CFG Scale 3.5 + CFG 1.0
  2. 주의할 점: DPM++ 2M SDE 샘플러는 FLUX.dev 모델과 호환되지 않으므로 사용을 피해야 합니다.
  3. 튜닝의 중요성: CFG Scale 값에 따라 이미지의 채도와 대비가 크게 달라지므로, 원하는 분위기에 맞춰 조절하는 것이 중요합니다.

단순히 이미지를 한 장씩 생성했다면 알아채기 어려웠을 모델과 샘플러의 궁합, 그리고 최적의 파라미터 값을 단 한 번의 실험으로 명쾌하게 찾아낼 수 있었습니다. 역시 직접 부딪히고 실험하는 과정이야말로 AI 이미지 생성의 가장 큰 재미가 아닐까 싶습니다.

 

 

반응형

댓글