CFG Scale 과 Sampling steps 실험
Stable Diffusion에서 CFG는 Classifier Free Guidance 척도를 나타냅니다. CFG는 텍스트 프롬프트를 얼마나 정확하게 따를지를 조절하는 설정으로, 텍스트를 이미지로 (txt2img) 및 이미지를 이미지로 (img2img) 변환하는 데 사용됩니다.
CFG 값이 높으면 이론적으로 프롬프트를 더 엄격하게 따르게 됩니다. 기본값은 7로, 창의적인 자유와 지시 사항을 따르는 균형을 잘 이룹니다. 값이 1인 경우 거의 완전한 자유를 가지게 되며, 15 이상의 값은 상당히 제한적이라고 볼 수 있습니다.

Stable Diffusion에서 CFG를 증가시키면 출력 이미지 품질에 영향을 미칩니다.
- CFG가 증가함에 따라 색상 포화도가 높아집니다.
- CFG가 증가함에 따라 이미지 대비가 증가합니다.
- 일정한 CFG 값 이상에서 출력 이미지가 흐릿해져 세부 정보가 손실됩니다.
더 높은 CFG 값에서 출력 이미지 품질이 떨어지는 것을 보완하기 위해 일반적으로 다음 두 가지 방법을 사용할 수 있습니다
- 샘플러 단계를 늘리세요: 출력 이미지의 상세 정보를 더 많이 얻기 위해서는 샘플러 단계를 늘리는 것이 좋으나, CFG와 마찬가지로 일정한 한계까지만 효과가 있습니다. 샘플러 단계를 늘리면 처리 시간이 길어질 수 있습니다.
- 샘플러 방식을 바꾸세요: 일부 샘플러는 낮은 또는 높은 CFG 및 샘플 단계에서 최적의 성능을 발휘하도록 개발되었습니다. 예를 들어, UniPC는 CFG가 3 정도로 낮을 때 좋은 결과를 얻을 수 있지만, 대략적으로 CFG 10 정도에서부터 품질이 저하되기 시작합니다. 반면에, DPM++ SDE Karras는 일반적으로 CFG 값이 7 이상일 때 이미지 세부 정보가 많이 생성됩니다.
메모리와 처리 시간을 최소화하면서 최상의 출력 이미지를 얻기 위해 사용자는 사용 중인 시스템에 대해 CFG, 샘플러 단계 및 샘플러 사이의 균형을 찾아야 합니다. 샘플링 스텝의 효과와 한계에 대해서는 다음 문서에서 다루도록 하겠습니다.