30분만에 배우는 AI 그림 기초 | WEBUI Colab 입문자 안내서

WEBUI 설치 후 실제 그림을 그리기 위한 AI 그림 기초에 대해 살펴보도록 하겠습니다. WEBUI 레이아웃 구성과 각 구성단의 실제 개념 및 사용법을 간략하게 알아보고, 본문에 보여드리는 예시와 같은 사진을 출력하기 위한 실제 세팅을 함께 실습합니다.

ai basic

스테이블 디퓨젼(Stable Diffusion)이란?

최근들어 각종 커뮤니티에서 자주 등장하는 실사같은 AI 그림은 대부분 2022년 8월 세상에 공개된 스테이블 디퓨젼(Stable Diffusion)이라는 AI 그림 모델로 그려졌다고 볼 수 있습니다. 스테이블 디퓨젼은 미드저니나 DALL-E 등 여타 다른 AI 그림 모델과 비교시 상대적으로 컴퓨터 사양을 덜 요구하며 경량화된 덕분에 일반인들도 쉽게 인공지능 그림을 그려볼 수 있게 되었습니다. 스테이블 디퓨전 및 AI 그림의 대중화 스토리가 궁금하신 분들은 아래 글을 참고하세요.

WEBUI

본 글에서는 스테이블 디퓨젼 모델을 기반으로 개인이 인공지능 그림을 직접 그리는 가장 기초적인 방법과 개념에 대해 설명드리고자 합니다. 스테이블 디퓨젼 모델으로 AI 그림을 그리는 방법은 크게 2가지로 나눌 수 있는데요, 첫 번째는 직접 본인의 PC에 WEBUI를 설치하는 방법입니다. 사용중인 PC의 성능이 WEBUI 권장사양 수준이라면 직접 설치하여 그림을 그리는 것이 가장 효율적인 방법입니다.

👉 WEBUI 권장사양 바로가기

구글 Colab

두 번째 방법은 컴퓨터에 직접 설치하는 방식이 아닌, 클라우드 서비스에 설치하여 온라인으로 그림을 그리는 방법입니다. 이 또한 다양한 서비스를 사용할 수 있으나, 그 중에서도 현재 가장 에러가 적고 지원이 빠르게 적용되는 곳은 바로 구글 Colab입니다.

아직 WEBUI 설치하지 않으셨거나 구글 Colab이 준비되지 않은 분들은 아래 글을 참고하시면 쉽게 WEBUI를 설치하실 수 있습니다.

👉 WEBUI 설치 및 다운로드 바로가기 👉 구글 Colab WEBUI 설치 바로가기

WEBUI AI 그림 기초

ai sample

위 그림은 본문에서 알려드릴 내용만으로 AI가 그린 그림입니다. 본문에 작성된 AI 그림 기초 내용을 끝까지 잘 읽고 똑같이 따라서 실행하시면 여러분도 위와 같은 그림을 금방 그려내실 수 있습니다. 자, 그럼 AI 그림 기초에 대해 함께 살펴보도록 하겠습니다.

WEBUI 레이아웃 구성

WEBUI 설치를 마친 후 실행하면 개인 PC에 설치한 WEBUI 및 구글 Colab 모두 사용중인 인터넷 브라우저가 열리면서 아래와 같은 화면을 마주(뒤에 열려있는 윈도우 커맨드 창 또는 Colab 실행창을 닫으면 WEBUI도 동작하지 않습니다.)하게 됩니다.

webui composition

실제로 사용자가 WEBUI에서 AI 그림을 그리기 위해서는 위의 그림상 표기한 순서대로 작업을 하게 되는데요, 본 글에서는 일단 실제 그림 1장을 그리기 위한 간단한 작업흐름을 파악하기 위해 1~8번까지의 기능과 설정 등에 대해 간략하게 살펴보도록 하겠습니다. 각 단계의 상세 세팅 및 기능활용과 관련해서는 단계별 자세한 내용을 기술한 글을 추가적으로 확인하시기 바랍니다.

모델(Model)

첫 번째(그림 상 1번) 빨간 네모 상자를 보시면 Stable Diffusion 체크포인트라고 되어 있습니다. 여기는 우리가 그림을 그리기 위해 사용할 모델을 선택하는 창입니다. 지난 WEBUI 설치 및 다운로드 글에서 설명드린 것처럼 실제로 그림을 그리기 위해서는 이미 학습이 완료된 그림 모델이 필요합니다.

👉 모델 다운로드 바로가기

선택한 모델에 따라 출력되는 그림의 화풍 및 그림체 등에 매우 큰 변화가 있으므로 본인이 그리고자 하는 그림에 맞는 모델을 선택하시기 바랍니다. 예를 들어 2D 그림, 3D 그림, 3D 실사 등의 차이를 반영하기 위해서는 모델을 달리 사용해야 합니다. 본문에서는 실제 사진과 같은 그림을 그리기 위해 Basil Mix 모델을 선택했습니다.

VAE

두 번째 설정해줘야 하는 부분이 바로 SD VAE입니다. VAE에 대한 기술적인 내용은 여기서 다루지 않지만, 그 역할을 간단히 설명하자면 그려지는 그림의 발색과 선명도에 영향을 주는 부분입니다. 대부분 2D 그림체를 그릴 때와 3D 실사 그림을 그릴 때 모델에 따라 아래의 VAE를 기본적으로 적용해주는 부분입니다.

📌 2D 그림 : kl-f8-anime2.ckpt

📌 3D 실사 : vae-ft-mse-840000-ema-pruned.ckpt

본 글에서는 실사를 그릴 예정이므로 2번째 VAE를 선택하였습니다.

👉 VAE 다운로드 바로가기

그림 그리는 방식(t2i 또는 i2i)

3번 째로는 그림을 그리는 방식을 선택해야 합니다. 크게 2가지 방식을 활용해 그림을 그리게 되는데요, 첫 번째는 텍스트 > 이미지(t2i: text-to-image) 방식으로 글로 설명한 것을 곧바로 AI 그림으로 그려내는 방식입니다. 두 번째는 이미지 > 이미지(i2i: image-to-image) 방식으로 원본 그림을 사용자가 제시하면 AI가 해당 그림을 기초로해서 새로운 그림을 만들어내는 것입니다.

일단 무에서 유를 창조하기 위해서는 텍스트를 이미지로 그려주는 t2i방식으로 그릴 수 밖에 없으므로 본 글에서도 가장 기본인 t2i를 선택해서 진행하도록 하겠습니다.

프롬프트(Prompt) – 어떤 그림?

지금까지 어떤 모델을 바탕으로 어떤 방식으로 그림을 그릴지 결정했습니다. 이제는 실제로 AI에게 어떤 그림을 그릴지를 알려줘야하는데요, 이때 입력하는 것이 바로 프롬프트(Prompt)입니다. 프롬프트는 상,하단 2칸으로 구분되어 있으며 상단(Positive prompt)에는 그림에 반영하고 싶은 내용을, 하단(Negative prompt)에는 그림에서 나타나지 않았으면 하는 부분을 작성하게 됩니다.

프롬프트는 단어(키워드)를 나열하는 방식으로 작성해도 되고, 문장형으로 작성해도 됩니다. 문장형으로 작성하는 경우 AI가 그림상으로 조금 더 잘 표현한다고 알려져있지만, 단순 단어 나열만으로도 충분히 좋은 퀄리티의 그림을 그릴 수 있습니다. 본 글에서는 아래와 같이 프롬프트를 작성해보도록 하겠습니다.

📌 Positive Prompt (상단)

masterpiece, best quiality, from above, cinematic light, prety, (photorealistic:1.2), 1girl, solo, korean actress, kpop idol, long hair, disheveled hair, outdoors,

📌 Negative Prompt (하단)

(worst quality, low quality:1.4), large breasts, huge breasts, gigantic breasts, monochrome, greyscale,

기본적으로 프롬프트에 작성되는 단어의 순서에 따라 AI가 그리는 그림에 반영하는 중요도가 달라집니다. 즉 그림에 반영되어야하는 중요도가 높은 단어나 문장을 앞쪽에 작성하는 것이 좋습니다. 또한 특정 단어를 뒤에 작성하더라도 괄호와 가중치를 조절하여 해당 단어를 AI에게 강조할 수 있습니다. 이 외에도 전반적인 그림의 퀄리티를 관여하는 프롬프트를 작성하는 방법, 빛과 컬러 등에 대한 프롬프트, 75 토큰의 중요성 등 다양한 프롬프트 작성 기술에 대해서는 WEBUI 프롬프트 작성법에서 조금더 상세히 다루도록 하겠습니다.

👉 WEBUI 프롬프트 작성법

그림 상세 설정 – 어떻게 그림?

어떤 그림을 그릴지는 위에서 이제 입력해줬습니다. 그럼 마지막으로 그림을 어떻게 그릴 것인지를 알려줘야하는데요, 아래에서 각각 세팅을 한번 살펴보겠습니다.

샘플링 방법

먼저 샘플링 방법을 선택해줘야합니다. 기본적으로 여러가지 샘플링 방법이 설치되어 있는데요, 개인적으로는 빠른 속도로 준수한 퀄리티의 그림을 그릴때는 주로 DPM++ 2M Karras를 선택하는 편입니다. 시간이 조금 더 걸리더라도 퀄리티를 높이기 위해서는 DPM++ SDE Karras를 추천드립니다.

샘플링 스텝 (Sampling Steps)

AI에게 그림을 몇번에 걸쳐서 그릴 것인지 알려주는 것입니다. 기본적으로 20단계로 되어 있으며 주로 20~30단계 수준에서 괜찮은 퀄리티의 그림이 나오는 편입니다. 단계를 높일수록 프롬프트에 작성한 글을 AI가 더욱 꼼꼼히 그려넣을 수 있겠지만, 당연하게도 단계가 커질수록 그리는 시간은 그만큼 정비례하여 늘기때문에 본인이 원하는 수준에서 타협을 해야합니다. 개인적으로는 20스텝으로 먼저 그린 뒤 마음에 드는 그림은 스텝을 더 늘려서 다시 그리거나 i2i로 그리는 편입니다.

Hires.fix

그림을 그리면서 고해상도로 올리는 기능입니다. 해당 기능에 대해서는 업스케일(Upscale) 글에서 자세하게 다루도록 하겠습니다. 본 글에서는 기능을 켜지 않은 채로 그립니다.

해상도 (가로 x 세로)

스테이블 디퓨전 그림 모델의 경우 학습 해상도가 512×512로 알려져있습니다. 때문에 기본 해상도가 512×512를 기준으로 세로길이가 1.5배인 512×768으로 설정되어 있습니다. 해상도가 높아질수록 AI 그림이 채워넣어야하는 공간이 많기 때문에 그림을 그리는데 시간이 오래 걸리며, 사양이 낮은 컴퓨터는 메모리부족(OOM: Out of Memory)를 외칠 수도 있습니다. 먼저 그림을 그린 뒤 해상도를 올리는 다양한 방법이 있으므로 여기서는 기본 해상도인 512×768으로 설정하겠습니다.

배치 수 및 배치 크기

배치 수 x 배치 크기 만큼의 그림을 그리게 합니다. 예를 들어 배치 수를 2로 설정하고 배치 크기를 3으로 설정하면 총 6장의 그림이 생성됩니다. 같은 프롬프트를 기반으로 그림을 그리더라도 다양한 그림이 나올 수 있기 때문에 한 번에 여러장을 그리는 경우가 많습니다. 본 글에서는 1장만 예시로 그려볼 것이므로 배치 수와 배치 크기를 모두 1로 설정하였습니다.

CFG 스케일

사용자가 작성한 프롬프트를 얼마나 착실하게 AI가 그림에 반영할 것인지를 결정하는 부분입니다. 중요한 것은 사용자가 작성한 프롬프트도 완벽하지 않기 때문에, AI가 그림을 그리면서 프롬프트를 어느정도 무시할 수 있다는 것을 인지하고 있어야한다는 것입니다. 예를 들어 프롬프트에는 실외(outdoors)와 교실(classroom)을 모두 작성하게 되면, AI는 논리적으로 실내공간인 교실과 실외를 모두 반영할 수가 없습니다.

따라서 이렇게 비논리적인 프롬프트를 작성하고 CFG 스케일을 높여서 그리면 그림이 이상하게 깨질 수도 있습니다. 기본적으로 WEBUI를 실행하면 11로 되어 있으며 11만 되어도 AI가 내 프롬프트를 잘 반영합니다. 개인적으로는 AI에게 자율성을 많이 주기 위해 7~8정도를 사용하지만 본 글에서는 11로 설정하겠습니다.

시드 (seed)

우리가 AI에게 그림을 그리라고 명령하면 AI는 일단 바탕이 되는 무작위 랜덤 채색판(?) 같은 것을 선정하고 해당 채색판 위에 프롬프트를 해석해서 그림을 그려나가기 시작합니다. 이처럼 그림을 그릴 때 AI가 선택한 채색판을 시드라고 하는데요, WEBUI 기본 설정값이 -1로 되어 있습니다. -1 값을 준 상태로 그림을 그리면 매번 무작위 시드값(채색판)을 선택하라는 의미입니다. 만약 어떤 그림이 마음에 들어서 프롬프트를 조금 수정하고 다시 한번 그 그림을 그리고 싶다면, 이 시드값에 -1이 아닌 마음에 들었던 그림의 시드값을 입력해주면 됩니다. 이미 생성된 그림의 시드값과 프롬프트 등을 확인하는 방법은 아래를 참고하시기 바랍니다.

👉 그림 메타정보 (exif) 확인 방법

본문의 예시 그림과 동일한 그림을 그리고 싶으신 분들은 seed값에 -1 대신 3791458348을 입력해주시기 바랍니다.

이미지 생성 및 확인

지금까지 내용을 그대로 따라오셨다면 아래 그림과 같이 설정이 완료되었을 것입니다. 이제 우측의 6번 ‘생성’ 버튼을 클릭하면 우리가 세팅한 대로 AI가 그림을 그려주게 됩니다.

all set ui

7번 칸에서 생성된 그림을 확인할 수 있으며, 아래쪽의 아이콘을 통해 해당 그림의 저장폴더 열기, 그림 따로 저장 등이 가능합니다. 또한 t2i 생성한 그림을 프롬프트와 함께 바로 i2i로 보내거나 인페인트(특정 부분만 다시 그리기) 또는 부가기능(해상도 업스케일링 등) 창으로 바로 보내 작업을 이어나갈 수도 있습니다.

이상으로 AI 그림 기초에 대해 함께 살펴보았습니다. 조금 더 고급기능에 대해 궁금하신 분들은 아래의 고급기능 목록을 참고하시기 바랍니다.

WEBUI AI 그림 고급기능

아래는 AI 그림 기초 내용에서 다루지 않은 WEBUI의 다른 고급 기능 목록입니다. 시시각각 WEBUI의 기술이 발전하고 있기 때문에 아래에 작성된 기능들 조차도 추후에는 쓸모없어질 수도 있습니다. 각 기능에 대한 상세한 개념 및 적용 방법 등에 대한 내용은 작성이 되는대로 추가할 예정입니다.

번호기능명기능설명바로가기
1Hires.fix고해상도 이미지 퀄리티 상승자세히
2Upscaler이미지 해상도 높이기자세히
3inpainti2i에서 특정 부분만 다시 그리거나 특정 부분을 제외한 부분만 다시 그리는 방법
+그림판 등 다른 이미지 프로그램을 활용해 AI 그림의 디테일을 살리는
자세히
4outpaintingAI를 활용해 기존의 그림을 확장해서 그리는 기술.
원래 없던 그림의 바깥부분을 어색하지 않도록 유사한 그림체로 생성하며 무한히 확장.
자세히
5Textual
Inversion
적용방법
AI가 그림을 그릴 때 특정한 내용을 참고하고 반영하도록 만든 지침서
(다른 사용자가 미리 학습해둔 지침서) 적용 방법.
(ex. 다양한 사람의 표정, 특정 얼굴형, 미리 작성한 부정 프롬프트 등)
자세히
6Lora
적용방법
다른 사용자가 학습한 모델(Lora)을 통해 기존 모델로 그린 AI 그림에
특정 얼굴, 복장, 배경, 그림체, 구도, 사물 등을 추가적으로 적용할 수 있도록 함.
(ex. 한복 표현, 특정인물 얼굴로 그림 그리기, 특정 캐릭터 그리기 등)
자세히
7Lora
학습방법
직접 Lora를 학습하는 방법.자세히
8ControlNetAI 그림의 구도를 특정하는 기술.
사람의 동작이나 포즈 또는 배경이나 사물의 배치 등을 사용자가 직접 세밀하게 제어하는 방법.
자세히
9Tagger그림을 주고 해당 그림을 묘사하는 단어들(tag)을 추출하는 기능자세히

함께 보면 좋은 글