본문 바로가기
공부/stable diffusion

[Stable Diffusion] 1 - WebUI (feat. trouble shooting)

by Mr. Green 2023. 7. 23.

 안녕하세요.

 이번엔 stable diffusion으로 이미지를 뽑아보겠습니다.

 그러려면 모델과 프롬프트가 필요한데, 편하게 하라고 만들어 준것이 있습니다. 웹(브라우저) 기반 유저 인터페이스(Web-based User Interface)가 그것입니다.

 여기선 windows 기준으로 해볼겁니다.

차례

 0. 준비물

 1. WebUI 받기

 2. WebUI 사용법

 3. 모델 바꾸기

 4. Trouble Shooting

 0. 준비물

 stable diffusion을 사용하려면 개발에 입문해야 합니다. 바로 python과 git이 필요하다는 뜻이죠.

 주의할 점은 python은 3.10.6 버전, 적어도 3.10 버전대로 해야 합니다.

https://www.python.org/

 

Welcome to Python.org

The official home of the Python Programming Language

www.python.org

 상단 메뉴에서 다운로드로 들어가면 3.11 버전을 보여주는데 그거 말고, 그 밑으로 내려가면 다른 버전을 받을 수 있게 만들어져 있습니다.

여기서 찾아보세요.

 

 git은 개발자 환경을 지원해주는 도구인데, 특히 개발자들에게 웹하드 역할 및 협업 환경 역할을 해주는 github와 연결이 됩니다.

https://git-scm.com/

 

Git

 

git-scm.com

 git이 필요한 이유는 github의 저장소인 repository의 내용물을 다운 받기 위해 사용되기 때문입니다.

 git을 다운로드 받고 나면, 폴더에서 우클릭 할 때 git bash라는 걸 쓸 수 있게 됩니다. 이걸로 github와 연동시킬 수 있는데, 이번에 하지는 않을겁니다.

Git Bash Here

 그리고 VGA(일명 그래픽카드)가 있는 PC에서 진행하는 것이 좋습니다.

 

1. WebUI 받기

 이제 webui를 받을 겁니다. 이때 용량이 꽤 들어서 3gb 정도 여유를 갖는 것이 좋습니다.

 먼저 폴더 하나를 만들고, 우클릭한 다음 '터미널에서 열기'를 선택합니다. (git bash로 할 수도 있고, cmd(명령 프롬프트)로도 할 수 있습니다.)

 터미널에서 다음 명령어를 입력합니다.

 

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

 

 그러면 stable-diffusion-webui라는 폴더가 생깁니다.

 

 들어가서 webui-user.bat를 더블 클릭합니다. (webui.bat으로도 됩니다.)

webui-user.bat

 그러면 cmd가 켜지면서 필요한 라이브러리와 디펜던시를 다운받습니다. 이게 용량이 꽤 커서 시간이 좀 걸리는데 (10~20분 정도?), 처음 실행할 때만 이러니 걱정하지 않으셔도 됩니다.

 완료되면 마지막에,

  • To create a public link, set `share=True` in `launch()`

 라는 매세지가 뜨는데, 그 위를 보면 local url을 줍니다. 이제 브라우저에 그걸 입력하면 webui를 실행할 수 있습니다.

2. WebUI 사용법

 페이지에 들어가면 다음과 같은 화면이 나옵니다.

뭔가 실행되어 있어서 그렇지 기본적인 화면입니다.

 txt2img, img2img에서 이미지를 생성할 수 있습니다.

 

  • Stable Diffusion checkpoint : 모델 선택
  • prompt : 만들고 싶은 이미지 키워드 혹은 문장
  • negative prompt : 이미지에 들어가지 않았으면 하는 키워드
  • width/height : 결과 이미지 크기
  • batch count : 만들 이미지 수
  • batch size : 한 번에 만들 이미지 수

 이 외에는 크게 건드릴 것은 없을 겁니다. 세팅을 얼추 하고 prompt 키워드를 쓴 후 주황색 Generate를 누르면 이미지를 만들어줍니다.

 그 결과는 outputs에 저장되는데, 미리보기 창 밑에 Save로 브라우저에서 바로 받을 수 있습니다.

 

 만약 좋은 퀄리티로 이미지를 뽑고 싶다면 몇몇 키워드가 도움이 될겁니다.

  •  prompt : (애니풍) masterpiece, best quality, beautiful detailed eyes, elaborate features, highres
  • (반실사풍) +ultra detailed, raw photo, realistic, detailed skin, sharp focus, dramatic lighting
  •  negative : worst quality, low quality, lowres, blurry, bad hand, bad hands, bad legs, bad face, nsfw

3. 모델 바꾸기

 이번엔 기본 모델 말고 다른 모델로 바꿔보겠습니다.

 모델을 공유하는 사이트가 있는데, 바로 Civitai입니다.

 https://civitai.com/

 

Civitai | Stable Diffusion models, embeddings, LoRAs and more

Civitai is a platform for Stable Diffusion AI Art models. Browse a collection of thousands of models from a growing number of creators. Join an engaged community in reviewing models and sharing images with prompts to get you started.

civitai.com

 여기서 마음에 드는 모델을 찾아 가져옵니다. 근데 딥러닝 모델이라 용량이 꽤 커서 저사양 모델인 LoRA를 많이들 찾습니다.

 하나 찾아서 들어오면 download로 받을 수 있지만, Files에서 하나만 받을 수 있습니다. pruned라고 쓰여있는건, 가볍게 만들어진 모델입니다.

 다운 받으면 safetensors 형식의 파일을 확인할 수 있습니다. 이제 이 파일을 models\Stable-diffusion에 넣습니다.

models는 여기.

 만약 찾은 모델에 Lora나 VAE 파일이 있다면, models 안에 해당되는 이름의 폴더에 넣어주면 됩니다.

 여기서 safetensors는 딥러닝 모델을 저장하는 형식 중 하나로, 여기서는 checkpoint라고도 불립니다. Lora나 VAE 모델을 받아도 safetensors 파일이 필요해서, 둘 다 받아서 각각의 위치에 넣어줘야 합니다.

 

 그리고 webui를 닫고 다시 실행합니다. (.bat 실행으로 뜬 cmd를 종료해야 합니다.)

 재실행한 후 상단의 Stable Diffusion checkpoint에서 모델 파일 이름이 뜬다면 성공입니다.

 

 이걸로 기본적인 사용법을 알 수 있었습니다. 잘 가지고 노시거나 필요한 데 쓸 수 있으면 좋겠네요. ㅎ

 

4. Trouble shooting

 이건 제가 겪은 문제라 혹시 몰라 기록해둡니다.

 

 4-1. Error : ModuleNotFoundError : no module named 'jsonmerge'

 단순히 모듈이 없다는 에러라 python에 익숙한 분들은 그냥 모듈을 pip install로 받을 텐데,

pip install jsonmerge

 다운 받은 후 다시 실행해도 에러가 해결되지 않습니다.

 이를 해결하기 위해선, 처음 webui가 실행될 때 가상환경이 활성화된다는 것을 이해해야 합니다.

 

 다시 말해, pip install로 설치한 것이 venv에 적용이 되지 않기 때문에 디렉토리를 체크해 줘야 합니다.

 pip install로 설치된 것은 다음 위치에 있습니다.

C:\Users\{user name}\AppData\Local\Programs\Python\Python310\Lib\site-packages

jsonmerge

 두 폴더를 복사해 다음 위치에 붙여넣어 줍니다.

..\stable-diffusion-webui\venv\Lib\site-packages

 

 

 4-2. AssertionError: An object named 'ResNetArcFace' was already registered in 'arch' registry!

 이 에러는 Traceback을 쭉 따라 올라가면, no module named 'basicsr' 이란 메세지를 볼 수 있습니다. 오류가 핵심입니다.

 위와 마찬가지로 pip install로 받은 후 옮겨줘야 합니다.

pip install basicsr

 근데 이걸 받으면, 연관된 디팬던시를 쭉 받아서 양이 꽤 됩니다.

블록으로 된 것 모두 옮겨야 한다.

 또 주의할 점은, 복사 후 붙여넣을 때 겹치는 파일들을 덮어쓰지 않는 것이 좋습니다.

 

 

 감사합니당.

 

<special thanks to FlatSun, SuCicada, hahaxd265>