Classifier-Free Guidance, CFG란
AI 이미지 생성 모델, 특히 확산 모델(Diffusion Models)에서 CFG (Classifier-Free Guidance)는 생성되는 이미지의 품질과 프롬프트(텍스트 입력)에 대한 충실도(Fidelity)를 제어하는 매우 중요한 파라미터입니다.
CFG의 기본 개념
CFG는 크게 두 가지 유형의 프롬프트를 사용하여 이미지 생성 프로세스를 "안내(Guidance)"하는 기술입니다.
- 조건부 프롬프트 (Conditional Prompt): 사용자가 제공하는 일반적인 텍스트 프롬프트입니다 (예: "a dog wearing a hat in a park"). 모델은 이 프롬프트에 따라 이미지를 생성하려고 합니다.
- 무조건부 프롬프트 (Unconditional Prompt): 명시적인 텍스트 프롬프트가 없는, 즉 "아무것도 없는" 프롬프트입니다. 모델은 이 경우 일반적이고 평균적인 이미지를 생성하려는 경향이 있습니다.
CFG는 이 두 가지 안내(guidance)를 결합하여 최종 이미지의 방향을 결정합니다.
CFG Scale (CFG 값):
- CFG Scale은 조건부 프롬프트(사용자 입력 프롬프트)가 최종 이미지에 얼마나 강하게 반영될 것인지를 결정하는 값입니다.
- 더 간단히 말해, 프롬프트와 생성된 이미지 간의 "일치성" 또는 "창의성"의 균형을 조절하는 값이라고 볼 수 있습니다.
CFG 값에 따른 이미지 변화
CFG 값은 일반적으로 1에서 20 이상까지 사용됩니다. 모델과 상황에 따라 최적의 값은 달라지지만, 일반적인 경향은 다음과 같습니다.
- CFG 값이 낮을 때 (예: 1 ~ 5):
- 프롬프트에 덜 충실: 모델이 프롬프트의 지시사항에 덜 얽매이고, 더 "자유롭고" "창의적인" 결과를 생성할 수 있습니다.
- 다양성 증가: 예상치 못한 다양한 이미지가 나올 가능성이 높습니다.
- 일관성 부족: 프롬프트가 명확해도 결과물의 일관성이 떨어질 수 있습니다.
- 예시: "a dog"이라고 해도 강아지의 모습이 매우 다양하게 나올 수 있습니다. 때로는 프롬프트와 동떨어진 이미지가 나올 수도 있습니다.
- CFG 값이 적정할 때 (예: 6 ~ 10):
- 권장 범위: 대부분의 경우 이 범위에서 가장 좋은 품질과 프롬프트 충실도의 균형을 찾을 수 있습니다.
- 프롬프트에 충분히 충실: 프롬프트의 의도를 잘 반영하면서도 어느 정도의 다양성과 예술적 감각을 유지합니다.
- 일관성 유지: 프롬프트에 명시된 요소들이 이미지에 잘 나타납니다.
- CFG 값이 높을 때 (예: 11 ~ 20 이상):
- 프롬프트에 매우 충실: 모델이 프롬프트의 지시사항을 매우 엄격하게 따르려고 합니다.
- 디테일 강조: 프롬프트에 명시된 세부 사항들이 더 뚜렷하게 나타날 수 있습니다.
- 창의성 감소: 결과물이 다소 반복적이거나 "평균적인" 모습이 될 수 있습니다.
- 노이즈/아티팩트 발생 가능성: 너무 높은 값은 때때로 이미지에 노이즈나 왜곡(아티팩트)을 유발하거나, 이미지가 "과하게 노이즈가 제거된(over-smoothed)" 것처럼 보이게 할 수 있습니다. 모델이 프롬프트에만 너무 집중한 나머지 자연스러움을 잃을 수 있습니다.
- 예시: "a red square"라고 하면 정말 단순하고 강력한 빨간 사각형이 나오지만, 지나치게 높으면 픽셀이 뭉개지거나 이상해질 수 있습니다.
CFG가 작동하는 방식 (간단히)
확산 모델은 노이즈가 섞인 이미지에서 점진적으로 노이즈를 제거하여 깨끗한 이미지를 생성하는 방식으로 작동합니다. CFG는 이 노이즈 제거 과정에서 모델이 프롬프트에 더 집중하도록 유도합니다.
내부적으로는 다음과 유사하게 작동합니다: 노이즈 제거 방향 = (원래 모델의 노이즈 제거 방향) + CFG_Scale * (조건부 노이즈 제거 방향 - 무조건부 노이즈 제거 방향)
이 공식에서 (조건부 노이즈 제거 방향 - 무조건부 노이즈 제거 방향) 부분이 프롬프트가 이미지에 기여하는 "영향"을 나타냅니다. CFG Scale은 이 "영향"을 얼마나 증폭시킬지를 결정합니다.
ComfyUI에서의 CFG
ComfyUI에서는 KSampler 노드나 Sampler 노드에 cfg 또는 cfg_scale이라는 이름의 파라미터로 존재합니다. 이 값을 조절함으로써 생성되는 이미지의 프롬프트 충실도를 실시간으로 변경하며 실험해볼 수 있습니다.
결론
CFG는 AI 이미지 생성에서 프롬프트와 이미지의 일치도를 조절하는 핵심적인 파라미터입니다. 적절한 CFG 값을 찾는 것은 원하는 이미지 스타일과 프롬프트의 복잡성에 따라 달라지므로, 직접 다양한 값을 시험해보고 최적의 균형점을 찾는 것이 중요합니다.