AI 이미지/AUTOMATIC1111

Automatic1111 GUI: 초보자 가이드(메뉴 해설)

하늘이푸른오늘 2023. 4. 17. 17:01

Atutomatic1111 Stable Diffusion webUI는 사실상의 표준 GUI입니다. 새로운 기능이 나오면 여기에 가장 먼저 등장합니다. 그런데 쉬운 소프트웨어는 아닙니다. 문서도 별로 없구요. 메뉴를 들여다보면, 특히 설정(Settings)의 경우 너무 복잡해서 숨이 넘어갈 정도입니다. 

이글은 AUTOMATIC1111 GUI를 사용하는 방법에 대한 가이드입니다. 투토리얼로 생각해도 무방합니다. 여러가지 예제가 많이 들어있으니 직접 실습해보시면 좋습니다. AUTOMATIC1111이 뭘 할 수 있는지가 궁금하다면 먼저 대충 어떤 기능이 있는지만 알아보고, 나중에 확인해 보는 것도 좋습니다.

txt2img 탭

GUI를 시작하면 제일 먼저 보이는 것이 text2img (Text to Image)탭입니다. text2img는 말 그대로 프롬프트(Prompt)라고 하는 여러가지 단어들을 이미지로 변환하는, Stable Diffusion의 가장 기본적인 기능을 수행하는 곳입니다. 

기본 사용법

AUTOMATIC1111 - text2img 화면중 가장 중요한 부분
AUTOMATIC1111 - text2img 화면중 가장 중요한 부분

  • 스테이블 디퓨전 모델(Stable Diffusion checkpoint) : 제일 중요한 것은 모델을 선택하는 것입니다. 제가 올린 설치방법에 따랐다면, v15 베이스 모델이 설치되는데, 이외에도 다양한 종류의 모델이 있습니다. 저는 civitai.com에서 제일 인기가 좋은 ChilloutMix 를 기본 모델로 사용하였습니다.
  • 프롬프트(Prompt) : 얻고자하는 이미지의 특성을 단어로 입력하는 곳입니다. 아래는 그 예입니다. 프롬프트 입력하는 방법에 대해서는 이 글과 이 글을 읽어보시기 바랍니다. 특히 후자는 OpenArt.ai에서 만든 프롬프트북을 정리한 건데, 아주 다양한 측면을 다루고 있으므로 도움이 될 겁니다.

                 A surrealist painting of a cat by Salvador Dali

  • 그림의 폭(Width)와 높이(Height) : 생성할 이미지의 크기입니다. Easy Diffusion 메뉴를 설명한 글에 따르면, 학습용 데이터는 대부분 512*512 이기 때문에 이 크기, 혹은 1:1로 하는 게 가장 속도도 빠르고, 좋은 그림이 나올 확률이 높다고 합니다. 
  • 이미지 수(Batch Size) : 동일한 환경으로 한번에 생성할 이미지의 숫자입니다. 적어도 서너개를 입력하는 것이 프롬프트를 시험할 때 좋습니다.

아래는 이렇게 설정하고 [Generate] 버튼을 누른 결과입니다.

이미지 생성 파라미터

아래는 기본적인 이미지 생성 관련 파라미터를 설정하는 곳입니다.

AUTOMATIC111 - Text2Img 탭
AUTOMATIC111 - Text2Img 탭

  • 스테이블 디퓨전 모델(Stable Diffusion checkpoint) 설정 : 위에서 언급한 것처럼 맨 위에 보면 모델을 설정하는 드롭다운 메뉴가 있습니다. 인공지능이 학습한 결과가 모델에 들어 있으므로, 선정한 모델에 따라 만들어질 수 있는 이미지의 종류가 결정됩니다. 예를 들어 학습한 데이터에 고양이 사진이 없었다면, 해당 모델을 가지고는 고양이 이미지를 만들 수 없습니다. 모델을 다운로드 받는 곳은 이 글을 참고하시고, 다만 모델을 Automatic1111이 설치된 디렉토리(기본 %userprofile%/stable-diffusion-webui)에 있는 models\Stable-diffusion에 넣어주면 됩니다.

    모델을 넣어준 뒤에는 드롭다운 메뉴 오른쪽에 있는 [refresh] 버튼을 눌러주면 드롭다운 메뉴에 새로 추가한 모델이 나타나게 됩니다.
  • 프롬프트(Prompt) : 프롬프트는 자신이 생성하고자 하는 이미지의 속성을 단어로 입력하는 곳입니다. 자세한 사항은 프롬프트 작성방법, OpenArt 프롬프트북을 참고하세요.
  • 부정적 프롬프트(Negative Prompt) : 부정적 프롬프트란, 이미지에서 나타나지 않기를 원하는 속성을 입력하는 곳입니다. 이 내용도  프롬프트 작성방법에 일부 설명되어 있습니다.
  • 샘플링 방법(Sampling Method) : 대략적으로 이야기하면, 그림 생성형 인공지능은 잡음을 생성한 후, 프롬프트에 입력된 내용을 참고하여 잡음을 없애가는 과정으로 진행됩니다. 샘플링 방법은 이렇게 잡음을 제거하는 알고리듬을 이용합니다. 알고리듬에 따라 그림이 생성되는 속도도 다르고, 생성되는 결과도 달라지게 됩니다. 샘플링 방법은 아래와 같이 여러가지가 있는데, 저는 Easy Diffusion에서 기본으로 설정되어 있고, 속도도 빠르다고 한 DDIM을 기본으로 사용합니다. 이 글을 보면, 아주 다양한 샘플링 알고리듬의 효과를 볼 수 있는데, 저는 솔직히 그다지 차이를 잘 모르겠습니다.

  • 샘플링 횟수(Sampling Steps) : 잡음 제거를 수행하는 횟수입니다. 크게 할 수록 좋지만, 대부분 25단계 정도면 충분합니다.
  • 그림의 폭(Width)와 높이(Height) : 출력되는 이미지의 크기입니다. 정말 이상하게 느껴지겠지만, 동일한 설정을 하더라도 크기를 변경하면 다른 그림이 나옵니다. 
  • 이미지 생성 횟수(Batch count) : 이미지 생성 파이프 라인을 몇 번 돌릴 것인가를 지정합니다.
  • 1회당 이미지 수(Batch size) : 각각의 파이프라인에서 생성할 이미지의 수. 총 생산되는 이미지의 수는 Batch count x Batch size입니다. 동일한 갯수를 생성할 경우, 1회당 이미지 수를 올리는게 속도가 빠릅니다. 다만, 너무 크게 하면 메모리부족이 발생할 수 있습니다. 
  • CFG 척도 : 무분류기 안내 척(Classifier Free Guidance scale)는 모델이 프롬프트를 얼마나 따르는지를 결정하는 파라미터입니다.
    • 1 - 거의 무시함
    • 3 - 창조적임
    • 7 - 프롬프트와 자유로움 간의 균형
    • 15 - 프롬프트에 가까워짐
    • 30 - 완전히 프롬프트에 따름

씨드 번호(Seed)

씨드번호는 "잠재 공간에서 초기 랜덤 텐서를 생성하는 데 사용되는 씨드 값"이라고 하는데, 한마디로 이미지의 내용을 결정하는 값입니다. -1을 지정하면 무작위로 시드 번호를 지정합니다. 일반적으로 씨드 번호는 무작위로 지정하는데, 마음에 드는 영상에 대해 프롬프트를 고쳐서 이미지를 약간 수정하고 싶은 경우, 해당 씨드 번호를 지정합니다. 

예를 들어, 프롬프트를 "photo of woman, dress, city night background"로 입력해 아래 왼쪽의 사진을 얻었는데, 이 사진에 팔찌를 추가하고 싶다고 하죠. 그러면, 사진를 클릭했을 때 아래에 나타나는 씨드 번호를 찾고, 그 번호를 씨드 번호에 복붙한 다음(씨드 번호 입력란의 오른쪽에 Recycle 버튼을 눌러도 됩니다.), 프롬프트에도 "photo of woman, dress, city night background, bracelet"이라고 추가를 해서 돌려주면 오른쪽의 사진을 얻을 수 있습니다. (물론 설정에 따라 완전히 다른 이미지가 나올 수도 있습니다)

추가 씨드 옵션

씨드 번호 입력란 오른쪽 맨끝에 [Extra]를 체크하면 추가적인 메뉴가 나옵니다.

  • 변화 씨드(Variation Seed) : 추가로 사용하고자 하는 씨드 번호
  • 변화 강도(Variation strength) : 씨드에 미치는 변화 정도. 0을 사용하면 변화가 없어 씨드 값을 그냥 사용하며, 1을 사용하면 변화 씨드 값을 사용하게 됩니다.

    예를 들어, 동일한 설정과 동일한 프롬프트(woman, hoodies, jeans in a spaceship with windows overlooking a planet)를 사용하여(씨드 번호는 각각 3869045693,793903308) 아래와 같은 2개의 이미지를 얻었습니다.
    그런데, 이 두가지 모두가 마음에 들어 두 이미지를 섞어보고 싶다고 해보죠. 이 경우, 씨드 번호에 1을 부여하고, 변화 씨드에 3을 부여한 후, 변화 강도를 달리해줍니다. 아래가 그 결과입니다. 왼쪽부터 변화강도를 0.25, 0.5, 0.75를 부여한 결과입니다. 배경과 자세가 약간씩 변하는 걸 볼 수 있습니다. 아주 재미있네요. Easy Diffusion이 사용하기 쉽고 결과도 잘 나오는 편인데, 이런 기능은 지원해주지 못하니 아쉽네요.
  • Resize seed from width/height : 일반적으로 이미지의 크기를 변경시키면 씨드 번호가 동일할 경우에도 이미지가 매우 달라집니다. 그런데, 이 설정을 사용하면 이미지 크기가 달라지더라도 내용을 고정시키려고 시도합니다. 어떤 이미지가 마음에 드는 데 크기만 변경시키려 하면, 원래 이미지 크기 설정에는 새로운 크기를 입력하고, 이전 이미지 크기를 여기에 입력시키면 됩니다. 또한 변화 강도(Variation Strenth)는 0으로 둡니다. 

    예를 들어 아래 왼쪽은 512x800 이미지인데, 이 옵션을 사용할 경우, 오른쪽 두개와 같은 영상이 생성됩니다. 완전히 똑같은 영상이 크기만 달라진 건 아니지만, 분위기가 비슷한 영상이 만들어진다는 걸 알 수 있습니다. 맨 오른쪽은 갑자기 백인이 되었네요. ㅠㅠ
512x768 512x700 512x600

얼굴 복원(Face Restoration)

인공지능을 사용해 생성한 이미지는 특히 얼굴이 이상하다던가 손/손가락/발 등의 해부학적 형태가 잘못되는 경우가 많다고 합니다. 이러한 경우, 특히 얼굴이 균형이 맞지 않을 때 복원하는 방법입니다. 

얼굴 복원 기능을 사용하기 위해서는 먼저 어떤 모델을 사용할 것인지를 지정해야 합니다. Settings 탭에 들어가 맨왼쪽 메뉴 중 Face restoration을 클릭하고, 복원모델을 선택하면 됩니다. CodeFormer가 괜찮다고 하고요, 이때 바로 밑에 있는 weight parameter는 0 이 최대인데, 얼굴에 이상한 흔적이 안남는 한 낮은 수치일수록 좋다고는 합니다. 저는 그냥 0 으로 사용중입니다. 

Stable Diffusion - 얼굴 복원 파라미터 설정
Stable Diffusion - 얼굴 복원 파라미터 설정

그 다음 txt2img 탭에 돌아와, "Resotre Faces"를 켜면, 그 다음부터 생성되는 이미지에는 얼굴 복원 기능이 적용됩니다. 제가 직접 예를 들어 해보려는데, 얼굴이 뒤틀어지는 경우가 별로 없어서... 요즘은 잘 되는 건지, 제가 사용하는 ChilloutMix 모델은 얼굴이 잘 생성되는지 잘 모르겠네요.

타일링

경계가 나타나지 않게 계속 반복되는, 예들 들면 벽지 무늬 같은 이미지를 생성하고 싶을 때 사용합니다. 이런 이미지를 만들려면 예전에는 포토샵 같은 프로그램에서 그림을 좌우로 붙여가며 아주 힘든 편집이 필요했지만, Stable Diffusion을 사용하면 아주 간단하게 제작할 수 있습니다.

아래는 "flowers, pond, butterfly, pastel tone, by Claude Monet"로 프롬프트를 입력하고 Tiling 옵션을 켠 상태로 생성한 이미지 입니다. 오른쪽은 이 그림을 2x2로 붙여본 것입니다. 

Stable Diffusion - 'flowers, pond, butterfly, pastel tone, by Claude Monet'
Stable Diffusion - 'flowers, pond, butterfly, pastel tone, by Claude Monet'

고해상도 보정(Hires. fix.)

high-resolution fix 옵션을 사용하면 생성된 이미지의 크기를 키울 수 있습니다. 원래 Stable Diffusion 모델은 512 픽셀(일부는 768 픽셀)로 학습되었기 때문에, 그냥 1024x1024 크기를 생성할 경우 머리가 두개 달린 사람처럼 잘못된 이미지가 나오기 쉽습니다. 따라서 512x512 등으로 이미지를 생성한 후, 더 큰 이미지로 변환해주는 게 좋습니다. 

Hires.fix를 선택하면 아래 그림과 같이 바로 아래에 추가적인 메뉴가 나타납니다. Upscaler는 이미지를 키울 때 사용하는 알고리듬이고, Upscale by는 키우는 비율입니다. 현재는 2로 설정되어있으니 512x512 이미지가 1024x1024로 출력됩니다. 

Stable Diffusion - 고해상도 보정 메뉴
Stable Diffusion - 고해상도 보정 메뉴

저는 이 옵션을 별로 좋아하지 않아서 생략합니다.

[Generate] 버튼 아래에 있는 단추들

AUTOMATIC1111 - 이미지 생성 메뉴
AUTOMATIC1111 - 이미지 생성 메뉴

생성(Generate) 버튼 바로 아래에는 작은 버튼 5개가  있습니다. 왼쪽부터 오른쪽으로 설명합니다.

- Read the last parameter : "[Generate] 버튼을 누를 때 동일한 영상이 생성되도록 모든 필드를 채워준다"라는데 솔직히 눌러봐도 뭔지를 잘 모르겠네요. ㅠ

- 쓰레기통 : 현재의 프롬프트와 부정적 프롬프트를 모두 지웁니다.

- Model 아이콘 : 왠 뜬금없이 팔광 화투패가 등장했는지른 모르겠는데... 추가 네트워크를 보여줍니다. 이 버튼을 누르면 hypernetwork, embedding, LoRA 등을 프롬프트에 넣을 수 있습니다. 아직까지 모르는 내용이라 좀 더 공부해봐야겠습니다.

- 스타일 불러오기 : 미리 저장한 스타일을 드롭다운을 통해 불러올 수 있습니다. 기존에 저장된 프롬프트와 부정적 프롬프트를 불러오는 데 유용합니다.

- 스타일 저장하기 : 현재 설정된 프롬프트와 부정적 프롬프트를 저장합니다. 저장할 때 스타일의 이름을 지정해야 합니다.

Image 파일 처리

- 폴더 열기 : 생성된 이미지가 저장된 폴더를 엷니다.

- 저장(Save) : 선택한 이미지를 저장합니다. Settings에서 "Always save all generated images(항상 저장)"을 체크해 두었을 경우, 아무런 변화가 없습니다.

- 압축(Zip) : 생성된 이미지를 압축합니다.

- Send to img2img : 선택한 이미지를 img2img 탭으로 보냅니다.

- Send to inpainting : 선택한 이미지를 img2img 탭에 있는 inpainting 탭으로 보냅니다. 

- Send to extras : 선택한 이미지를 Extras 탭으로 보냅니다.

Img2img 탭

img2img 탭은 이미지를 바탕으로 새로운 이미지를 생성하는 기능이 들어있습니다. 대부분의 사용자들은 인페인팅(그림 일부 수정) 을 하거나, 이미지를 다른 이미지로 변화시킬 때 사용합니다.

Img2Img 사용 방법

img2img는 어떤 이미지를 바탕으로 새로운 이미지를 만들어내는 데 사용합니다. 먼저 간단하게 사용하는 방법입니다. 아래는 독수리 사진을 기반으로 독수리의 자세와 비슷한 형태로 드래곤을 그리고싶은 경우입니다.

Automatic1111 img2img 사용방법
Automatic1111 img2img 사용방법

  1. 제일먼저 그림 영역에 기반이 되는 이미지를 드래그 앤 드롭합니다. 또는 그 영역을 클릭하면 파일을 선택할 수 있습니다.
  2. 생성하고자 하는 이미지에 대한 프롬프트(A photorealistic illustration of a dragon)를 입력합니다.
  3. 샘플링 알고리듬을 선택하고 샘플링 횟수를 입력합니다. 
  4. 생성할 이미지의 크기를 입력합니다. 가로 세로 배율이 일정해야 이미지가 찌그러지지 않습니다(자세한 사항은 아래를 읽어보세요)
  5. 생성할 이미지 갯수를 지정합니다. Batch size는 한번에 작업할 숫자입니다.
  6. 잡음 제거 강도(Denoising stregth)를 입력합니다. 크게 입력할 수록 원본과 멀어지게 됩니다.

아래는 이 결과 만들어진 드래곤 이미지입니다. 잡음제거 강도는 1.0으로 설정하였습니다. 

Resize 모드

Resize 모드는 생성할 이미지가 원본과 크기가 다를 때 어떻게 처리할지를 결정하는 사항입니다.

Automatic1111 - img2img resize 모드
Automatic1111 - img2img resize 모드

  • Just resize : 입력된 이미지를 생성할 이미지의 크기에 강제로 맞춥니다. 즉 가로세로 비율을 고려하지 않으므로 이미지가 찌그러질 수 있습니다.
  • Crop and resize : 새로운 이미지의 공간에 원본 이미지를 맞춥니다. 이 과정에서 맞지 않는 부분은 잘려나가게 됩니다. 
  • Resize and fill : 원본 이미지를 새로운 이미지의 공간에 맞추는데, 모자라는 영역은 원본 이미지의 평균적인 색으로 채워 넣습니다. 
  • Just resize(latent upscale) : "Just resize"와 비슷하지만, 확대축소가 발생합니다. 값을 0.5 이하로 주면 흐린 이미지가 생성됩니다. 

잡음 제거 강도(Denoising strength)

잡음 제거 강도는 그림이 변화하는 정도를 제어합니다. 0으로 두면 아무것도 변하지 않고, 큰 값을 주면 더 많이 변화합니다. 아래 그림을 보시면 값에 따라 원본 그림으로부터 괴리가 커짐을 알 수 있습니다. 대부분의 경우 0.75 정도에서 시작한 뒤 조정하는 게 좋습니다.

원본 0.2 0.4
0.6 0.8 1.0

스케치(Sketch)

이미지를 업로드 하지 않고, 대략적인 형태를 스케치하여 기본 그림으로 삼을 수 있습니다.

1. 먼저 img2img 탭을 열고 다시 sketch 탭을 클릭합니다.

AUTOMATIC1111 - sketch
AUTOMATIC1111 - sketch

2. 다음으로 하얀색 배경 이미지를 불러옵니다. 배경이미지는 아래에서 다운받을 수 있습니다.

512x512.png
0.01MB

하얀색 배경

512x512_black.png
0.01MB

검은색 배경

3. 생각하는 대로 대충 그림을 그립니다. 아주 간단한 기능 뿐이라서 매우 불편합니다. 아이콘 4개중 오른쪽 맨위는 그림을 완전히 취소, 그 왼쪽은 방금전 그리기 취소, 아래쪽은 선 굵기 지정, 맨 아래는 색 지정입니다.

AUTOMATIC1111 - Sketch 아이콘
AUTOMATIC1111 - Sketch 아이콘

4. 프롬프트를 적어 넣습니다. 

5. [Generate] 단추를 누릅니다.

아래는 이러한 과정을 통해 그린 그림입니다. 왼쪽은 제가 대충 그린거, 오른쪽은 "3D architectural model of award wining house"라는 프롬프트를 지정해서 나온 결과물입니다. 생각한 거보다 훨씬 잘 나왔네요.ㅎ

하지만 마우스로 그림을 그리기는 쉽지 않죠. 그냥 색연필로 대충 그린다음에 원하는 것을 프롬프트로 지시해 주는 게 훨씬 나을 수 있습니다. 아래 왼쪽은 제가 그린 그림(이게 그림인가...ㅠ)이고, 이를 사용해서 Stable Diffusion에서 생성한 그림입니다. 프롬프트는 "a color pencil sketch of  girl in grassland, standing pose,  praying, clasp hands on the chest, facing right, look into the distance, flowers,  blue sky with clouds,  small hill in the background, photorealistic, masterpiece" 
부정적 프롬프트는 "POV" 하나만 주었습니다. 원하는대로 자세를 잡게 하는 게 쉽지 않았네요. 왼쪽 방향을 보는 건 많이 나오는데, 오른쪽으로 틀으라하니 너무 힘든 모양입니다.

인페인트(Inpaint)

인페인트는 사진의 일부를 수정하고 싶을 때 사용합니다. txt2img로 이미지를 생성한뒤, 다 마음에 드는데 일부분만 마음에 안들 때 그 부분만 다시 생성하도록 하면 됩니다.

예를 들어 text2img에서 아래와 같은 이미지를 뽑았다고 하겠습니다. (프롬프트 : Closeup face portrait of a black girl  wearing crown, smooth soft skin, big dreamy eyes, beautiful intricate colored hair, symmetrical, anime wide eyes, soft lighting, detailed face, by makoto shinkai, stanley artgerm lau, wlop, rossdraws, concept art, digital painting, looking into camera) 오늘 뽑은 이미지중에서 제일 마음에 드는데, 다만, 목 장식이 꼭 구속구 같애서 마음에 안들어서 다른 형태의 화려한 목걸이로 바꿔보겠습니다. 

Stable Diffusion - 인페인트 전
Stable Diffusion - 인페인트 전

우선 txt2img의 출력물 아래에서 [send to inpaint] 버튼을 눌러줍니다. 이 상태에서 새로 그려줄 Mask를 칠해줍니다. 

Stable Diffusion - 인페인트 마스크
Stable Diffusion - 인페인트 마스크

다음으로, 아래와 같이 설정합니다(기본 설정입니다.)

  • 잡음제거 강도(denoising strength) : 0.75. 출력을 확인하면서 조정합니다.
  • 마스크 콘텐츠(mask content): original
  • 마스크 모드(mask mode) : Inpaint masked
  • 프롬프트 : big colorful necklace 를 추가

아래가 그 결과입니다. 구속구 같은 게 사라지지는 않았지만... 몇번 더 시도하면 괜찮은 게 나올 수도 있겠죠.

Stable Diffusion - 인페인트 적용후
Stable Diffusion - 인페인트 적용후

인페인트 스케치(Inpaint Sketch)

인페인트 스케치는 인페인트와 스케치를 결합한 것입니다. 스케치 탭에서 처럼 그림을 그려주는데, 색칠한 부분만 새로 그려줍니다. 이때 무슨 색을 칠했는지가 결과에 영향을 미칩니다. 칠하지 않은 부분은 변경되지 않고요. 

아래 그림은 원 사이트에서 가져왔습니다. 이 그림을 재생해 보려고 동일한 프롬프트(photo of woman, wearing fantastic hand dyed cotton clothes,embellished, beaded feature, devorative, fringe, knots, colorful pigtail)를 아무리 돌려도 완전히 다른 형태만 나오는 걸로 보아 기본 모델이 다른 걸 사용했나봅니다.

Stable Diffusion - 인페인트 스케치 새로 그릴 부분
Stable Diffusion - 인페인트 스케치 새로 그릴 부분

아래는 결과입니다. 프롬프트에는 scarf만 추가하고 나머지는 그냥 기본 설정으로 두었습니다. 스카프까지 잘 그려졌네요. 원본보다 더 좋다고는 할 수 없어도, 원하는 바는 잘 표현해주고 있습니다.

Stable Diffusion - 인페인트 스케치 적용후
Stable Diffusion - 인페인트 스케치 적용후

인페인트 업로드(Inpaint Upload)

마스크를 직접 칠하는 게 아니라, 별도로 만들어 업로드 하는 방식입니다. 페인트샵 같은 툴을 잘 사용하면 유용하게 사용할 수 있을 듯 싶지만, 저는 생략합니다.

배치(Batch)

여러종류의 이미지에 대해 img2img나 인페인트를 한까번에 적용할 수 있는가 본데, 시험해보지 않았습니다.

이미지로부터 프롬프트를 알아내기(Get Prompt from an image)

Stable Diffusion에서 좋은 이미지를 얻기 위해서는 적절한 프롬프트를 넣어주어야 합니다. 그래서 대부분 civitain.com과 같이 AI 이미지를 공유하는 곳에서는 이미지와 함께 프롬프트 및 기타 설정을 함께 공유합니다. 이걸 사용해서 비슷한 그림을 얻도록 테스트해볼 수 있죠.

하지만, 프롬프트가 없이 그냥 그림만 있는 경우가 있습니다. 이때 img2img에 그림을 올리고 프롬프트 입력란의 오른쪽에 있는 [Interogate CLIP] 버튼을 눌러주면 됩니다. 아래는 구글에서 봄풍경을 검색해서 raycat님 사이트에서 가져온 그림으로 시험해 본 결과입니다. (도중에 에러가 났습니다. 그림 생성보다 프롬프트 역산이 더 힘든 모양이네요) 생성된 프롬프트는 "a river with a few trees and water in it and a sky background with clouds and blue sky and some water" 입니다. 이정도만 해도 꽤 쓸모가 있겠네요.

Stable Diffusion - Interogate Prompt
Stable Diffusion - Interogate Prompt

아래는 이렇게 만들어진 프롬프트를 약간 고쳐 cherry blossom을 추가한 뒤(a river with a few  trees and water in it, cherry blossom, a sky background with clouds and blue sky) txt2img로 돌려본 결과입니다. 완전히 다른 그림인데... 원본 사진의 구도는 남아있네요. ㅎ

Stable Diffusion - 벗꽃 나무가 있는 개천 모습
Stable Diffusion - 벗꽃 나무가 있는 개천 모습

[Interogate CLIP] 바로 아래에 있는 [Interogate DeepBooru] 버튼도 비슷한 역할을 해주는데, 다만 애니 이미지를 위해 만들어진 거라고 합니다.

이미지 확대(UpScaling)

img2img 탭 바로 옆에 있는 Extra 탭으로 들어가면 이미지를 확대할 수 있습니다. 단순 확대가 아니라, 인공지능이 비어있는 픽셀을 추론해 적절한 디테일을 추가하는 방식으로서, 기존에도 여러가지 소프트웨어가 있지만 AUTOMATIC1111에서 (무료로)직접 사용가능합니다.

기본 사용방법

1. Extra 탭을 누릅니다.
2. 이미지 탭에 원하는 이미지를 불러옵니다.
3. 배율(Scale by)를 선택합니다. 4를 선택하면 가로 세로가 모두 4배로 확대됩니다.
4. 적용할 알고리듬(Upscaler)를 선택합니다. R-ESRGAN 4x+가 대중적인 일반용 AI 이미지 확대 알고리듬이라고 합니다.
5. 마지막으로 그림 아래에 있는 [Generate]를 누르면 확대된 그림이 완성됩니다.

아래는 이런 방식으로 4배 확대하여 얻은 이미지(오른쪽)를 원본과 비교한 것입니다. 포토샵에서 이미지 샤프닝을 적용했을 때의 아쉬움을 다시는 느낄 필요가 없을 듯하네요. ㅎㅎㅎ

AUTOMATIC1111 이미지 확대(Upscale)
AUTOMATIC1111 이미지 확대(Upscale)

확대 알고리듬(Upscaler)

AUTOMATIC1111은 여러가지 확대 알고리듬을 제공합니다. 더 필요할 경우 여기에서 다른 알고리듬을 추가할 수도 있습니다.

AUTOMATIC1111에서 제공하는 AI 확대 알고리듬
AUTOMATIC1111에서 제공하는 AI 확대 알고리듬

이중에서 Lanczos와 Nearest 알고리듬은 AI가 나오기 전에 사용하던 일반적인 확대 알고리듬입니다. ESRGAN, R_ESRGAN, ScuNet, SwinIR등은 모두 AI 확대 알고리듬입다. 일부는 학습한 스타일을 적용한다고 하고요. 

보조 확대 알고리듬(Upscaler2) : 두가지 확대 알고리듬을 결합하고 싶은 경우 사용합니다. 두번째 알고리즘을 여기에 추가하고, 어느 정도로 반영할지는 Upscale 2 Visibility에 입력하면 됩니다. 높은 값일수록 두번째 알고리듬이 더 많이 적용됩니다.

PNG Info

AUTOMATIC1111을 비롯한 여러가지 Stable Diffusion GUI는 출력하는 PNG 파일에 생성시 시용된 파라미터를 저장합니다. 이러한 정보를 확인하고, 재사용할 수 있습니다. 웹에서 이미지를 찾았을 때에도 일단 여기에서 관련 정보가 있는지 확인해 보는 것이 좋겠네요.

만약 AUTOMATIC1111으로 생성하였을 경우, [Send to ...] 버튼을 누르면 해당 정보를 txt2img, img2img, inpaint, extra 등에 보낼 수 있습니다.

생성되는 PNG 파일에 파라미터를 저장하려면, Settings 탭에서 Saving images/grids -> "Save text information about generation parameters as chunks to png files"를 체크해두어야 합니다.

AUTOMATIC1111 - 생성정보 PNG에 저장
AUTOMATIC1111 - 생성정보 PNG에 저장

체크포인트 병합기(Checkpoint merger)

Stable Diffusion에서 사용하는 학습된 모델을 체크포인트(checkpoint)라고 합니다. AUTOMATIC1111 체크포인트 병합기는 두개이상의 모델을 합치는 데 사용합니다. 최대 3개까지 합칠 수 있는데, 단, 병합 결과가 좋다는 건 보장하지 못한다고 합니다. 예상지 못한 결함이 발생할 수도 있다고 하네요.

AUTOMATIC1111 - 체크포인트 병합기
AUTOMATIC1111 - 체크포인트 병합기

1차/2차/3차 모델(Primary/Secondary/Tertiary Model)

입력 모델을 지정합니다.

인터폴레이션 방법(Interpolation methods)

  • No interpolation - 1차 모델만 사용합니다. 이는 파일을 변환하거나 VAE를 대체하는 데 사용합니다.
  • Weighted sum : A, B 두 모델을 합칠 때 가중치(multiplier weight) M을 적용합니다. 공식은 
        A(*1-M) + B*M 으로 적용합니다.
  • Add Difference : 세 모델을 합칠 때 공식 A + (B-C)*M 을 적용합니다.

체크포인트 포맷(Checkpoint format)

  • ckpt : 원래의 체크포인트 모델 포맷입니다.
  • safetensors : SafeTensor는 Hugging Face에서 개발한 새로운 모델 포맷입니다. ckpt 모델과는 달리 악성코드가 심어져 있을 경우에도 실행되지 않기 때문에 안전합니다.

Bake in VAE : 선택할 경우 VAE 디코더를 대체합니다. Stability 에서 더 좋은 게 나왔을 때 대체하기 위한 목적이라고 하니, 신경쓸 필요는 없겠네요.

학습(Train)

학습 탭은 모델을 학습시키기 위한 목적입니다. 현재는 textual inversion(embedding)과 hypernetwork을 지원합니다. 나중에 좀 더 알아봐야 할 것 같습니다.

설정(Settings)

AUTOMATIC1111 환경을 설정하기 위한 여러가지(사실은 너무 많은) 항목이 들어 있습니다. 너무 많아서 일일이 설명하기는 힘든데, 다만 어떤 걸 수정하였다면 반드시 [Apply settings]를 눌러야 반영된다는 것을 기억하세요.

====

이상입니다. 이글은 Andrew님이 작성한 https://stable-diffusion-art.com/automatic1111/ 를 제가 직접 테스트해보면서 작성하였습니다. 뒷부분은 너무 간략히 넘어가서 아쉬운데, 어차피 일반적으로 사용하는 기능은 거의 다 포함되어 있으니 이정도로도 충분히 사용할 수 있을 것 같네요.

민,푸른하늘