Stable Diffusion 지난 3편부터 시작해서 이번 포스팅을 마지막으로 Stable Diffusion WebUI의 메뉴설명은 마치고, 프롬프트나 플러그인, 컨트롤넷 등의 상세한 설명으로 들어가도록 하겠습니다.

이제 UI 설명이 남은 메뉴는 몇개 안되는데요. 중요하지만 UI설명이 아닌 부분은 따로 잡고 심층적으로 이야기 해보도록 하겠습니다.

Extras

말 그대로 Extra, 곁다리 기능들입니다. 이미지를 생성하는 과정에서도 Scale 기능은 있었는데요. 설정할 수 있는 옵션이 얼마 없었습니다.

Extras에 있는 Upscale 기능은 좀 더 상세하게 모델을 선택할 수 있는데요. 단순 확대가 아니라 적절한 디테일을 추론해서 생성하는 방식으로 단순히 이미지의 Sharpen효과를 주는 것과는 다릅니다.

실제 예제를 만들어보기 위해서 이미지를 작게 만들어서 다시 확대하는 샘플로 진행해보겠습니다.

Scale 적용전
Scale 적용해서 새로 생성한 이미지

위의 예제처럼 pixel이 보일 정도로 깨지는 이미지도 새롭게 사이즈를 키워주는 기능입니다. 사용한 설정값은 아래와 같습니다. 대중적인 Upscale 모델인 R-ESRGAN 4x+를 사용했고, 나머지 값들은 기본으로 했습니다. Scale By에 들어가는 숫자는 배율이라고 보면 됩니다.

4로 설정되면 가로가 4배, 세로도 4배 이렇게 400% 사이즈로 새로 만들게 됩니다.

Upscaler 1 을 누르면 위와 같은 선택 값들이 나옵니다. 초해상도 알고리즘 들에 대한 명칭인데 ESRGAN은 Enhanced Super Resolution Generative Adversarial Network의 약자로 TensorFlow의 초해상도 샘플에 등장하는 모델입니다. [논문] [코드]

각각 상세한 내용을 다루기엔 난이도가 급 상승하는 듯하여, 다음 기회로 넘기고 가장 대표적으로 R-ESRGAN 4x+를 많이 쓴다는 점만 기억해주시면 될 것 같습니다.

밑에 Upscaler2 는 보조확대 모델으로 2가지 확대모델을 합쳐서 쓰고 싶을때 사용하면 됩니다. 이 모델들의 알고리즘을 정확히 알아야 사용할 수 있을 것 같습니다.

Upsacle2 Visibility의 값이 클수록 2번째 모델의 적용도가 높아집니다.

PNG Info

이 메뉴는 학습하는 과정에서 더욱 중요할 수 있는 기능입니다. 바로 전 포스팅에서 설명했던 img2img 에서 Interrogate Clip 기능이 있었습니다. 이미지를 기반으로 프롬프트를 추출하는 기능이었는데요.

PNG Info는 Stable Diffusion에서 생성할때 이미지에 포함되는 Meta정보를 보여주는 기능입니다.

예전에 만들었던 이미지를 Upload 해보겠습니다.

이런 식으로 프로그램 내에 저장되는게 아니라 이미지 자체에 삽입된 정보를 보여줍니다. CivitAI같은 커뮤니티 혹은 웹에서 공유되는 이미지들 중에서 이 기능을 써서 정보값이 있는지 확인해보면 프롬프트 정보를 얻을 수도 있겠네요.

밑에 send to txt2img 같은 버튼들을 눌러서 해당 탭으로 보낼 수도 있습니다.

이 기능은 기본적으로 설정되어있는데, 프롬프트를 매번 노트해둘 필요없어서 좋습니다. Settings > Saving images/grids 에 “Save text information about generation parameters as chunks to png files” 옵션을 활성화 하면 됩니다.

Checkpoint Merger (모델 병합)

Stable Diffusion에서 사용하는 체크포인트를 적절히 조합해서 사용할 수 있습니다. CivitAI에서 보다보면 Checkpoint, Lora 외에 가끔 Checkpoint Merge 라는 타입도 보셨을겁니다. 이런식으로 생성해낸 모델이라고 보시면 됩니다. 최대 3개의 모델을 병합할 수 있는데, 결과가 좋진 못한 것 같습니다.

각 모델을 비율대로 합치는데, Primary model (A), Secondary model (B), Tertiary model (C) 을 선택하면 되고, 생성할 이름도 정해줍니다.

위의 공식이 써있지만 Multiplier 값을 0.3 으로 설정하면 A모델이 70%, B모델이 30% 라는 의미입니다. 공식 예. A * (1 – M) + B * M

Interpolation Method

Interpolation은 알려진 지점의 값 사이(중간)에 위치한 값을 알려진 값으로부터 추정하는 것을 말합니다.

  • No Interpolation : 1차 모델만 사용, VAE를 대체하는데 사용
  • Weighted sum : 2개의 모델을 합칠때 사용합니다. Multiplier 값을 0.3 으로 설정하면 A모델이 70%, B모델이 30% 라는 의미입니다. 공식 예. A * (1 – M) + B * M
  • Add Difference : 3개의 모델을 합칠때 사용합니다. 뒤의 2개 모델의 차이점을 1번째 모델에 더하는 형태입니다. 공식 예. A + (B – C) * M

Checkpoint Format

  • ckpt : 체크포인트 모델포맷
  • safetensors : Hugging Face에서 개발한 포맷으로 상대적으로 보안에 좋다는 평입니다.

Bake in VAE : 선택하면 VAE 디코더를 대체합니다. 이전 포스팅에서 다운받은 VAE를 이 곳에서 지정해서 사용할 수 있습니다. (vae-ft-mse-840000-ema-pruned.safetensors)

Train

모델과는 별개로 학습을 추가로 시키는 건데, embedding(Textual Inversion) / hypernetwork 을 지원하고 있습니다.

Embedding

Textual Inversion이라고도 불리는 Embedding 기술은 체크포인트(모델데이터)와 별도로 이미지로부터 학습한 데이터를 준비해서 특정 이미지와 매우 유사한 이미지를 생성 가능합니다. 학습에 필요한 메모리가 비교적 적다는 게 장점입니다.

Hypernetwork

하이퍼네트워크(Hypernetwork)를 사용해서 특정 그림체를 카피해서 내 모델에 적용할 수 있습니다. 다만 시간이 굉장히 오래걸립니다.

사용법은 우선 학습시킬 유사한 스타일의 이미지를 최소 20장, 최대 150장을 수집합니다. 그리고 학습을 위해서 Square 비율(1:1)로 변경해줍니다. TrainingSet의 이미지 규격은 128,256,512 이런 규격을 맞춰주는 게 속도에 도움이 됩니다. (512x512px 추천)

이렇게 모은 특정 이미지들의 특징을 모아서 LORA로 특징을 모두 가져오면 비슷한 이미지를 뽑아낼 수 있습니다.

일단 UI설명 목적의 포스팅인 관계로 말로만 설명을 간단히 드렸습니다. 이후 상세히 설명하는 포스팅을 작성해볼께요.

Settings

Stable Diffusion의 상세설정 메뉴입니다. 메뉴를 전부 설명하려고 했는데, 대부분 기본값으로 사용하고 있어서 앞으로 포스팅을 하면서 세팅을 바꿔가며 해야되는 부분들만 발췌해서 설명하도록 하겠습니다.

이 많은 메뉴를 다 이해하고 습득해야 할 필요가 전혀 없기 때문입니다.

여기까지를 마지막으로 메뉴에 대한 설명은 마치고, 다음 포스팅부터는 실질적으로 이미지를 만드는데 필요한 부분을 알아가보도록 하겠습니다.

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here