오픈소스로 배포한 Stable Diffusion을 컴퓨터 사양과 무관하게 실행하는 Stable Diffusion web UI 가이드를 정리한다. Stable Diffusion web UI에서 반드시 알아야 할 용어부터 실제 AI 이미지를 생성할 때 필요한 설정까지 스테이블 디퓨전 사용법을 살펴본다.
Stable Diffusion web UI 구조
Stable Diffusion web UI는 100% 무료로 사용할 수 있으면서도 AI 이미지 생성 학습 모델들을 빠르게 추가해서 체험할 수 있다는 강점을 지니고 있다. 오프소스인 Stable Diffusion을 토대로 수많은 개발자들이 추가로 진화한 AI 기술을 더하면서 Stable Diffusion web UI는 선보인 지 1년도 안 되었음에도, 그 확장성을 따라잡기 힘들 정도이다. 따라서 현재 나온 AI 이미지 생성 모델을 연마하는 것도 필요하지만, 기본적인 Stable Diffusion web UI 구조를 사전에 학습하지 않으면 점점 더 확장하는 스테이블 디퓨전에 끌려갈 수밖에 없다. 다행히 쏟아져 나오는 수많은 AI 이미지 생성 사이트 및 프로그램들이 Stable Diffusion web UI 구조에서 크게 벗어나지 않고 있으므로, Stable Diffusion web UI만 제대로 다룰 수 있으면 훗날에도 AI 이미지 생성 분야는 크게 어려움을 느끼지 않을 듯하다. 다음에서 Stable Diffusion web UI 구조를 토대로 필수적인 항목을 중심으로 용어와 설정 등 AI 이미지를 생성할 때 필요한 사용법을 자세히 확인할 수 있다.
Stable Diffusion web UI 가이드는 사전에 Stable Diffusion web UI를 설치하고 실행한 이후부터 다룬다. 컴퓨터에 설치하건 구글 코랩 서버를 활용하건 Stable Diffusion web UI를 사용하는 방법은 동일하다. 하지만 여기에서는 구글 드라이브와 연계한 구글 코랩 서버를 활용한 Stable Diffusion web UI를 토대로 한다.
Stable Diffusion web UI를 설치하고 실행하는 방법은 2023년을 기점으로 크게 바뀌었으므로, 위에 링크한 내용을 참조해서 Stable Diffusion web UI를 설치하고 실행하는 것을 추천한다. 참고로, 달라진 점은 Stable Diffusion web UI를 설치할 때 추가된 모델들이 너무 많다보니 용량이 크게 증가했다는 부분이다. 초기에는 5기가 남짓이면 충분했는데 현재는 10기가를 훨씬 넘으므로, 필요한 최소 사양만 설치할 필요가 있다.
Stable Diffusion web UI를 실행하면 위와 같은 화면이 나오는데, 여기에서 필수적인 항목을 중심으로 순차적으로 용어 및 설정 등 사용방법을 살펴본다. Stable Diffusion web UI에서 가장 중요한 요소는 1번 항목에 해당하는 모델이다. 하지만 주모델 이외에도 주모델을 보조하는 다양한 기능을 지닌 보조모델들이 존재한다. 더불어 AI에게 생성할 이미지를 텍스트로 기재하는 2번 항목인 프롬프트를 다루는 기술이 필요하다. Stable Diffusion web UI와 같은 AI 이미지 생성을 비롯하여 GPT기반의 ChatGPT 등 챗봇 서비스 등 향후 AI 서비스에서 프롬프트에 필요한 사항을 기재하는 즉, 프롬프트를 다루는 기술이 바로 AI 서비스 활용 능력으로 불릴 것이라고 예측되고 있다. 이렇듯 Stable Diffusion web UI에서 가장 중요한 요소는 모델과 프롬프트이다. 우선 이 기본적인 사항을 염두에 두고 아래 순서대로 하나씩 살펴본다.
1) 스테이블 디퓨전 핵심인 주모델과 옵션인 보조모델들
2) 미래직업으로 부상할 프롬프트를 다루는 기술
3) 기본적인 설정 항목들
4) AI 이미지를 생성하고 보여지는 채널
5) 마스터가 불가능한 진화의 영역
상기에 기재한 1번부터 4번까지는 필수적으로 알아야 할 부분이고, 5번은 전체적인 개념 정도만 파악한 후에 필요시에 세부적인 사항을 하나씩 돌파하면 된다.
스테이블 디퓨전 주모델과 보조모델들
Stable Diffusion web UI에는 다양한 모델들을 장착핳 수 있다. 가장 상단에 위치한 주모델부터 곳곳에 보조모델이 자리한다. 하지만 이러한 모델들을 전부 다 파악하고 사용하려면 학습 피로도가 크게 증가해 AI 이미지를 생성하는 자체가 재미가 아니라 일이 되어 버린다. 따라서 가장 상단에 위치한 주모델에 해당하는 checkpoint만 우선적으로 연습하고, 나머지 보조모델들은 전부 패스하거나 필요시에 1-2가지만 추가하는 방식을 추천한다.
checkpoint에 해당하는 주모델은 현재 3가지 정도 인기 모델이 자리하고 있는데, 이중 실사화 모델인 ChilloutMIX가 국내에서는 가장 선호도가 높다. 위에 링크한 콘텐츠에서 국내에서 인기 있는 3대 인기 모델인 ChilloutMIX, Deliberate, OrangeMIX를 다운로드하고 설치하는 방법을 확인할 수 있다.
다음으로 보조모델을 언급하면 많이 활용하는 lora를 비롯하여 vae, embedding, hyper network 등 다양하게 보조모델을 장착하는 영역이 존재한다. 이러한 보조모델은 말 그대로 주모델을 보조하는 역할을 한다. 보조모델은 서로 겹쳐서 사용이 가능한데, 이중 lora는 널리 사용하는 보조모델 중 하나이다. 더불어 보조모델의 끝판왕인 ControlNet 영역이 있는데, 이 컨트롤넷은 스테이블 디퓨전을 확장하는 영역으로 ControlNet 영역 안에 Preprocessor 항목에 다양한 컨트롤넷 모델을 장착할 수 있다. 이중 인기 있는 컨트롤넷 모델로는 canny, openpose, Depth 등이 있는데, 이러한 컨트롤넷의 각각의 모델은 독특한 기능을 보유하고 있으므로 한 마디로 표현하기 어렵다. 또한 일반인들은 이 ControlNet 영역을 전혀 사용하지 않아도 될 만큼 전문적인 영역에 해당한다. 간단히만 설명하면 주모델로 생성한 이미지에 포토샵이나 일러스트에서 다루는 기능인 필터처리 또는 변형 등을 부여한다고 생각하면 된다. 주모델로 생성한 이미지를 스케치처럼 다시 표현하거나, 이미지의 방향 또는 해당 이미지의 특정 부분의 위치 등을 설정하는 변형 기능 등을 ControlNet에 담긴 모델이 수행한다.
Stable Diffusion web UI를 설치한 구글 드라이브에서 SD 폴더 내 stable-diffusion-webui로 들어가면 많은 폴더가 있는데, 이중에 models라는 폴더가 존재한다. 바로 이 models라는 폴더에 주모델을 비롯하여 보조모델들을 저장하는 공간이다. 여기에서 Stable-diffusion에 checkpoint 항목에 들어갈 주모델 파일을 저장한다. 나머지 Lora를 비롯한 나머지 폴더들에도 각각 보조모델을 장착할 수 있다. 참고로, Stable Diffusion web UI를 설치 시에 용량이 점점 더 증가하는 이유는 바로 이러한 보조모델들이 추가하기 때문이다. 따라서 Stable Diffusion web UI 설치 시에 ControlNet 항목은 설치하지말고 패스하거나, 모든 ControlNet 보조모델을 설치하지 말고 선호하는 1-2개 보조모델만 선택해 설치할 필요가 있다.
AI가 할 일을 기재하는 프롬프트 공간
스테이블 디퓨전에서 동일한 주모델을 사용하더라도 다양한 이미지를 생성하는 데에는 프롬프트가 결정적인 역할을 담당한다. 프롬프트는 사용자가 AI에게 그릴 대상을 설명하는 공간으로, 보통 키워드를 영어 단어로 쉼표로 연결하는 방식으로 표현한다. 물론 서술형 문장으로도 가능하지만 일반적으로 키워드 중심으로 담는다. 더불어 nagative 프롬프트에는 AI에게 이미지를 그릴 때 배제해야 할 사항을 담는다. 프롬프트는 기본적으로 중요한 키워드를 앞에 배치하고, 강조할 키워드는 괄호 안에 담는다. 또한 프롬프트 안에 사용할 보조모델을 넣어서 문구를 작성하거나, 보조모델 가중치도 담을 수 있다.
프롬프트를 사용자가 직접 입력해도 되지만, 처음에는 기존에 다른 사람이 생성한 AI 이미지에서 프롬프트를 가져와 활용하는 게 편의성이 높다. 그러면서 일부 키워드를 수정하다보면 프롬프트를 작성하는 기술을 자연스럽게 습득할 수 있다. 대표적으로 한국인이 운영하는 프롬프트 서치 사이트에서 간단히 마음에 드는 이미지를 선택한 후에 프롬프트를 가져와 사용할 수 있다.
간혹 가져온 프롬프트는 제대로 반영하지 못할 때도 있는데, 대부분 주모델이 다르거나 보조모델이 지나치게 많을 때 발생한다. 가능하면 Stable Diffusion web UI에 설치한 주모델과 동일한 모델을 활용한 이미지를 선택한다. 여기에서는 실사화 모델인 ChilloutMIX를 설치했다는 전제로, ChilloutMIX 모델이 주로 동양적인 미소녀 이미지를 생성할 때 사용하므로 여기에 매치하는 이미지를 선택해서 활용한다. 프롬프트 서치 사이트에 로그인을 하지 않아도 접속한 후에 아래로 스크롤하면 다수의 이미지를 볼 수 있는데, 여기에서 해당하는 이미지를 선택하거나 하단에 위치한 검색란에 원하는 키워드를 입력해 해당하는 이미지를 선택할 수도 있다.
해당 이미지를 누르면 아래와 같이 프롬프트 정보를 비롯하여 다양한 설정값 등을 확인할 수 있다. 여기에서 각 항목을 복사한 후에 Stable Diffusion web UI에 해당항목에 붙여 넣는 방식을 사용하는 게 일반적이다.
해당 프롬프트를 복사해서 Stable Diffusion web UI의 해당 항목에 붙여넣기한 후에, 관련 설정값과 시드를 변경하고 Generate 버튼을 누르면 AI가 이미지를 자동으로 생성한다.
기본적인 항목 설정값 살펴보기
프롬프트를 입력한 후에 바로 아래에 위치한 기본적인 항목의 설정값을 조정해야 한다. 기본적인 항목 설정값 영역에서 가장 상단에 위치한 Sampling method는 스테이블 디퓨전이 이미지를 그릴 때 사용할 샘플링 타입을 선택하는 것으로, 이 샘플링 타입이 이미지 생성에 중대한 영향을 주지는 않는다. 기본적으로 Eular a로 설정된 기본값을 사용하는데, 위에 참조한 이미지는 샘플링 타입을 DPM++ 2M Karras를 적용하고 있다. 참고로, 현재 시점에서 많이 사용하는 샘플링 메서드는 Euler a, DPM++ 2M Karras, DPM++ SDE Karras이다.
Sampling method 항목 옆에 위치한 Sampling steps은 AI가 그림을 그리는 작업을 몇 번 수행하는지를 지정하는 것으로 숫자가 높을수록 더 오래 그림 작업을 한다. 0부터 150까지 지정할 수 있는데, 숫자가 클수록 그림이 더 정교해지지만 그만큼 시간이 더 소요한다. 이때 숫자가 지나치게 높으면 이미지가 왜곡되어 나오는 경향이 있고, 숫자가 지나치게 낮으면 약간 그리다 만 허접한 이미지가 나온다. 디폴트값은 20인데, 해당 이미지는 30을 주고 있다. 참고로, Sampling steps는 20에서 30사이를 주는 게 일반적이다.
다음으로 해당 이미지에서는 정보에 포함되지 않은 항목으로 이미지를 생성한 후에, 기존 이미지를 토대로 변화를 줄 때 사용하는 옵션 항목이 위치해있다.
위의 옵션은 AI가 이미지를 생성하면 그 생성된 이미지를 기준으로 변화를 줄 때 해당 옵션을 체크한 후 다시 Generate 버튼을 누르면, 기존 이미지에서 약간 조정된 새로운 이미지를 볼 수 있다. 말 그대로 옵션이므로 꼭 수행해야 하는 항목이 아니다.
AI가 생성한 이미지가 전체적으로 마음에는 드는데, 일부만 더 조정하고 싶을 때 사용하는 기능이다. 이중 Tiling은 기존 이미지 형상을 토대로 타일패턴으로 이상한 이미지를 생성하는데, 이 기능이 왜 있는지 의아할 정도로 사용하는 사람이 드물다. Restore faces는 기존에 생성한 이미지에서 얼굴을 보정하는 기능인데, 이 옵션을 체크하고 다시 Generate 버튼을 누르면 얼굴만 달라진 이미지를 생성한다. 하지만 꼭 얼굴이 더 나아진다고는 보장할 수 없는 기능이다. 마지막으로 Hires.fix 옵션은 생성한 이미지를 고해상도 이미지로 전환하는 기능이다.
위 항목은 이미지 사이즈를 정하는 것으로 보통 512 * 512이라는 정사각형 이미지를 디폴트값으로 보여준다. 이를 768이나 1024로 변경해 사용하지만, 마음에 드는 이미지가 나올 때까지는 디폴트값으로 두어 빠르게 이미지를 생성한 후에 마음에 드는 이미지가 나오면 앞에서 살펴본 hires.fix 옵션에서 고해상도 이미지로 전환하면서 사이즈도 원하는 수치로 변경하는 게 편의성이 높다.
이미지 사이즈를 조정하는 항목 옆에 위치한 Batch count는 AI가 생성할 그림의 숫자로 지정한 숫자만큼 한 장씩 순서대로 생성한다. Batch size는 AI가 한 번에 그림을 몇 장 생성할지 지정하는 것으로 동시에 지정한 숫자만큼 한 번에 생성한다. 그렇다 보니 Batch size를 통해 생성할 이미지 숫자를 지정하면 동시에 AI가 작업하므로 퀄리티가 떨어지는 경향이 있다. 그래서 일반적으로 Batch size는 1로 고정해서 AI가 한 번에 1장씩만 생성하도록 하며, 필요한 이미지 수는 Batch count에 기재한다. Batch count는 기본적으로 지정한 숫자만큼 이미지를 생성하지만, 이때 동시에 작업하는 게 아니라 1장을 그린 후에 다시 1장을 그리는 작업을 수행한다. 물론 그러다 보니 시간은 더 소용하지만 그만큼 기본적인 퀄리티를 유지할 수 있으므로, 입력한 프롬프트로 3장의 이미지를 보고 싶다면 Btach size를 1로 고정하고 Batch count를 3으로 기재한다.
CFG Scale은 사용자가 입력한 프롬프트에 AI가 얼마나 충실히 따르느냐를 값으로 표현한 방식이다. 숫자가 낮을수록 AI가 프롬프트가 아니라 임의로 이미지를 생성하고, 숫자가 높을수록 AI가 프롬프트에 쓰인 문구에 충실하게 이미지를 생성한다. 이때 프롬프트에 충실하라고 높은 숫자를 기재한다고 사용자가 의도한 이미지가 나온다는 보장이 없다. 오히려 적당히 AI의 창조성이 결합할 때 퀄리티 높은 이미지를 생성한다. CFG Scale의 디폴트값은 7인데, 해당 예시 이미지에서는 19를 주고 있다. 참고로, CFG Scale은 일반적으로 7에서 10사이를 사용한다.
다음으로 Seed라는 항목이 위치하는데, 여기에 해당 이미지는 시드값을 사용하고 있다. Seed의 디폴트값은 -1인데, 이건 이미지를 생성할 때마다 매번 다른 시드값을 참조해 생성하라는 의미이다. 하지만 시드값을 고정하면 동일한 시드를 참조하므로 생성한 이미지가 유사한 경향이 높다. 또한 프롬프트를 똑같이 입력한다고 해도 시드값이 다르면 생성하는 이미지에도 큰 차이가 있다. 기본적으로 동일한 시드값에서 똑같은 프롬프트를 입력하면 동일한 그림을 생성할 수 있다. 하지만 최근에는 보조모델들이 다수 등장하면서 동일한 시드값을 사용해도 꼭 동일한 그림이 나온다는 보장은 없지만, 매우 유사한 분위기를 지닌 이미지를 생성하는 건 확실하다. 그럼에도 AI로 생성한 이미지에서 프롬프트 및 설정값 등을 참조한다고 해도 특정 보조모델이 없거나, 또한 이미지를 생성한 후에 옵션 항목을 체크한 후 진행하여 새로운 이미지를 생성한 정보 등은 없다 보니, 동일한 시드값을 사용한다고 해도 이미지를 생성할 때 사용한 100% 프롬프트 정보를 알 수 없으므로 점점 더 타인이 생성한 AI 이미지를 공개된 프롬프트만으로 동일한 그림을 생성하는 건 점점 더 어려워지고 있다.
이미지 생성 및 저장 공간
AI 이미지를 생성할 때에는 Generate 버튼만 누르만, 바로 아래 공간에 AI 이미지를 자동으로 생성한다.
위의 AI 이미지는 프롬프트 서치 사이트에서 가져왔던 프롬프트에서 배경을 뉴욕에서 서울로, 나이를 30대에서 20대로 변경한 결과이다. 이렇듯 처음에는 공개된 AI 이미지에서 프롬프트를 차용하여 일부 키워드들을 바꿔가면서 연습하다 보면, 따로 프롬프트를 작성하는 기술을 배울 필요 없이 저절로 기본을 익힐 수 있다.
미지의 영역 ControlNet
Stable Diffusion web UI를 설치할 때 용량이 점점 더 증가하는 이유는 ControlNet의 비중이 점점 더 커지기 때문이다. 컨트롤넷은 앞에서 언급한 주모델인 chekpoint을 보조하는 보조모델이지만, 다른 한편으로는 주모델에 완전히 새로운 기능을 부여하는 확장모델이기도 하다.
위에 ControlNet 영역 안에 Preprocessor 항목을 보면 많은 확장모델을 볼 수 있는데, 이건 스테이블 디퓨전 모델과는 별도로 이후에 새롭게 개발된 보조모델이다. 하지만 lora, vae 등 기존 보조모델과 성격이 약간 다르고, 스테이블 디퓨전을 개발한 뮌헨대학교 연구진과 다른 스탠퍼드 대학의 연구자들이 개발한 것으로 주모델을 보조하는 성격을 지니면서도 때로는 주모델을 능가하는 기능을 부여하는 확장모델이다.
바로 이 컨트롤넷 영역 안에서 Preprocessor 항목에 들어있는 게 전부 확장모델로, 각각 독립적인 기능을 지니고 있다. 그렇다 보니 이 모델들을 하나씩 적용할 때마다 주모델로 생성한 AI 이미지에 큰 변화를 야기한다. 이 컨트롤넷도 스테이블 디퓨전과 마찬가지로 개발한 연구진은 다르지만 모두 오픈소스로 배포한 기술이다 보니, 계속해서 컨트롤넷에 해당하는 확장모델이 추가될 수밖에 없다. 즉, 그 끝을 예견할 수 없는 미지의 영역이므로 우선은 주모델을 먼저 마스터하고 컨트롤넷 영역의 학장모델을 살펴보는 게 바람직하다.
위에 링크한 깃허브 페이지는 오픈소스로 공개한 컨트롤넷 소스와 설명이 담겨 있다. 하지만 영어로만 기재되어 있어 정확한 의미는 알 수 없지만, 기존 스테이블 디퓨전 기술과는 별도의 기술로 개발한 컨트롤넷으로, 이러한 컨트롤넷 기술을 스테이블 디퓨전 기술에 결합해 사용한다는 개념 정도는 파악이 가능하다. 또한 이 컨트롤넷 깃허브 페이지에서 아래로 스크롤을 하면 각각의 확장모델이 어떤 기능을 담고 있는지 이미지를 추가하고 있어서, 한눈에 각각의 기능을 대략적으로 파악할 수 있다. 아래는 현재 컨트롤넷 영역에서 인기 있는 확장모델인 Canny와 Openpose의 기능을 구현한 AI 이미지 예시이다.
특히 Openpose는 AI가 생성할 이미지에서 주대상의 방향 및 움직임 등을 조정할 수 있다는 점에서 각광을 받고 있는 확장모델이다. 하지만 위에서 여러 번 언급했듯이 스테이블 디퓨전은 checkpoint에 담기는 주모델과 AI에게 그릴 대상을 설명하는 프롬프트가 핵심이다. 우선 이 2가지가 익숙해진 후에 순차적으로 CFG scale, seed 등의 기본 설정값과 Lora, VAE 등 스테이블 디퓨전 개발 시부터 존재하던 보조모델 영역과 Hires.fix 등의 옵션까지 마스터하고, 현재 시점에서 최종적으로 공략할 대상이 바로 컨트롤넷에 들어가는 확장모델이다. 즉, 컨트롤넷까지 다룬다면 AI 이미지 생성을 취미가 아니라 전문가 수준에 도달했다고 해도 과언이 아닐 정도로, 다수의 주모델에 적합한 설정값과 부수적인 보조모델 및 옵션을 고려하여 각각에 확장모델을 결합하는 현시점에서 AI 이미지 최종지점이다.
위와 같이 컨트롤넷 확장모델을 적용하면 전혀 새로운 AI 이미지를 손쉽게 확장해서 생성할 수 있다. 현재는 Stable Diffusion web UI에서 컨트롤넷 확장모델을 추가해 사용할 수 있는데, 조금 더 컨트롤넷 확장모델 중심으로 살펴보고 싶다면 Stable Diffusion web UI 설치 페이지처럼 컨트롤넷 확장모델 중심으로 제공하는 설치 페이지인 깃허브 페이지에서, Stable Diffusion web UI를 설치한 방법과 동일하게 설치해서 실행할 수도 있다.
위에 링크한 깃허브 페이지에 접속하면 컨트롤넷의 대표적인 확장모델을 활용해서 각각의 기능을 체험할 수 있도록 설치가 가능하다. 앞에서 언급했듯이 Stable Diffusion web UI에서도 원하는 컨트롤넷 확장모델을 추가할 수 있으므로, 상기 페이지에서 컨트롤넷 확장모델의 놀라운 기능 정도만 사전 학습하는 용도로 활용이 가능하다.