이 글은 Stable Diffusion 또는 다른 이미지 생성형 AI에 대해 거의 아무것도 알지 못하는 초보자를 위한 안내서입니다. (예전에 써둔 글을 새로운 내용을 추가하고 일부 수정하였습니다) 저도 그림은 하나도 그릴 줄 모르지만, 위와 같은 그림도 쉽게 생성할 수 있습니다(이 그림은 DALL-E 3에서 생성하고 스테이블 디퓨전으로 아웃페인트한 결과입니다).
이 글은 스테이블 디퓨전 초보자 가이드 중 첫번째 글입니다.
- Part 1 : 생초보 가이드
- Part 2 : 프롬프트 작성법
- Part 3 : 인페인트
- Part 4 : 모델에 관한 모든 것
아래는 이 글에 포함된 내용입니다.
- 이미지 생성형 인공지능의 종류
- 스테이블 디퓨전(Stable Diffusion) 이란?
- Stable Diffusion 사용방법은?
- Stable Diffusion의 장점
- 스테이블 디퓨전으로 할 수 있는 것
- 어떤 Stable Diffsion 서비스를 사용해야 할까?
- 프롬프트를 잘 만들려면?
- Stable Diffusion 기본 파라미터
- 얼마나 많은 이미지를 생성해야 하나?
- 잘못된 이미지 수정하기
- 어떤 모델을 사용할 것인가?
- 새로운 모델을 학습시키는 방법
- 부정적 프롬프트
- Stable Diffusion으로 인쇄용 대형 이미지를 생성하는 방법
- 이미지의 구도를 제어하는 방법
- 특정한 피사체 생성하기
이미지 생성형 인공지능의 종류
이미지 생성형 인공지능(Generative AI for Image)란, 말 그대로 인공지능 중에서 이미지 생성 방면으로 특화된 인공지능을 말합니다. 이미지 생성형 인공지능은 아주 여러가지가 있습니다. 가장 널리 사용되는 것은 자신의 사진을 입력하면 약간 변형한 이미지 혹은 아바타를 만들어주는 서비스로서, 인스타그램 등의 SNS에서 많이 사용되고 있죠.
이렇게 특정한 이미지만 처리해주는 서비스외에 어떤 문장 또는 단어의 조합(프롬프트라고 합니다)만 입력하면, 이에 맞는 이미지를 생성해주는 서비스 혹은 소프트웨어도 있습니다. 이러한 기술의 경우 생성하는 이미지가 인물, 풍경, 정물 등 아무런 제한이 없고, 예술가 스타일이나, 애니 스타일을 적용하는 등 이미지로 상상할 수 있는 모든 것을 생성할 수 있습니다.
이러한 서비스/소프트웨어 중에서 가장 유명한 것이 미드저니(MidJourney)와 달리3(DALL-E 3) 그리고 스테이블 디퓨전이 있습니다. 이중 미드저니와 달리3는 가입형 서비스이고, 스테이블 디퓨전은 오픈소스 소프트웨어로서 자유롭게 자신의 PC 에서 수행할 수 있습니다.
제가 제일 처음 맛본 이미지 생성형 인공지능은 미드저니입니다. 인공지능으로 그린 그림이 미술전에서 1등을 수상했다(링크)고 한동안 떠들썩했죠. 저도 이 뉴스 때문에 관심을 갖고 몇장 생성해 보기도 했습니다. 아주 놀라웠죠.
DALL-E 3는 현재 시점에서 가장 놀라운 AI 라고 할 수 있는 ChatGPT 내에서 사용할 수 있습니다. 무료버전인 ChatGPT 3.5 에서는 사용할 수 없고, ChatGPT Plus에 가입해야 사용할 수 있는 유료버전 서비스입니다. 그런데 2024년 1월 4일 현재 마이크로소프트 코파일럿(Copilot)을 사용하면 무료로 사용할 수 있습니다. 비교해보지는 않았지만 약간 기능이 다르다고는 합니다. DALL-E 3는 입력된 프롬프트를 매우 잘 따르는 걸로 유명합니다. 자세한 내용은 제가 쓴 평가 글을 읽어보세요.
이 글은 주로 스테이블 디퓨전(Stable Diffusion)에 대해서 다룹니다. 제가 요즘 가장 많이 사용하는 이미지 생성형 인공지능입니다. 오픈 소스이고(따라서 무료로 사용할 수 있고) 세세한 제어가 가능할 뿐 아니라, 제 PC에서 직접 실행시킬 수 있어서, 그래픽카드(GPU)에 약간만 더 투자하면 무한정 이미지를 생성할 수 있는 장점이 있기 때문입니다.
스테이블 디퓨전(Stable Diffusion) 이란?
스테이블 디퓨전은 인공지능 이미지를 생성하는 잠재 확산 모델(latent diffusion model) 모델입니다. 카메라로 직접 촬영한 듯한 정말 사실적인 사진도, 예술가들이 직접 그린 예술 작품 같은 이미지도 생성할 수 있습니다.
가장 좋은 점은 무료라는 것입니다. 언제든지 자신의 PC에서 사용할 수 있습니다.
Stable Diffusion 사용방법은?
예를 들어, 생강 과자집(gingerbread hous) 사진이 필요하다고 해보죠. 이때 프롬프트(Prompt)를 아래와 같이 같이 입력하면
gingerbread hous, diorama, in focus, white background, toast, cruch cereal
스테이블 디퓨전은 다음과 같은 이미지를 생성해 줍니다. 아주 간단합니다!. 그리고 상당히 쓸만합니다! 일반적으로 생성하는 이미지는 그때그때 모두 달라지는데, 그 중에서 가장 마음에 드는 것을 선택하기만 하면 됩니다.
Stable Diffusion의 장점
DALL-E 혹은 미드저니(MidJourney)와 같이 텍스트에서 이미지를 생성하는 서비스는 많습니다. 하지만, 스테이블 디퓨전은 다음과 같은 장점이 있습니다.
- 오픈소스(Open-Source) : 소스가 공개되어 있어 무료로 사용할 수 있으며, 많은 개발자들이 참여하여 새로운 기능이 추가되고 있습니다.
- 저사양 컴퓨터 작동 가능 : 대부분의 상용 이미지 생성형 인공지능은 컴퓨터 자원 (및 전기)을 무지막지하게 사용하는 걸로 알려져 있습니다. 하지만, Stable Diffusion은 저가 컴퓨터에서도 작동합니다(아주 느리긴 해도 GPU없이 CPU만으로 돌릴 수도 있습니다)
- 무료: 자신의 컴퓨터에서 스테이블 디퓨전을 돌리면 무료로 AI 이미지를 생성할 수 있습니다. 스테이블 디퓨전을 사용한 온라인 서비스도 있는데, 이런 서비스를 사용하려면 약간의 비용이 필요할 수 있습니다.
스테이블 디퓨전으로 할 수 있는 것
1. 텍스트로부터 이미지를 생성하기
스테이블 디퓨전을 사용해 이미지를 생성하는 방법은 여러가지가 있지만, 가장 기본적인 것은 text-to-image(txt2img) 방식입니다. 아래는 Stable Diffusion으로 생성할 수 있는 이미지의 예입니다.
Anime 스타일
사실적 사진
사실적 인물 사진에 관심이 있으시면 여기를 읽어보세요.
풍경
판타지풍 이미지
예술적 이미지
동물
2. 이미지로부터 이미지를 생성하기
image-to-image(img2img) 기능을 사용하면, 어떤 이미지를 기준으로 다른 이미지를 생성할 수 있습니다. image-to-image 는 텍스트 프롬프트 뿐만 아니라, 이미지도 입력으로 넣어주는 방식입니다. Stable Diffusion은 입력한 이미지를 기본으로 깔고, 프롬프트의 요구사항을 만족시키는 방향으로 이미지를 생성합니다. (사실 text-to-image도 img2img 방식의 일종이라고 할 수 있습니다. 다만 입력된 이미지가 무작위 잡음만 있는 그림일 뿐이죠.)
아래는 제가 대충 손으로 그린 그림을 AI로 재생성한 그림입니다. (프롬프트는 "a color pencil sketch of girl in grassland, standing pose, praying, clasp hands on the chest, facing right, look into the distance, flowers, blue sky with clouds, small hill in the background" 입니다)
물론 한번만에 뽑아낼 수 있었던 건 아니고, ChatGPT의 도움을 받아 프롬프트를 가다듬으면서, 약 15장 정도중에서 제일 마음에 드는 걸 선택했습니다. 보시는 것처럼, 아무리 개떡같은 그림을 입력해도 인공지능은 전문가 수준의 그림을 뽑아내 줍니다. 너무 행복합니다. ㅎㅎㅎ
3. 이미지 편집
inpainting 기능을 사용하면 AI 가 생성한 사진 혹인 일반 이미지의 일부를 재 생성할 수 있습니다. 포토샵을 써보신 분은 내용인식(context-aware) 채워넣기와 거의 비슷하다고 생각하실 수 있습니다. 더 자세한 내용은 이 글을 읽어보세요.
4. 비디오 생성
Stable Diffusion으로 비디오를 만드는 방법은 크게 두가지가 있습니다. 한가지는 text prompt만 사용해서 비디오를 만드는 방법이고 다른 하나는 다른 비디오를 기준으로 인물이나 배경등을 바꾸는 방법입니다.
Deforum 을 사용하면 텍스트 프롬프트를 사용해서 비디오를 만들 수 있습니다. 아래는 그 예입니다.
아래는 비디오를 사용해서 새로운 비디오를 만드는 방식입니다. 자세한 내용은 스테이블 디퓨전을 사용해서 비디오 만들기(Video2Video)를 읽어보시기 바랍니다.
어떤 Stable Diffsion 서비스를 사용해야 할까?
스테이블 디퓨전은 오픈 소스이라서, 다양한 형태의 서비스가 존재합니다. 예를 들어 제가 올린 Easy Diffusion - 가장 쉬운 Stable Diffusion 이나, Fooocus : 아주 간편한 Stable Diffusion도 그중 하나입니다. 그중 일부는 어느 정도 뒤에는 사라질 수도 있고, 더 나은 서비스도 등장할 수 있습니다.
온라인 생성기
미드저니나 Dall-E 만큼 유명하지는 않아도, 스테이블 디퓨전 기반의 온라인 서비스도 많이 존재합니다. 이중에서 하나를 선택해서 가입한 뒤, 적당한 프롬프트만 넣으면 원하는 이미지를 얻을 수 있습니다. 사용 측면에서는 아주 간단합니다. 심각하게 사용할 게 아니라 간단한 그림 몇장 얻고 싶은 정도라면 이런 서비스를 이용하는 것도 좋은 선택일 것니다. 사용자가 많을 수록 더 나은 결과물이 공유되고, 더 많은 것을 배울 수 있다는 점을 고려하여 서비스를 선택하시면 됩니다.
고급 GUI
무료 온라인 사이트는 기능이 많지 않다는 단점이 있습니다. 그래서 자신의 PC에 GUI (및 모델)을 설치하면 자유롭게 사용할 수 있습니다.
약간은 번거로운 설치작업이 필요하지만, 자신의 PC가 VRAM 4GB 이상의 NVidia GPU가 있다면 Automatic1111을 사용하는 것이 가장 좋습니다. 설치방법은 여기를 참고하시면 됩니다.. 하지만, 설치작업이 어렵다고 느낀다면 Easy Diffusion 또는 Fooocus를 추천합니다. 이들은 그냥 다운로드 받아서 원하는 폴더에 압축을 풀기만 하면 시행할 수 있어서 무척 편합니다. 다만, 최신 기능이 없는 게 있어서 약간 아쉬워 질 수 있습니다.
PC의 성능이 너무 떨어진다면 Google Colab을 사용하는 것이 좋습니다. Google Colab은 구글에서 제공하는 클라우드에서 연산을 하고, 자신의 PC에서는 GUI로 환경을 설정하는 일만 담당하기 때문에, 자원이 거의 없는 노트북에서도 사용할 수 있습니다. 현재까지 우리집 PC로 돌려본 결과 Google Colab이 처음 기동시킬 때 까지 시간이 걸리지만, 이미지를 생성할 때에는 3-4 배정도 빨리 돌아갑니다. 동시에 뽑을 수 있는 배치 사이즈(batch size)도 8개 까지 한꺼번에 뽑을 수 있어 시간상 많이 절약됩니다.
그런데... 저는 이것 저것 테스트하느라 그림을 많이 뽑아냈더니 접속이 제한되어버렸습니다. 이후에는 매달 $9.99 인 유료 구독 서비스를 사용해야 합니다. 그나마 무한정 사용할 수 있는 게 아니라, 컴퓨팅 단위 제한이 있는 걸로 알고 있습니다. 그래서 저는 포기했습니다.
그럼 왜 이런 독자 GUI 방식을 사용해야 할까요? 다음과 같은 장점이 있기 때문입니다.
- 보다 고급 프롬프트(Prompt)를 입력할 수 있다.
- 인페인트(Inpaint) 기능을 사용해 이미지 일부만 다시 그릴 수 있다.
- 이미지를 입력하고, 그 이미지를 기반으로 새로운 이미지를 생성할 수 있다.(img2img)
- 명령을 입력해 이미지를 편집할 수 있다(pix2pix)
이러한 웹UI도 여러가지가 있습니다. 아래는 제가 사용해 본 스테이블 디퓨전용 Web UI를 간단히 정리한 것입니다.
- AUTOMATIC1111 - 가장 널리 사용되며, 비교적 사용하기 쉽고 다양한 기능을 제공해 줍니다.
- EasyDiffusion - 쉽게 사용할 수 있습니다.
- Fooocus - 제일 사용하기 쉬우면서도, 쓸만한 이미지를 생성합니다.
- ComfyUI - 처음 사용하기는 어렵지만, 매우 다재다능하고, 기능을 마음대로 바꿔볼 수 있으며 매우 빠릅니다.
저의 입문 순서는 EasyDiffusion -> AUTOMATIC1111 -> ComfyUI 인데, 보통은 AUTOMATIC1111을 추천드립니다. 하지만 요즘 2024년 1월 현재 AUTOMATIC1111보다 ComfyUI 사용횟수가 더 많아졌네요.
프롬프트를 잘 만들려면?
프롬프트를 잘 만드는 것은 자신이 원하는 이미지를 얻기 위한 가장 기본입니다. 가장 기본은 원하는 주제를 가능한 한 상세하게 입력하면 됩니다. 아울러 중요한, 그리고 스타일을 결정하는 강력한 키워드를 반드시 기억해 활용해야 합니다.
가장 쉬운 방법은 기존 프롬프트를 재활용하는 것입니다. civitai.com, openart.ai, playgroundai.com 와 같은 인공지능 이미지 공유사이트에 접속해 자신이 원하는 것과 비슷한 이미지를 찾고, 그 이미지를 만든 프롬프트를 복붙해서 사용하는 방법입니다. (구글에서 "인공지능 이미지 공유" 혹은 "AI image share"정도만 입력하면 이런 사이트이 엄청 많이 나옵니다.) 프롬프트를 잘 들여다 보고, 자신이 원하는 결과물을 얻을 때 까지 적당하게 더하고 빼면서 조절하시면 됩니다. 다만, 공유사이트에서 본 이미지와 동일하게 나올 것이라는 기대는 안하는 게 좋습니다. 다양한 환경변수 중에 약간만 달라져도 완전히 다른 이미지가 나온다는 것을 기억해야합니다.
특히 영어가 익숙하지 못한 분들이라면 chatGPT 를 사용해서 프롬프트를 만드는 방법을 추천드립니다.
openart.ai에서 만든 프롬프트 북을 읽어보면 많이 도움이 될 것 같습니다. 특히, 질문 목록을 만들어서 프롬프트를 만들어 가는 과정은 참고하면 좋습니다. 프롬프트 작성을 도와주는 사이트도 있는데, 기본적으로는 아래와 같은 여러가지 측면을 나누어 해당되는 단어를 선택할 수 있도록 만들어 둔 것입니다.
- 사진인가 그림인가? (photo, painting, sketch, 3D drawing 등)
- 주제는 사람? 동물? 풍경?(person or animal or landscape)
- 추가하고 싶은 요소
- 특별한 아트 스타일? 3D 렌더링, 지브리 스튜디오, 영화 포스터(3D render, studio ghibli, movie poster)
- 사진 종류? 마크로 렌즈, 망원렌즈(macro, telephoto)
좋은 프롬프트를 작성하는 방법
가장 중요한 법칙 1) 자세하게, 구체적으로, 2) 강력한 키워드를 쓸 것. 이 두가지 입니다.
자세하게 구체적으로
AI 가 하루가 멀게 진화하고 있지만, 스테이블 디퓨전이 당신의 마음을 읽을 수는 없습니다.^^ 따라서, 자신의 마음 속에 있는 것을 가능한 한 상세하게 적는 것이 프롬프트의 출발점입니다.
예를 들어 다음과 같은 프롬프트를 입력했다고 하겠습니다.
a woman on street
그 결과 아래와 같은 이미지가 나왔다고 해보죠. (사실은 할머니 사진이 너무 안나와서 일부러 할머니 사진을 뽑게 했습니다. ㅎㅎ)
할머니 사진을 원한 건 아니겠지만, 이 이미지가 프롬프트에 틀린 것은 아니죠. 다만 내용이 불충분했을 뿐입니다. 따라서 좀 더 자세하게 적어보도록 하겠습니다.
a young lady, brown eys, highlights in hair, smil, wearing stylish business casual attire, sitting outside, quiet city street, rim lighting
완전히 다르죠? 원하는 이미지인가요? 아니라면 다시 생성하면 됩니다. 필요하다면 좀 더 프롬프트를 수정해서 지정하면 원하는 이미지가 나올 확률이 더 높아집니다.
강력한 키워드 사용하기
일부 키워드는 매우 강력합니다. 예를 들면 아래와 같습니다.
- 유명인 이름 (예: Emma Watson)
- 예술가 이름 (예: Vincent van Gogh)
- 예술 매체 (예: illustration, painting, photograph, pencil schetch)
이런 단어들을 적절히 사용하면 원하는 이미지를 얻는 데 매우 도움이 됩니다.
그런데... 한글로 학습된 이미지 모델이 없기 때문에 모든 키워드는 영어로 입력해야 합니다. 한글로도 뭐라고 해야 할 지 떠오르지 않는 게 문제이긴 하지만요. ㅠㅠ 이럴 때, 일단 ChatGPT에 자신이 생각하는 원하는 그림을 설명하고, 이를 프롬프트를 만들어 달라고 해볼 수 있습니다. 한글로 먼저 주문한 뒤 영어로 바꿔달라고 하면 대충 원하는 프롬프트를 얻을 수 있을 것입니다. 자세한 내용은 ChatGPT 로 스테이블 디퓨전 프롬프트 만들기를 읽어보세요.
Stable Diffusion 기본 파라미터
Stable Diffusion은 매우 많은 파라미터를 설정할 수 있습니다. 자세한 내용은 이 글을 보시면 됩니다. 하지만, 가장 중요한 것만 요약하면 아래와 같습니다.
- 이미지 크기 : 출력 이미지의 크기. 512x512가 기본입니다. 텍스트 프롬프트가 동일할 경우에도, 크기가 달라지면 생성되는 이미지가 엄청나게 달라집니다. 예를 들어 이미지 크기는 좌우가 넓은데 서있는 사람을 프롬프트에 입력해서는 생성될 확률이 떨어집니다. 이때는 512x768 등 landscape가 아닌 portrait 크기로 지정하는 것이 좋겠습니다. 이미지 크기를 잘못 설정하면 이런 기괴한 이미지가 생성될 수도 있습니다.
- 샘플링 스텝(Sampling steps) : 최소 20회가 필요합니다. 이미지가 좋지 않으면 일단 좀 더 늘려볼 수 있습니다. 담, 40회 이상은 거의 필요가 없다고 합니다.
- CFG(무분류기 안내, Classifier-free Guidance) : 기본이 7입니다. 작게하면 인공지능의 자유도가 올라갑니다. 즉 프롬프트를 무시할 확률이 커지게 됩니다.
- 시드 값(seed) : -1로 지정하면 무작위로 지정됩니다. 모든 이미지에는 시드 값이 있다고 생각하면 되는데, 동일한 값을 입력하면 동일한 이미지를 얻을 수 있습니다.
얼마나 많은 이미지를 생성해야 하나?
저는 처음에 2-4 장씩 생성하면서 원하는 것와 비슷한 이미지가 나오는지 확인해 본 뒤, 프롬프트를 조금씩 바꿔가면서 4장 정도씩 뽑는 편입니다.
기본적으로 성능이 좋은 PC라면 한번에 더 많은 이미지를 뽑을 수 있습니다. 특히 배치 사이즈(Batch size)를 크게 할 수록 전체적으로 생성되는 속도가 빨라지게 됩니다.
잘못된 이미지 수정하기
AI 이미지를 생성하다보면, 특히 사람의 모습을 생성할 경우, 부자연스러운 표정이나 자세를 취한 이미지가 만들어지는 경우가 많습니다. 정말 마음에 드는 데 일부분만 잘못되었다면 새로 그리는 것보다 일부는 수정하는 편이 훨씬 나을 수 있겠죠.
얼굴 복원(Face Restoration)
생성형 인공지능으로 출력한 이미지는 특히 얼굴이 부자연스럽게 나오는 경우가 많습니다. (Stable Diffusion 최신버전인 SDXL의 경우 부자연스러운 얼굴/손/발 등은 많이 사라졌습니다.) 예전에는 이를 후처리해야 했던 모양이지만, [Restore faces]를 선택하고 생성하면 거 해결됩니다. Settings에 들어가면 얼굴 복원에 관한 설정이 있는데, 아래와 같이 설정하면 크게 문제가 없습니다. 만약 얼굴 복원 옵션을 꺼둔 상태로 이미지를 생성했다면, 해당 영상의 씨드번호를 넣어주고 또 다시 돌려주면 됩니다.
아래는 얼굴 복원을 꺼뒀을 때와 켰을 때의 차이를 보인 것입니다.(프롬프트는 "A portrait of a fairy princess, tiara, long flowery hair, fantasy, soft background, sea-like , bluish dress, bare shoulders, UHD, 8k, beautiful composition, a modern surrealistic, " ) 인물이 들어간 이미지를 뽑을 때는 무조건 [Restore faces] 옵션을 켜두는 게 좋겠습니다.
인페인트를 사용한 결함 제거
생성한 이미지가 전체적으로는 마음에 드는데, 일부분에 결함이 있을 경우, 인페인트(Inpaint)를 이용해 수정할 수 있습니다. 예를 들어 아래 왼쪽에 있는 사진을 뽑았는데(프롬프트 "Photo of A couple of lovers staring at the milkyway, dark and dim in midnight, in the desert, highly detailed, wide-angle lens, HD"), 연인의 모습이 마음에 안들어 앉아있는 모습으로 수정하였습니다.
이렇게 Stable Diffusion에서 생성한 이미지 뿐만 아니라, 자신이 실제로 찍은 사진이나 그림 등도 물론 수정할 수 있습니다.
어떤 모델을 사용할 것인가?
스테이블 디퓨전이 생성하는 이미지에 가장 영향을 미치는 것이 사용하는 모델입니다. 고양이를 학습하지 않는 모델을 사용하면 고양이 이미지를 생성할 수 없고, 고양이만 학습한 모델이라면 고양이 이미지만 생성할 수 있습니다.
스테이블 디퓨전 개발사인 Stability AI에서는 현재까지 Stable Diffusion 1.4, 1.5, 2.0, 2.1, SDXL 등 총 5가지의 기반 모델(base model)을 공개했습니다. 이 기반모델을 사용하면 모든 종류의 이미지를 생성할 수 있지만, 그렇다고 특별히 원하는 이미지(내가 좋아하는 연예인이나, 내가 좋아하는 애니 스타일 등)를 생성할 수는 없습니다. 그런 이미지를 학습하지 않았기 때문이죠.
이럴 때 원하는 스타일의 이미지를 사용해 추가로 학습, 즉 미세조정한 모델들이 존재합니다. 이러한 미세 조정 모델은 매우 종류가 많고 매일 매일 새로운 것들이 나오고 있습니다. 어떤 모델을 사용하면 좋을지에 대해서는 이 글을 읽어보시기 바랍니다.
처음 시작한다면 기본 모델에 익숙해지시는 게 좋습니다. 기본적으로 Stable Diffusion 은 세가지 종류의 기본 모델이 존재합니다.
- v1 모델 : 1.4 또는 1.5
- v2 모델 : 2.0 또는 2.1
- SDXL 1.0
v2 모델이 v1보다 좋을 것이라고 생각하시겠지만, 사용해본 분들에 따르면 프롬프트대로 생성되지 않는 경우가 많다고 합니다. 가장 추천드리는 것은 v1.5 모델 혹은 SDXL 1.0 모델인데, 쉽게 사용하시려면 SDXL 1.0 모델을, 좀 더 자유롭게 원하는대로 조정하며 사용하고 싶다면 v1.5 모델을 추천드립니다.
하지만, 2004년 1월 현재 v1.5보다 SDXL1.0을 추천합니다. 기본적으로 v1.5보다 SDXL이 모델 크기도 크고 생성한 이미지의 품질도 좋습니다. 이제 나온지 몇개월 지나, ControlNet도 지원되고 미세조정 모델도 많이 나와서 사용하기 편하기 때문입니다.
새로운 모델을 학습시키는 방법
스테이블 디퓨전의 가장 좋은 점 중 하나가 모델을 마음대로 제어할 수 있다는 것입니다. 다른 온라인 서비스는 편리하지만, 해당 서비스에서 제공하는 모델만 사용할 수 있죠. 하지만 스테이블 디퓨전의 경우, 원한다면 자신만의 독자적인 모델을 생성할 수도 있습니다. 새로운 모델을 학습시키는 방법은 많지만, 가장 많이 사용하는 방법은 (1)Dreambooth 와 (2)임베딩입니다.
이 두가지 중에서 드림부스(Dreambooth)가 훨씬 강력합니다. 모델에 포함된 모든 가중치를 미세 조정할 수 있기 때문입니다. 반면 임베딩의 경우 모델은 그대로 둔 상태에서 새로운 주제 혹은 스타일을 설명하는 새로운 키워드를 만드는 방식입니다.
부정적 프롬프트
프롬프트는 이미지에 나타나길 원하는 것을 넣습니다. 반면, 이미지에 안나타나길 원하는 내용은 부정적 프롬프트(negative prompt)에 적어야 합니다. 모든 스테이블 디퓨전 서비스가 부정적 프롬프트를 지원하는 것은 아닙니다. 하지만, v1 모델이나 v2 의 경우 거의 반드시 필요합니다. 사용하기가 어렵지도 않습니다. 초보자라면 그냥 널리 사용되는 부정적 프롬프트를 넣기만해도 오케이입니다. 자세한 내용은 이 글을 읽어보시기 바랍니다.
Stable Diffusion으로 인쇄용 대형 이미지를 생성하는 방법
스테이블 디퓨전 v1의 기본 이미지 크기는 512x512입니다. 스테이블 디퓨전 1.4 혹은 1.5를 사용한다면, 무작정 큰 이미지를 생성해서는 안됩니다. 완전히 이상하거나 품질이 떨어지는 이미지가 생성되기 때문입니다. 기본적으로 한쪽 면의 크기가 512 픽셀이 되도록 생성하는 것이 좋습니다. 예를 들면...
- 풍경화(Landscape) 모드 : 대략 높이를 512로 맞추고, 폭을 원하는대로 설정하는 게 좋습니다. 제일 많이 사용하는 해상도는 768x512 입니다.
- 초상화(Portrait) 모드) : 폭을 512로 맞추고 높이를 원하는 대로 설정하는 게 좋습니다. 가장 많이 사용하는 해상도는 512x768 입니다.
SDXL의 경우엔 기본 해상도가 1024x1024로 커졌습니다. 그런데, SDXL의 경우엔 여러가지 이미지 크기로 학습시켰고, 그래서 SDXL을 사용할 때는 몇가지 정해진 해상도로 생성하는 것이 최적의 결과를 만들어냅니다.
이렇게 이미지를 생성하더라도 인쇄용으로는 많이 부족합니다. 그래서 그다음에는 확대(upscale)이 필요합니다. 인공지능 확대기(Upscaler)는 단순한 뻥튀기가 아니라, 이미지를 확대하면서 보다 자세한 디테일을 끼워넣는 방식으로 이루어집니다. 또한 원 이미지에 존재하는 결함을 없애주기도 하고요. 자세한 내용은 이 글을 읽어보시기 바랍니다.
이미지의 구도를 제어하는 방법
이미지를 생성할 때, 그냥 생각하는 프롬프트를 입력하고, 인공지능에게 여러 장을 생성하도록 한 다음, 그중에서 마음에 드는 것을 고르는 방법이 일반적입니다. 하지만, 좀 더 머리속에 그리는 구도가 있다면, 그 구도를 따라 이미지를 생성하도록 지시하는 방법도 있습니다.
Image-to-image
아래는 좌측의 검독수리 이미지를 기반으로 드래곤 이미지를 생성한 것입니다. img2img에서 입력 영상을 주면, 결과 이미지가 그 구도를 따라 생성됩니다. 가운데와 오른쪽은 잡음 제거 강도(Denoising Strength)를 달리한 결과입니다. 자세한 내용은 Stable Diffusion 초보자 가이드를 참고하세요.
ControlNet
인공지능 생성 이미지에서 특정한 자세를 취한 영상을 얻으려면 ControlNet을 사용합니다. ControlNet도 입력 이미지를 사용하여 출력 이미지를 제어합니다. 다만, 특정한 정보, 예를 들면 사람의 자세와 같은 정보만 추출해 사용합니다. 아래는 ControlNet을 사용하여 왼쪽의 입력 이미지로부터 자세를 복사하여 생성한 이미지입니다. 자세만이 아니라, 외곽선과 같은 정보도 추출해 사용하는 방법도 있습니다.
ControlNet에 대한 자세한 내용은 이 글(1)과 이 글(2)를 읽어보세요.
Depth-to-Image
Depth-to-Image를 사용해도 입력 이미지로부터 구조를 제어할 수 있습니다. Depth-to-Image는 입력된 영상의 전경과 배경을 감지할 수 있는데, 출력 이미지는 동일한 전경과 배경을 따르게 됩니다. 아래는 그 예입니다.
지역분할 프롬프트(Regional Prompting)
Regional Prompter라는 확장(extension)을 설치하면, 일부 이미지에만 프롬프트가 적용되도록 할 수 있습니다.
예를 들어 아래는 오른쪽 위에 보름달이 있도록 하고, 왼쪽에 불꽃이 있도록 제어한 마녀 이미지입니다.
특정한 피사체 생성하기
사실적인 인물 사진
스테이블 디퓨전을 사용해서 사실적인 인물 사진을 생성할 수 있습니다. 아래는 몇가지 예입니다. 적절한 모델과 적절한 프롬프트를 사용하면, 정말 실물과 구분이 안될 정도로 정교한 인물 사진을 생성할 수 있죠. 자세한 내용은 이 글을 읽어보시기 바랍니다.
동물
동물도 스테이블 디퓨전 사용자들이 선호하는 피사체중의 하나입니다. 아래는 몇가지 예입니다. 자세한 사항은 이 글을 읽어보세요~
기타 여러가지 피사체에 관한 글은 스테이블 디퓨전으로 멋진 이미지 만들기를 읽어보시기 바랍니다.
마지막으로 https://ai-image-prompt.tistory.com/ 는 제가 이미지를 생성하다가 마음에 드는 것들이 있을 때 기록해두는 사이트입니다. 참고하세요.
이상입니다. 이글은 Andrew 님의 글을 참고로, 일부는 번역하고, 샘플 중 일부는 제가 직접 해보면서, 필요한 부분을 제가 고쳐쓴 글입니다. 특히 개별 이미지가 아닌, 테두리가 있는 이미지는 해당 사이트에서 캡처했음을 알려드립니다.
민, 푸른하늘
====
- ComfyUI로 설치 및 사용법 기초
- ComfyUI 초보자 가이드
- ComfyUI를 위한 유용한 정보
- ComfyUI와 SDXL 사용법(1) - 기초
- ComfyUI에서 ControlNet 사용법
- 편리한 ComfyUI 워크플로 모음
- LCM-LoRA - 초고속 스테이블 디퓨전
- Stable Video Diffusion(비디오 스테이블 디퓨전)
- Stable Diffusion 인공지능 이미지 생초보 가이드
- Stable Diffusion 대표 UI - AUTOMATIC1111 설치방법
- Automatic1111 GUI: 초보자 가이드(메뉴 해설)
- Stable Diffusion에 대한 기본적인 이론
- ChatGPT로 스테이블 디퓨전 프롬프트 만들기