https://github.com/mcmonkeyprojects/sd-dynamic-thresholding/wiki


아래 내용은 제가 위키를 통해 제가 이해한 내용/추론을 적은겁니다. 

학술적인 내용x 내가 이해한 바를 적은거라 틀린내용 많을수 있음

3번이 설정값 비교 설명임


1. burn 현상

노이즈를 기본적인 형태로 다듬는 low step에 높은 cfg를 적용하면 burn 현상 발생(흔히 우리가 보는 과한 채색의 현상)


반대로 이미 형태가 잡혀 디테일을 만드는 high step에선 높은 cfg를 먹여도 burn현상이 적어짐. 


기본 SD에선 cfg scale을 constant. 첫 스텝부터 끝 스텝까지 cfg를 동일하게 적용함.


그러면 low step에선 low cfg를 high step에선 high cfg를 먹이면 burn현상도 해결하고 디테일도 잡을 수 있지 않을까?


2. 어떻게 작동하는가


DT(줄여서 부르겠음)는 high scale에서 이런 burn 현상을 막으면서 디테일을 챙기고자 scale mimic과 dynamic precentile clamping/thresholding, 스케쥴러 변경등 3가지의 방법을 떠올림

1. cfg scale mimic

2. 스케쥴러를 통한 step별 cfg스케일 단계적 상승

3. percentile clamping/thersholding

이 세가지를 사용함



1.cfg mimic

mimic의 뜻을 알면 쉬움.


말 그대로 해당 cfg를 흉내 내는거임.

cfg 30에 mimic scale을 5로 한다?

cfg 30 끝이나 중간이 어딘가에서 cfg 5짜리 결과물을 결합 시켜서 burn현상 제거, cfg30의 디테일과 cfg 7의 디테일을 챙기는거임.

그림을 보면 7일때 라자냐 형태가 잘 나오지만 ㅈ냥이 형태가 부족하고, 15일땐 라자냐가 무슨 수건 타올이 되어버림.

그래서 15에 7의 형태를 합성?해서 양쪽의 디테일을 챙기는 듯함.


2. 스케쥴러

아까 SD는 cfg를 constant로 적용한다 했지? 그걸 바꿔서 앞서 말한 low step low cfg, high step high cfg를 실현 하는거임

DT엔 여러가지 스케쥴러가 있다. 그중 3개를 보여줌

(가로축 step, 새로축 cfg)

각 스케쥴러의 특징은

Linear : 선형. 일정 비율로 상승


Cosine : 코사인 곡선으로 상승


Half Cosine : 설정 cfg의 반까지만 코사인 곡선으로 상승

-> 우리가 원하는 high cfg와 대부분의 경우에 이 곡선이 좋다고함 (위키피셜)


Power: 거의 최종 step에서 cfg를 확 올려줌. 설정하는 value 값에 따라 급격한 상승을 시작하는 step이 달라짐.->낮은 step으로 디테일 구현 가능


3. percentile clamping/thresholding

클램핑:일정 범위내로 값을 한정

스래시홀딩: 유효한 값까지 값을 한정


찾아보니 스텝별 latent(노이즈)를 클램핑/스래시홀딩을 통해 burn을 막는듯. 

이때 클램핑/스래시홀딩 값은 percentile을 통해 정해짐.

(출처)

(이게 뭔 소리지?)


3. 설정 값 설명/설정별 실험

WIP 실험 더 해보고 수정함


  • Mimic CFG Scale : 스레시홀딩에 사용할 CFG Scale
  • Top percentile of latents to clamp : Mimic CFG Scale을 통한 clamping 비율(90~100%). 100%에 가까울수록 mimic CFG Scale의 결과 반영 ↑
  • ~~ Scale Scheduler : 해당 CFG Scale을 어떤 스케쥴러로 반영할지 정함(2-2 참고)
  • Minimum value of ~~ scale Scheduler : cfg또는 mimic cfg를 몇번째 스텝부터 반영하는지 정함(추측.)
  • Power scheduler value : Power 스케쥴러에만 사용. 몇 스텝에서 cfg를 확 높일지 정함


constant 스케쥴러 기준 실험 결과

원본

미믹 1

미믹 7

미믹 16

미믹 30

미믹 1 90%

미믹 7 90%

미믹 16 90%

미믹 30 90%


cfg scale≥mimic scale 효과 o 

(cfg=mimic scale 일때 두 값이 클수록 효과가 강해짐. 근데 이러면 번 현상 똑같이 나와서 의미없음)

cfg scale<mimic scale 효과 거의 없거나 없음



https://sd.mcmonkey.org/dynthresh/

제작자가 만든 페이지에서 수치별 결과 확인 가능. 여기선 또 내가 한거랑 결과들이 다름.