AI 이미지/Stable Diffusion

스테이블 디퓨전: VAE를 사용해 얼굴 잘 그리기

하늘이푸른오늘 2023. 7. 24. 23:14

VAE는 눈을 좀더 잘 생성하기 위한 스테이블 디퓨전 1.4/1.5에 대한 부분적 업그레이드입니다. 이 글에서는 VAE가 무엇인지, VAE를 설치하면 무엇이 좋은지, 어떻게 설치하고 사용하는지 등에 대해 기술합니다.

VAE란 무엇인가?

VAE(variational autoencoder)는 신경망 모델중 일부로, 상대적으로 작은 잠재 공간(latent space)에서 이미지를 인코딩 혹은 디코딩하여 계산속도를 빠르게 하는 기능을 합니다.

VAE가 필요한가?

VAE 파일이 없더라도 Stable Diffusion은 잘 작동됩니다. 어떠한 v1, v2 혹은 맞춤형 모델을 사용할 경우에도 내부적으로 기본 VAE가 포함되어 있으며 이것을 자동으로 사용합니다.

그러므로,  VAE를 다운로드 받는다 혹은 사용한다고 하는 것은, 개선된 버전의 VAE를 사용한다는 뜻입니다. 모델을 학습시키는 사람이 추가적인 자료를 사용해 VAE 부분만 세부조정했을 때 이런 경우가 발생합니다. 크기가 큰 완전히 새로운 모델로 공개하는 대신 갱신된 아주 일부분만 공개하는 겁니다. 

VAE의 효과는?

대부분의 경우 VAE는 효과가 거의 미미합니다. 기본적으로 향상된 VAE는 잠재공간에서 이미지를 더 잘 디코딩하여, 세부 디테일이 작복원됩니다. 또한 미세한 부분이 중요한 눈과 텍스트를 렌더링하는데 도움이 됩니다. 아래는 몇가지 VAE를 비교해본 것입니다.

EMA, MSE 및 원래의 디코더간 비교(소스: stability.ai, 256x256 이미지)
EMA, MSE 및 원래의 디코더간 비교(소스: stability.ai, 256x256 이미지)

어느 VAE를 사용하면 좋을까요? Stability.ai에서 256x256 이미지를 사용해 평가한 결과에 따르면 EMA는 약간 선명한 이미지가 나오고, MSE는 약간 부드러운 이미지가 생성된다고 합니다.

이 글의 저자가 512x512 이미지를 사용해 스테이블 디퓨전 1.4 및 1.4 를 사용해 테스트한 결과에 따르면, 일부 이미지, 특히 얼굴이 작은 이미지의 경우 특히 눈이 잘 묘사되었다고 합니다. 다만 텍스트는 그다지 차이가 없었다고 하고요. 어쨌든 결론적으로 VAE를 사용하면 좋아지면 좋아졌지 나쁜 결과가 나오지는 않는다는 것이 결론이었습니다.

아래는 v1.5 모델을 사용하여 원래의 VAE, EMA, MSE를 적용한 결과를 비교한 것입니다. (프롬프트는 사실적인 인물사진을 생성하는 방법에 적용했던 프롬프트입니다.) 이미지를 클릭해서 비교해 보세요.

원래의 VAE EMA MSE

텍스트가 너 낫게 생성되는지는 그다지 명확하지 않습니다. 아래는 동일한 프롬프트에 "holding a sign said Stable Diffusion"을 추가한 결과입니다. 사실 스테이블 디퓨전 1.4/1.5에서 글씨가 원하는대로 나오길 기대하는 건 힘들죠. 마른하늘에 벼락 수준으로요.

원래의  VAE EMA MSE

이러한 VAE는 맞춤형 모델에도 적용할 수 있습니다. 다만 이 글의 원본에서 테스트해본 결과 애니메 스타일에서는 별다른 변화가 없었다고 합니다. 

아울러 EMA와 MSE는 스테이블디퓨전 v2.0에도 사용할 수 있다는데 효과는 별로 없었다고 합니다. v2.0의 경우 이미 눈을 잘 표현하기 때문이라고. 

VAE를 꼭 사용해야 하나?

Stable Diffusion 결과물이 만족스럽다면 구지 VAE를 바꿀 필요는 없습니다. 예를 들어 CodeFormer를 사용해서 얼굴을 수정하고 있고 이미지가 마음에 든다면 바꿀 필요는 없겠죠. (CodeFormer 사용여부는 Settings 페이지의 좌측에서 Face restoration 항목을 찾아보시면 됩니다)

가능하면 아주 작은 개선이라도 적용하고 싶은 분이라면 VAE를 사용하는 것이 좋습니다. 한 번만 설정해두면 그 이후에는 동일한 워크플로가 자동으로 유지됩니다. 

VAE 사용방법

다운로드

현재 stability.ai에서 공개한 개선된 버전의 VAE는 두가지가 있습니다. 아래의 두 링크에서 다운로드 받으시면 됩니다.

EMA VAE

MSE VAE

VAE 파일은 아래의 폴더에 넣어주시면 됩니다.

stable-diffusion-webui/models/VAE

설정 방법

AUTOMATIC1111에서 VAE를 사용하려면, Settings 페이지에 들어간 뒤, 왼쪽 메뉴에서 Stable Diffusion 을 클릭합니다. 그 다음 아래 그림과 같이 SD VAE 부분을 찾아 드롭다운을 눌러 VAE 파일을 선택하면됩니다. 드롭다운 메뉴에 다운받아둔 VAE 파일이 안보일 경우, 오른쪽에 있는 하늘색 [Refresh] 버튼을 누르고 선택하면 됩니다. 

그 아래쪽에 있는 체크박스는 체크포인트 파일에 자체적으로 .vae.pt 를 가지고 잇는 경우에는 이 설정을 무시하라는 뜻입니다. 기본 설정대로 켜두었습니다.

스테이블 디퓨젼 VAE 추가 설정
스테이블 디퓨젼 VAE 추가 설정

마지막으로 맨 위쪽에 있는 주황색 [Apply Settings]버튼을 눌러주면 됩니다.

이상입니다. 이 글은 stable-diffusion-art.com의 글중에서 필요없는 부분만 제외하고 거의 그대로 번역한 글입니다.

민, 푸른하늘