일상생활/AI

Stable Diffusion(스테이블 디퓨전) WebUI 03. 이미지 생성하기(Embeddings, Hires 적용)

LeePorter 2024. 4. 29. 17:06

저번 포스팅을 통해서 WebUI를 사용하기 위한 준비과정을 모두 마치셨다면 이제 이미지를 생성하는 과정에 대해서 설명하도록 하겠습니다. 이전 글을 보지 못하신 분들은 아래 링크를 통해 이전 글을 참고해주세요~

 

🟧 이전글 보기

Stable Diffusion(스테이블 디퓨전) WebUI 01. 준비하기

Stable Diffusion(스테이블 디퓨전) WebUI 02. 기본설정


🔷 웹페이지 설명

 

1️⃣ 퀵바

  - 저번 포스팅을 통해 Settings에서 SD VAE 퀵바를 추가하여 Checkpoint 모델과 vae를 바로 변경할 수 있는 메뉴가 보입니다.

 

2️⃣ 메뉴

  - Stable Diffusion WebUI에서 제공하는 기능 및 설정 메뉴바입니다. 

  • txt2img / img2img / Extras : 이미지 생성 및 수정 작업을 수행하는 메뉴입니다.
  • PNG Info : 이미지를 생성하면 기본 세팅으로 PNG 파일로 이미지가 생성됩니다. 해당 이미지에 대한 정보가 PNG에 같이 저장되므로 생성한 이미지를 분석하거나 어떤 프롬프트, 어떤 세팅으로 만들었는지를 확인할 수 있습니다.
  • Checkpoint Merger / Train : 체크포인트 모델의 합성 및 학습 등과 관련된 작업을 수행하는 메뉴입니다.
  • Settings / Extensions : WebUI의 옵션 설정 및 확장 기능 추가, 업데이트를 수행하는 메뉴입니다.

3️⃣ 프롬프트 입력창

  - 이미지를 생성하기 위해 프롬프트 명령어를 입력하는 창입니다.

  - 상단과 하단으로 구분되는데 상단에는 이미지에 생성하고 싶은 단어나 문장을 적으시면 됩니다.

  - 하단은 부정프롬프트 입력창으로, 이미지 생성 시 나오지 않게하는 단어나 문장을 적거나, Embeddings (=Textual Inversion, 아래서 설명)를 사용하는 곳입니다.

 

4️⃣ 이미지 생성(Generate)

  - 작성된 프롬프트 및 설정값에 따라서 이미지를 생성하는 버튼입니다.

  - 아래 보이는 작은 아이콘들은 프롬프트를 저장, 삭제, 관리를 할 수 있는 버튼들과 드롭박스가 있습니다. (이 부분은 차후 포스팅을 통해 설명하겠습니다)

 

 

1️⃣ 이미지 생성 설정 메뉴

  - 이미지를 생성하기 위한 설정값을 Generation을 통해서 설정합니다.

  - Textual Inversion은 이미지의 불필요한 부분을 제거하기 위해 부정 프롬프트의 합본팩? 같은 것들을 사용하기 위한 메뉴입니다. 이 부분은 아래에서 설명하겠습니다.

  - Checkpoints는 저번 포스팅에서 다운로드 받으셨을텐데, 이미지를 단독으로 생성할 수 있는 모델로 용량이 매우 큰 반면, HypernetworksLora는 단독으로는 사용할 수 없지만 모델과 같이 사용하여 이미지를 생성할 때 미세조정으로 특정한 이미지를 만들어내거나 기존 이미지를 변화시킬 때 사용하는 서브모델이라고 보시면 됩니다.

 

2️⃣ 이미지 생성 옵션

  - 이미지를 생성하기 위한 기본적인 설정값을 조절하는 곳으로, 크기, 샘플링, 생성 숫자, 업스케일링 등을 설정합니다.

  - 자세한 내용은 아래 이미지를 생성하면서 설명하도록 하겠습니다.

 

3️⃣ 생성 이미지 결과 프리뷰 화면

  - 이미지를 생성하는 도중 또는 만들어진 결과 이미지를 볼 수 있는 부분으로, 이미지를 생성하고난 결과물을 클릭하여 크게 볼 수 있습니다.

  - 또한 아래에 있는 아이콘들로 저장된 이미지의 폴더보기, img2img로 옮겨서 이미지 수정작업 등을 할 수 있습니다.

🔷 이미지 생성하기

  - 자 이제 본격적인 이미지를 생성해보겠습니다. 이전에 설치한 DreamShaper 체크포인트를 설정하고 VAE는 840000을 설정해줍니다.

 

  - 일단 Civitai 사이트에서 제공되는 제작자의 사용법에 따라서 예제 이미지를 생성해보겠습니다. 아래 프롬프트를 복사하셔서 넣어주세요. 그리고 Generation 옵션을 아래와 사진처럼 설정해주시고 Generate 버튼을 눌러 이미지를 생성합니다.

masterpiece, best quality, ultra detailed 8k cg, japanese ramen, chopsticks, egg, steam, boken

 

  - 빨간색 박스친 부분을 토대로 설정한 뒤 Generate하면 사양에 따라 차이는 있겠지만 대략 10~20초 정도 걸려서 위와 같은 일본식 라면 이미지 2장을 생성합니다.

  • 설정한 옵션
    = Sampling Method : DPM++ 2M SDE
    = Sampling steps : 30
    = Width/Height : 768x768
    = Batch count(몇 장을 생성할지) : 2
    = CFG Scale : 7

 

  - 생성한 이미지 결과는 우측에 나타나는데 클릭하면 큰 이미지로 볼 수 있습니다. 큰 이미지를 띄운 상태에서 좌우 화살표키로 이미지들을 순차적으로 볼 수 있습니다.

 

  - 이미지 2장을 생성했는데 한 장 더 나온 것은 결과 이미지를 모두 합쳐서 큰 이미지에서 모든 결과 이미지를 볼 수 있게 제공하는 Grid 이미지 입니다. 

 

  - 결과 이미지 하단에 적힌 내용들은 해당 이미지가 어떤 프롬프트와 어떤 옵션, 체크포인트, VAE 등으로 생성되었는지 나타내며, Seed 값은 생성할 때 -1을 넣으면 랜덤한 시드에서 생성되고, 생성된 Seed 값이 결과에 나타납니다.

 

  - 해당 내용은 PNG 파일로 저장되며, PNG Info 메뉴에 이미지를 드래그해서 넣으면 똑같이 정보를 확인할 수 있습니다. 즉, 다른 사람이 제작한 이미지를 받아서 PNG Info에 넣고 그대로 옵션설정을 해서 똑같거나 비슷하게 이미지를 생성할 수 있습니다. (기능들을 많이 사용했다면 똑같이 생성하는 것은 힘들 수 있습니다)

 

  - 결과 이미지 하단의 아이콘 중 폴더 모양 아이콘을 클릭하면 생성한 이미지 파일이 있는 폴더를 엽니다. 해당 파일은 스테이블 디퓨전 폴더의 [outputs] 폴더 안에 [txt2img-images] 폴더에 날짜 별로 폴더가 생성되며, 그 안에 생성한 이미지들이 들어가게 됩니다.

 

🔷 부정 프롬프트 활용법 (=Embeddings 사용하기)

  - 아직 부정 프롬프트를 사용하지 않았지만 긍정 프롬프트 적는 것도 힘든데 부정프롬프트까지 하나하나 다 적을 필요없이 여러 가지 내용을 한 단어로 묶어서 제공하는 Embeddings(=Textual Inversion)를 사용해보겠습니다.

 

  - Embeddings를 사용하기 위해서는 파일을 받아야하는데 Civitai나 여러 AI 커뮤니티 사이트들을 통해 쉽게 받을 수 있습니다. 아래 링크를 통해 자주 사용하는 임베딩 몇 개를 다운받아 사용하여 이미지를 생성해보겠습니다.

 

 

  - 아래 BadDream Embeddings 링크를 통해 들어가면 위와 같이 Civitai 홈페이지로 이동합니다. 그러면 우측에 다운로드 모양 아이콘을 클릭하여 다운로드 해주시면 됩니다.

 

  - 아래 Details에는 해당 파일에 대한 정보가 있습니다. Type은 Embeddings이고, SD1.5 모델에서 작동하는 것을 확인할 수 있습니다.

 

  - 왼쪽 위에 보면 UnrealisticDream v1.0도 클릭하여 마찬가지로 다운로드 받아주시면 됩니다.

 

  • BadDream + UnrealisticDream(실사/반실사에서 사용하는 부정 프롬프트 임베딩 : 링크
    = 이미지를 극사실 느낌으로 생성하게 해주는 Embeddings
  • Fast Negative Embeddings V2(일반적으로 사용하는 부정 프롬프트들의 묶음) : 링크
    = 이미지의 퀄리티를 저하시키는 부분을 최소화하여 자연스러운 퀄리티로 만들어주며, 손 관련해서도 일부 보정해주는 Embeddings

 

- 다운로드 받은 임베딩 파일들은 스테이블 디퓨전 폴더에 보면 [embeddings] 폴더가 있습니다. 여기에 그냥 넣어주시면 됩니다. 

 

** 업데이트를 통해서 WebUI를 실행하고 있는 도중에도 폴더에 넣은 임베딩 파일을 실시간으로 확인할 수 있습니다. 임베딩 파일을 [embeddings] 폴더에 넣은 뒤, 아래 사진처럼 Textual Inversion 탭을 선택하고 우측 끝에 새로고침을 눌러주면 방금 넣은 임베딩 파일 메뉴가 나타납니다.

 

  - 임베딩을 사용하는 방법은 위의 Textual Inversion 탭에서 나타난 Embeddings들 중 넣고 싶은 것을 클릭하면 부정 프롬프트에 명령어가 들어갑니다.

 

  - 임베딩 명령어들 사이에는 쉼표(,)를 넣어서 구분해주어야 합니다.


  - 아래 예시 이미지는 부정프롬프트에 대한 Embeddings 차이를 한 번에 보기 위해 생성한 테스트 이미지입니다. 왼쪽부터 순서대로 부정 프롬프트 없이 생성, 부정프롬프트 단어 추가, Embeddings 추가하여 생성한 이미지입니다.

기본 프롬프트는 동일하지만 부정프롬프트만으로도 전혀 다른 퀄리티의 이미지 생성 가능

 

🔷 Hires 기능을 이용하여 업스케일링 이미지 생성하기

  - 이번에는 Hires 기능을 사용해서 이미지 업스케일링을 사용해보겠습니다. Hires. fix에 체크박스를 클릭하여 체크해주시고, 위 사진처럼 아래로 확장하지 않으면 ◀부분을 눌러 ▼이렇게 펼쳐주시면 됩니다.

 

  - 그리고 위의 사진처럼 세팅해주시면 됩니다. Upscaler에서 주로 쓰는 것은 실사 이미지는 R-ESRGAN 4x+이고, 2D Anime 이미지는 그 아래 R-ESRGAN 4x+ Anime6B 입니다. 그 외 다양한 업스케일러가 있으니 사용하시면서 원하는 업스케일러를 선택하시면 됩니다.

 

  - Denoising Strength는 생성한 이미지를 업스케일링할 때 원본 이미지를 변경하는 정도를 설정하는 값입니다. 0.3이하면 거의 원본 이미지와 유사하게 업스케일링을하고, 높일수록 원본 이미지와 다른 이미지 형태로 만듭니다.

 

  - Upscale by는 얼마나 키울지 배수를 설정합니다. 값이 2일 경우, 아래 Width, Height를 각각 2배씩 늘립니다. 크기 값은 Hires. fix 우측에 'from 512x512 to 1024x1024' 라고 적힌 부분이 결과 크기가 됩니다.

 

  - 그 외 값은 그대로 두시고, 아래 프롬프트와 Generation 값으로 설정한 뒤 생성해보겠습니다.

(masterpiece, best quality, highres, highest detailed), (illustration, colorful, dim colors, official art), (extremely intricate, intricate details, extreme detailed), fashion photography, (extremely detailed CG unity 8k wallpaper, professional photograph), dynamic angle, upper body, outdoors, the most beautiful in the world, far away castle, looking at viewer, from front, BREAK 1boy, (mechanical bodysuit, mechanical parts, mecha, mechanical armor, mechanical helmet:1.2)
(worst quality, low quality:1.4), BadDream, (UnrealistickDream), FastNegativeV2

 

  • Sampling method : Euler a
  • CFG Scale : 8
  • Sampling steps : 40
  • Width x Height : 512 x 768
  • Hires Upscaler : R-ESRGAN 4X+
  • Denoising strength : 0.3
  • Upscale by : 2

  - 왼쪽이 Hires 적용하지 않은 이미지이고, 오른쪽이 Hires 적용한 이미지 입니다.


다음 포스팅에서는 좀 더 디테일한 프롬프트 명령어 구조와 프롬프트 저장 및 적용과 같은 관리법, 옵션에 대한 부가적인 설명 등을 하겠습니다. 감사합니다.

 

다음글 : Stable Diffusion(스테이블 디퓨전) WebUI 04. 프롬프트 사용법