AI 이미지/Stable Diffusion

단계 정렬(Align Your Steps) 사용방법

하늘이푸른오늘 2024. 6. 7. 16:01

단계 정렬(AYS, Align Your Steps)는 Nvidia 팀에서 역 디퓨전 공식을 보다 정확하게 풀기위하여 제안한 것으로, 샘플링 프로세스를 변경한 것입니다. 논문에 따르면 AYS를 사용하면 10단계만으로도 고품질의 이미지를 생성할 수 있다고 합니다.

Align Your Steps 논문에 포함된 이미지

단계 정렬이란?

단계정렬(Align Your Steps 는 새로운 모델이 아니라, 기존 샘플링 프로세스에 변화를 준 것입니다. 좀 더 정확하게 말씀드리자면 잡음 스케줄(noise schedule)을 변경시킨 것입니다. 따라서 단계 정렬은 어떤 모델과도 함께 사용할 수 있습니다.

단계 정렬을 이해하려면 먼저 샘플링 프로세스를 이해해야 합니다. 여기에서는 간단하게만 설명하는데, 좀더 자세한 설명을 원하시면 이 글을 읽어보시기 바랍니다.

샘플링 프로세스

디퓨전 모델은 잡음에서 샘플을 생성합니다. 이 과정을 역 디퓨전(역 확산)이라고 하며, 이 과정에서 역 확산 방정식을 풀어야 합니다. 컴퓨터에서는 방정식을 완벽하게 풀 수 없기 때문에(해석적 해가 존재하지 않아서), 여러 단계로 나누어 풀어가게 됩니다.

이를 불연속화(discretization)이라고 합니다.

불연속화 오류(Discretization Error)

디퓨전(확산) 과정은 연속적입니다. 샘플링 단계 수를 설정한다는 것은 연속 프로세스를 풀기위해 정해진 단계로 나누는 것입니다. 이로 인해 불연속화 오류가 발생합니다.

이 방식외에는 사실상 역 확산을 풀 수 있는 방법이 없기 때문에 실제 해와는 다른 답이 나올 수 있습니다.

일반적으로 불연속화 오류는 30 단계정도로 충분히 크게만 잡으면 무시할 정도로 줄어듭니다.

아래는 스테이블 디퓨전 1.5 모델을 Euler 샘플러를 사용해 15 단계로 풀어낸 예입니다.

잡음 스케줄

이러한 과정에서 각 단계별로 추정 잡음 수준을 정의해야 합니다. 각 단계별 잡음 수준 집합을 잡음 스케줄이라고 합니다.

두 단계간의 잡음 수준 차이를 단계 크기(step size)라고 합니다.

물론 잡음이 선형으로 줄어들도록 단계를 일정하게 나눌 수도 있습니다. 하지만 이렇게 하면 고품질의 이미지가 생성되지 않습니다. 그 대신 처음에는 단계 크기를 크게하고, 나중에는 작게하면 더 좋은 이미지를 얻을 수 있ㅅ브니다. 이래는 Karras 잡음 스케줄의 예로 이와 같은 방식을 따르고 있습니다.

끝부분에 단계 크기를 줄이면 이미지의 세부 디테일이 살아납니다.

단계 정렬(Align Your Steps)

잡음 스케줄은 어떻게 정하나요? 대부분 경험적 결과를 기반으로 정합니다. 

논문에 따르면, 단계 정렬(Align Your Steps)은 불연속화 오류를 최소화시킬 수 있도록 잡음 스케줄을 생성하는 체계적인 방법론을 제안합니다. 즉 "샘플링 단계가 N개로 정해진다면, 불연속화 오류를 최소화할 수 있는 최적 잡음 스케줄은 무엇일까?"라고하는 의문에 대한 해답입니다.

최적 잡음 스케줄을 풀기위해서는 각 샘플링 단계의 Kullback-Leibler 상한을 최소화하여야 합니다. 여기에서  Kullback-Leibler 상한이란 불연속 오차의 최대한계(Upper bound)입니다.

실제로 ComfyUI와 허깅페이스의 디퓨저에서는, 단계 정렬 잡음 스케줄에서 10단계의 최적 잡음 스케줄이 하드 코딩되어 있습니다. 10단계 이상이 필요할 경우, 새로운 잡음 스케줄을 얻기 위해 로그선형 스케일로 내삽이 이루어집니다.

아래는 단계 정렬(Align Your Steps)와 Karras를 비교한 것입니다. 보시는 것처럼 단계정렬은 초기 잡음 단계 크기를 키우는 대신, 잡음 수준이 낮은 단계를 훨씬 많이 늘리고 있습니다.

최적 잡음 스케줄은 학습 데이터에 따라 달라집니다. 즉 모델에 따라 달라지게 됩니다. 실제로 모든 SD1.5 모델은 동일한 잡음 스케줄을 사용할 수 있지만, 모든 SDXL 모델은 SD1.5와는 다른 동일한 잡음 스케줄을 사용할 수 있습니다.

ComfyUI에서 단계 정렬을 사용하는 방법

ComfyUI 는 기본적으로 단계 정렬을 지원합니다. 단, 최신버전으로 업데이트해야 합니다. 업데이트 방법은 여기를 읽어보세요.

워크플로

아래는 SDXL을 위한 단계 정렬 워크플로입니다.

align_your_steps_SDXL.json
0.01MB

아래는 SD1.5용 단계 정렬 워크플로입니다.

align_your_steps_SD1.5.json
0.01MB

단계 정렬(Align Your Steps) 리뷰

Align Your Steps를 사용하면 얼마나 장점이 있을까요? 논문에서는 거의 10 단계만 적용해서 시간-균일 (time-uniform) 스케줄과 비교합니다. 이러한 조건은 일반적으로는 사용되지 않습니다. 여기에서는 널리 사용되고 있는 Karras  스케줄과 새로운 잡음 스케줄을, 샘프링 단계를 높여서 비교해보겠습니다.

근접 사진

먼저 오류가 날 가능성이 낮은 근접 초상화 이미지로 시작해 보겠습니다. 여기에서는 JuggernautXL v6 모델에 단계 정렬을 적용해보겠습니다.

프롬프트 : close-up photo portrait of a beautiful 25 year old girl dancer
부정적 프롬프트 : (worst quality, low quality), deformed, distorted, disfigured, doll, poorly drawn, bad anatomy, wrong anatomy, nsfw, ugly

AYS 10 steps AYS 20 steps AYS 30 steps

10 단계만 적용해도 품질이 뛰어난 이미지가 생성됩니다.

참고로 아래는 Karras 잡음 스케줄을 적용한 사례입니다. 이쪽도 나쁘지는 않네요.

Karras 10 Steps Karras 20 Steps Karras 30 Steps

전신 이미지

전신 이미지는 전체적인 일관성과 미세 디테일까지 잘 나와야 해서 좋은 결과를 얻기는 조금 더 힘들어지게 됩니다.

프롬프트: full body photo portrait of a beautiful 25 year old girl dancer
부정적 프롬프트: (worst quality, low quality), deformed, distorted, disfigured, doll, poorly drawn, bad anatomy, wrong anatomy, nsfw, ugly 

AYS 10 Steps AYS 20 Steps AYS 30 Steps

큰 이미지로 보면 아시겠지만, 10 단계는 미세한 부분(특히 손)에 오류를 볼 수 있으며, 20단계도 일부 미흡한 부분이 보입니다.

아래는 동일한 모델, 동일한 샘플러를 사용하되 잡음 스케줄만 Karras로 바꿔서 생성한 결과입니다. 

Karras 10 Steps Karras 20 Steps Karras 30 Steps

마찬가지로 10단계에서는 미세한 부분에 오류가 보이고 20단계 이후에나 이미지가 안정됨을 알 수 있습니다.

논문에 있는 방법 테스트

논문에서는 EDM(time-continuous), time-uniform과 단계정렬(Align Your Steps) 스테줄로 비교했습니다(그다지 잘 사용되지 않는 잡음 스케줄입니다)

여기에서는 동일한 프롬프트를 Karras와 AYS 잡음 스케줄을 10단계로 테스트해보겠습니다.

바벨탑

아래는 Juggernaut XL 모델을 사용한 결과입니다

Karras Align Your Steps

스파이더 보이

Karras Align Your Steps

결국... 논문에서는 기존의 방법론보다 훨씬 더 뛰어난 것처럼 주장하고 있지만, 널리 사용되고 있는 Karras 잡음 스케줄과 비교하면 그다지 차이가 없다고 봐야겠습니다.

결론

단계 정렬(Align Your Steps)는 좋은 품질의 이미지를 생성할 수 있는 괜찮은 잡음 스케줄입니다. 하지만, Karras와 같이 널리 사용되고 있는 잡음 스케줄과 비교했을 때 그 차이는 크지 않은 것 같습니다.

단계 정렬을 사용하면 10단계만에 좋은 이미지를 얻을 수 있지만, 결국 좋은 품질을 얻기 위해서는 20 단계 이상 사용하는 것이 좋을 것 같습니다.

====

이상입니다. 이 글은 https://stable-diffusion-art.com/align-your-steps/ 을 번역하여 작성했습니다.

민, 푸른하늘