Marketing
2024-04-02

Stable Diffussion A to Z

Stable Diffussion A to Z

안녕하세요! RunyourAI 입니다.

이전 글을 통해 RunyourAI에서 10분만에 Stable Diffusion으로 AI 이미지 생성하는 법을 소개해 드렸는데요.이번에는 Stable Diffusion의 모델 및 파라미터 등을 조정하며 원하는 이미지를 만드는 방법을 알려드리려고 합니다.🤗

그럼 시작할게요!

Stable Diffusion 설정 톺아보기.

위의 사진과 같이 Stable Diffusion Web UI에 접속하면 이미지를 생성하기 위한 다양한 설정이 있는걸 볼 수 있습니다. 대체 이것들이 무엇을 뜻하고 어떻게 해야 내가 원하는 이미지에 가깝게 생성이 되는걸까요? 🤔

지금부터 주요 설정에 대해 하나씩 살펴보도록 하겠습니다.

  • Prompt & Negative Prompt
    • 맨 위 상단에 있는 Prompt는 생성할 이미지에 대한 텍스트를 입력하는 곳이며,Negative Prompt에 생성되는 이미지에서 제외하는 부분을 입력하여 설정 할 수 있습니다.
  • Sampling method & steps
    • 프롬프트 하단으로 내려가면 Sampling methodSampling Steps가 존재하는데요. Sampling method는 생성할 이미지의 노이즈를 제거하는 모델을 설정하는 부분입니다.Sampling steps를 통해 노이즈 제거 횟수를 설정 할 수 있어요.
위 사진 처럼 Step수에 따라 고화질의 이미지를 생성할 수 있지만 그만큼의 VRAM이 필요합니다.
💡 보통 이미지의 경우 Steps는 20~30 정도로 설정하면 적당히 원하시는 이미지를 생성할 수 있어요!
  • Hires. fix & Refiner(Switch at)
    • Sampling 옵션을 보면 Hires. fix 옵션이 존재하는데요. 해당 옵션은 이미지가 생성 된 후 해상도를 조정(Upscailing)하는 옵션입니다. 간단히 말해 저화질의 이미지를 설정한 화질의 이미지로 맞춰주는 옵션입니다.
    • Refiner는 이미지를 생성한 후에 디테일한 부분을 개선하기 위해 다른 이미지 학습 모델을 적용하는 부분입니다. (2가지 모델을 동시에 사용할 수 있다는 이점이 있어요!)Switch at 설정을 통해 refiner 모델로 교체할 시점을 설정 할 수 있습니다. 0에 가까울 수록 refiner 모델을 많이 사용합니다.
[출처 : https://www.comet.com/site/blog/image-inpainting-for-sdxl-1-0-base-refiner/]
  • Batch count & Batch size
    • 여러개의 이미지를 생성하고 싶다면 Batch count를 조정하여 생성할 수 있습니다. Batch count를 2로 설정하면 첫번째 이미지가 생성된 후에 두번째 이미지가 생성됩니다.
    • 동시에 두 개의 이미지를 생성하고 싶다면 Batch size를 설정해 주면 되는데요. Batch size를 2로 설정하면 동시에 두 개의 이미지가 생성됩니다.
  • Width & Height
    • 해당 설정은 생성할 이미지의 해상도 입니다. 크기를 높일 수록 더 많은 VRAM이 요구되니, HW 사양에 맞게 해상도를 조절해야 합니다.
  • CFG Scale
    • CFG Scale은 이미지 생성할 때 입력한 Prompt가 이미지 결과에 얼마나 영향을 미치는 지를 조절하는 설정입니다.해당 값이 높을수록 Prompt에 충실한 이미지를 생성하려고 하지만 이미지가 왜곡될 가능성이 높아지고, 반대로 값이 낮을수록 생성 하려던 이미지와 멀어질 수 있지만 이미지의 품질은 향상됩니다.
💡 보통 7.0에서 13.0사이의 값을 사용하여 이미지를 생성합니다!
  • Seed
    • 다양한 이미지를 생성하다가 원하는 이미지가 나왔을 때, 그 이미지를 기반으로 다른 스타일로 변화를 시키고 싶다면 Seed 를 통해 이미지를 고정할 수 있습니다.동일한 Seed에 동일한 Prompt라면 같은 이미지가 생성 될 것이고, 옵션을 변경 하더라도 기존 이미지에서 크게 벗어나지 않는 이미지로 생성됩니다.
💡 Seed -1은 랜덤하게 이미지를 생성한다는 의미입니다!

원하는 이미지 생성하기.

Prompt 작성하기

내가 원하는 이미지를 완벽하게 생성 하려면 Prompt를 잘 작성하는게 제일 중요합니다. 아무리 설정을 잘 한다 하더라도 Prompt가 엉망이면 원하는 이미지를 생성할 수 없어요.


그래서, Prompt를 어떻게 작성해야 하는지 약간의 팁을 소개하려고 합니다.

먼저 Prompt 작성시에는 아래와 같은 규칙이 있습니다.

1. 모든 Prompt 문구의 기본 우선 순위는 1
2. (prompt: 1.2) : 1.2배 강조
3. [promptA:promptB:0.1] : 2step까지는 promptA, 이후부터는 promptB 적용

해당 규칙을 이해하고, 생성할 이미지의 특징 문구를 나열합니다. Negative Prompt도 마찬가지로 이미지에서 제외하고 싶은 부분을 명시합니다.

위와 같이 Prompt를 입력했을때 다음과 같은 이미지를 생성할 수 있어요.

커뮤니티 활용하기

다른 사람들이 생성한 이미지들을 보면 굉장히 화려하고 품질 좋은 이미지들이 많은데, 왜 내가 생성한 이미지는 그런 퀄리티가 안나올까?🥺 하시는 분들을 위해서 준비했습니다.
바로 커뮤니티를 활용하여 애니메이션 캐릭터, 실사화 인물, 몬스터 등 고퀄리티의 이미지를 만들어 보는 방법!

먼저, Stable Diffusion 유저분들이 사용하시는 대표적인 커뮤니티로는 Hugging FaceCIVITAI가 있어요.

1. Hugging Face
https://huggingface.co/models

Hugging Face는 트랜스포머, 데이터셋 등 인공지능 플랫폼을 제공하는 서비스로, 이중 Stable Diffusion 유저분들은 허브 기능을 주로 이용합니다. 실사화 인물, 애니메이션 캐릭터등을 생성하기 위한 모델을 공유하기 때문이죠.

2. Civitai.com
https://civitai.com/

CIVITAI는 Stable Diffusion을 주 대상으로 하여 학습 모델을 공유하는 오픈 소스 웹사이트로 다양한 생성 이미지를 확인 할 수 있어요.

커뮤니티 내 마음에 드는 이미지 따라서 생성하기

먼저 CIVITAI 내 여러 유저가 생성한 이미지 중 마음에 드는 이미지를 골라 똑같이 생성해 보도록 하겠습니다.

1. 이미지 선택하기

저희는 실사화 이미지를 선택했습니다. 우측에 보면 사용된 모델 및 이미지 생성에 사용된 파라미터를 조회할 수 있습니다.

2. 모델 다운로드 받기

Resources Used 탭을 보면 사용된 CHECKPOINT, LORA 모델을 볼 수 있습니다.

CEHCKPOINT : 이미지를 특정 스타일로 생성되도록 학습한 모델
LORA : 사용중인 CHECKPOINT를 기준으로 좀 더 세분화. 얼굴 모습, 헤어, 형태를 학습한 모델

3가지 모델을 다운로드 하여 다음 위치에 저장합니다.

CEHCKPOINT 저장 경로 : [설치 폴더]\\Models\\StableDiffusion 내 저장
LORA 저장 경로 : [설치 폴더]\\Models\\Lora 내 저장
3. 파라미터 복사하기

이미지 생성시 사용된 파라미터를 그대로 WEB UI에 복사합니다.
파라미터를 그대로 복사해 이미지를 생성할 때 간혹 원하는 형태의 이미지가 생성되지 않는다면, 가장 먼저 Prompt, Negatie Prompt 를 살펴봐주세요!
Prompt
부분을 보면 Lora 모델의 경우 <lora:Trigger Words>로 적용하는 것을 볼 수 있습니다. 이 Trigger Words가 업데이트가 됨에 따라 변경될 수 있어 해당 모델로 이동해 Trigger Words를 조회합니다.

<lora:chilloutmixss_xss10:0.8> Trigger Words가 잘 작동하지 않는다면 위 Trigger Words로 변경해 적용해야합니다. <lora:photorealistic> 와 같이 변경이 필요합니다.
이어서 Negative Prompt 부분을 보면 Easy Negative 를 사용 중 인 것을 볼 수 있습니다.
Easy Negative 의 경우 현재 캐릭터 이미지 생성시 많이 사용 되는 TEXTUAL INVERSION 입니다. 학습된 여러 Prompt를 한 단어로 축약해 적용할 수 있는 모델이죠.

CIVITAI에서 검색하거나 다음 경로로 이동해 Easy Negative 또한 다운로드 합니다.

설치 경로 : https://civitai.com/models/7808/easynegative
저장 경로: [설치 폴더]/models/embeddings 내 저장

위와 같이 Trigger Words를 복사하여 Negative prompt란에 입력해줍니다. 다음과 같이 Prompt에 명시한 특징이 그대로 적용된 이미지가 생성 된 것을 볼 수 있습니다.

특정 이미지 기반의 새로운 이미지 생성하기

Stable Diffusion으로 이미지를 생성한 경우 해당 이미지에 생성 당시 적용된 파라미터 정보가 메타데이터로 저장되어 있습니다. 때문에 WEBUI에서 PNG Info탭으로 이동해 해당 이미지를 업로드하면 적용된 파라미터를 조회할 수 있습니다.

하지만 Stable Diffusion으로 생성한 이미지가 아닌 일반 이미지를 업로드하면 파라미터는 조회되지 않습니다.
일반 이미지를 기반으로 새로운 이미지를 생성하려면 어떻게 해야할까요?바로 Prompt를 추출하면 되는데요. 지금부터 이미지의 Prompt를 추출하는 방법에 대해 알려드리겠습니다.

방법은 간단합니다. 먼저 img2img 탭에서 원하는 이미지를 업로드 하고 Interrogate CLIP , Interrogate DeepBooru 기능을 이용해 Prompt를 추출 할 수 있습니다.

Interrogate CLIP 은 이미지의 특징을 문장으로 출력합니다. (VRAM 6GB이상 자원에서 사용을 권장합니다.)

Interrogate DeepBooru의 경우 이미지의 특징을 쉼표로 구분된 여러 단어로 출력합니다.

💡 위와 같은 Prompt만으로는 비슷한 이미지를 생성하기에 충분하지 않을 수 있습니다.
GPT 혹은 기타 Prompt 생성 사이트 등 Prompt 및 파라미터를 추천해주는 서비스를 이용하는 것도 좋은 방법입니다!

PC방 이용금액으로 고성능 GPU 자원 대여하기.

Stable Diffusion을 실행하기 위해서는 고성능의 GPU 자원이 필요해요. Stable Diffusion 1.5 버전의 경우 VRAM 4GB 이상을 요구하고 Stable Diffusion XL의 경우 최소 VRAM 8GB를 요구합니다.

해당 사양에 맞는 GPU를 개인이 구축하기는 매우 힘들죠 🥺 하지만 저희에게는 RunyourAI✨가 있습니다. RunyourAI를 통해 손쉽게 Stable Diffusion을 사용해보세요 !

새로워진 Runyour AI의 사용 방법은 아래 튜토리얼 링크로 접속하시면, 확인할 수 있습니다.

📘 튜토리얼 살펴보기

다음에 또 유익하고 알찬 정보를 공유하는 포스팅으로 만나요!🙌

감사합니다.‍