Stable Diffusion: 두 판 사이의 차이

(자동 찾아 바꾸기: 「할 수록」(을)를 「할수록」(으)로)
태그: 되돌려진 기여
잔글 (코코아봇(토론)의 편집을 BATTAN의 마지막 판으로 되돌림)
태그: 일괄 되돌리기
 
1번째 줄: 1번째 줄:
'''Stable Diffusion'''(스테이블 디퓨전)은 Stability AI에서 [[오픈 소스]]로 배포한 'text to image' [[인공지능]] 모델이다. [[글자]]를 [[그림]]으로 치환해주는 소프트웨어이다.
'''Stable Diffusion'''(스테이블 디퓨전)은 Stability AI에서 [[오픈 소스]]로 배포한 'text to image' [[인공지능]] 모델이다. [[글자]]를 [[그림]]으로 치환해주는 소프트웨어이다.


== 개요 ==
== 개요 ==
11번째 줄: 11번째 줄:
간단히 말해서 유저가 입력한 내용(TEXT)를 프로그램이 알아 들을 수 있는 언어로 치환하고(Token), 이를 받아들인 UNet은 토큰이 생성한 무작위의 노이즈(Noise)를 뭉쳐서(Denoise) 그림으로 내놓는다. 이 노이즈와 디노이즈 과정을 연달아 수행하면서 끝에는 유저가 입력한 내용의 그림을 만들어 주는 것이다. 여기서 그림에 색채나 효과를 주는 것이 vae의 역할인 것이다.
간단히 말해서 유저가 입력한 내용(TEXT)를 프로그램이 알아 들을 수 있는 언어로 치환하고(Token), 이를 받아들인 UNet은 토큰이 생성한 무작위의 노이즈(Noise)를 뭉쳐서(Denoise) 그림으로 내놓는다. 이 노이즈와 디노이즈 과정을 연달아 수행하면서 끝에는 유저가 입력한 내용의 그림을 만들어 주는 것이다. 여기서 그림에 색채나 효과를 주는 것이 vae의 역할인 것이다.


그동안의 인공지능은 넓으면 넓을수록 리소스를 과하게 그리고 누적시켜 이용해서 가정용 컴퓨터로는 어림도 없는 성능을 요구했다면 스테이블 디퓨전은 작은 공간에서 노이즈와 디노이즈를 처리하므로 리소스를 크게 먹지 않는다. 물론 리소스를 많이 제공 할수록 내용을 그림으로 치환하는 속도는 빨라지고 그렇지 못한 컴퓨터에서는 느려지는 건 당연한 일.<ref>이를테면 1060 3GB에선 약 2분 걸리는 작업이 3060에선 5~12초 내로 [[도장]] 찍듯 빠르게 작업한다.</ref> 또한 그려야 하는 그림의 크기가 클 수록 당연히 필요한 리소스의 양은 늘어난다. 간단하게 말하면 256*256 크기의 그림과 1024*1024 크기의 그림을 그리는 속도는 4배까진 아니어도 분명 속도의 차이가 있다. 또 이런 크기 때문에 특정 모델이나 작업을 수행하는 방법 등에서 문제가 생겨서 없던 문제가 생기기도 한다.<ref>그래서 일부 모델은 최대 크기, 작업 방법, 추천 vae를 명시해두는 편이다.</ref>
그동안의 인공지능은 넓으면 넓을수록 리소스를 과하게 그리고 누적시켜 이용해서 가정용 컴퓨터로는 어림도 없는 성능을 요구했다면 스테이블 디퓨전은 작은 공간에서 노이즈와 디노이즈를 처리하므로 리소스를 크게 먹지 않는다. 물론 리소스를 많이 제공 할 수록 내용을 그림으로 치환하는 속도는 빨라지고 그렇지 못한 컴퓨터에서는 느려지는 건 당연한 일.<ref>이를테면 1060 3GB에선 약 2분 걸리는 작업이 3060에선 5~12초 내로 [[도장]] 찍듯 빠르게 작업한다.</ref> 또한 그려야 하는 그림의 크기가 클 수록 당연히 필요한 리소스의 양은 늘어난다. 간단하게 말하면 256*256 크기의 그림과 1024*1024 크기의 그림을 그리는 속도는 4배까진 아니어도 분명 속도의 차이가 있다. 또 이런 크기 때문에 특정 모델이나 작업을 수행하는 방법 등에서 문제가 생겨서 없던 문제가 생기기도 한다.<ref>그래서 일부 모델은 최대 크기, 작업 방법, 추천 vae를 명시해두는 편이다.</ref>


== 사용법 ==
== 사용법 ==

2024년 4월 11일 (목) 18:37 기준 최신판

Stable Diffusion(스테이블 디퓨전)은 Stability AI에서 오픈 소스로 배포한 'text to image' 인공지능 모델이다. 글자그림으로 치환해주는 소프트웨어이다.

개요[편집 | 원본 편집]

독일의 뮌헨 대학교의 Machine Vision & Learning Group의 연구를 기반으로 Stability AI를 중심으로 만들어진 인공지능 모델이다. 이 모델은 컴퓨터 사용 리소스를 줄여 낮은 성능의 컴퓨터에서도 인공지능을 이용 할 수 있도록 만들어졌다. 또한 오픈 소스로 공개해서 일반인들도 비용 걱정 없이 사용 할 수 있다.

현재 대두되고 있는 'Ai가 직업을 헤친다'는 인류 사회의 걱정을 심화시킨 장본인이기도 하다.

라이선스가 존재하며 Stable Diffusion를 이용하여 서비스를 제공할 경우 반드시 명시해야 하며 파인 튜닝을 한 모델의 경우 명시된 용도 외에 사용하면 안 된다.

아키텍처[편집 | 원본 편집]

간단히 말해서 유저가 입력한 내용(TEXT)를 프로그램이 알아 들을 수 있는 언어로 치환하고(Token), 이를 받아들인 UNet은 토큰이 생성한 무작위의 노이즈(Noise)를 뭉쳐서(Denoise) 그림으로 내놓는다. 이 노이즈와 디노이즈 과정을 연달아 수행하면서 끝에는 유저가 입력한 내용의 그림을 만들어 주는 것이다. 여기서 그림에 색채나 효과를 주는 것이 vae의 역할인 것이다.

그동안의 인공지능은 넓으면 넓을수록 리소스를 과하게 그리고 누적시켜 이용해서 가정용 컴퓨터로는 어림도 없는 성능을 요구했다면 스테이블 디퓨전은 작은 공간에서 노이즈와 디노이즈를 처리하므로 리소스를 크게 먹지 않는다. 물론 리소스를 많이 제공 할 수록 내용을 그림으로 치환하는 속도는 빨라지고 그렇지 못한 컴퓨터에서는 느려지는 건 당연한 일.[1] 또한 그려야 하는 그림의 크기가 클 수록 당연히 필요한 리소스의 양은 늘어난다. 간단하게 말하면 256*256 크기의 그림과 1024*1024 크기의 그림을 그리는 속도는 4배까진 아니어도 분명 속도의 차이가 있다. 또 이런 크기 때문에 특정 모델이나 작업을 수행하는 방법 등에서 문제가 생겨서 없던 문제가 생기기도 한다.[2]

사용법[편집 | 원본 편집]

위의 아키텍처의 방식대로 스테이블 디퓨전은 '모델'을 통해 사용자의 내용(TEXT)을 노이즈-디노이즈 과정을 통해 구현해낸다. 따라서 모델(Checkpoint)이 없다면 작동을 할 수 없다. 그렇다고 모델만 있어서도 구동이 불가능하다. 따라서 이 모델을 구해다가 models\stable-diffusion 폴더에 넣고 스테이블 디퓨전을 실행하고나서 나타나는 화면에서 왼쪽 상단에서 교체해주면 된다.

모델은 초기엔 2D만 지원하였으나 점차 게임 그래픽 3D, 실사 인물처럼 보이는 3D, 실사 인물을 표본으로 한 3D까지 넓어졌다. 또한 모델마다 학습한 화풍, 캐릭터, 자세, 풍경 등이 다르기에 사용 전 둘러보는 것도 좋다.

프롬프트(prompt)는 2가지로 내가 그려달라고 요청하고 싶은 내용을 적는 공간과 negative prompt라고 그림에서 이런 요소는 빼달라고 할 수 있는 공간이 있다. 네거티브 프롬프트는 보통 low quality, bad quality, ugly face 등과 같은 흔히 '저퀄'이라 부르는 요소들을 집어넣는다. 다만, 너무 과도하게 집어넣으면 모델에 따라서는 피카소의 우는 여인보다 기괴한 그림을 그려 줄 수 있으니 적당히 집어 넣으면 된다.

프롬프트가 비어 있으면 랜덤하게 그려준다. 이를테면 복장에 대한 이야기 없이 해변(beach)을 넣으면 수영복을 입은 사람을 그린다던지 사람 없이 해변 풍경만 그려준다. 허나 이것도 모델의 데이터에 따라 다르므로 반드시 그러한 것은 아니다. 예컨데 모델이 풍경만 학습했다면 인물을 그려달라고 해도 그려주지 않는 그런 것이다.

또한 특정 모델에서는 인식이 불가한 프롬프트가 있다. 학습량이 적어서 구현이 불가능한 속성이거나 캐릭터, 배경은 그려주지 않거나 그려준다 하여도 정확도가 떨어져 뭉게지게 되는데 이를 바로 잡는 것이 Lora와 Embedding이다.

임베딩은 textual inversion이라 부르기도 한다. Lora는 하나의 모델을 만들 듯이 필요한 데이터만 학습시켜서 모델과 함께 사용하는 개념이라 한다면[3] 임베딩은 백과사전에 포스트잇처럼 데이터 하나를 붙이는 것이다.[4] 둘 모두 필요할때만 프롬프트에 넣어서 불러 낼 수 있다. 또한 둘 모두 과하게 사용하면 그림이 뭉게진다.[5]

마지막으로 vae를 적용해야 하는데 모델(checkpoint)에 같이 vae가 포함되는 경우가 있고 그렇지 않아서 개별로 받아 적용해야 하는 경우가 있다. 파일은 models\vae에 넣어주면 된다. 다만 model과 적용법이 다른데 스테이블 디퓨전을 구동하고 나오는 페이지에서 settings에서 stable diffusion 항목의 vae 관련 옵션을 찾아 automatic이나 none으로 된 것을 설치한 vae로 바꿔주면 된다.

그럼에도 불구하고 그림을 뽑아낸 유저와 자신의 그림이 다른 경우가 있다. xformers, 네거티브 프롬프트, 임베딩, 랜덤시드(Random Seed) 등 여러 요인에 의해 같은 프롬프트라 하여도 그림이 좀 달라지는 경우는 있다.

각주

  1. 이를테면 1060 3GB에선 약 2분 걸리는 작업이 3060에선 5~12초 내로 도장 찍듯 빠르게 작업한다.
  2. 그래서 일부 모델은 최대 크기, 작업 방법, 추천 vae를 명시해두는 편이다.
  3. 이를테면 블루아카이브의 아스나가 학습되지 않은 모델에 Lora를 이용해 아스나를 그릴 수 있게 하는 식이다.
  4. 이를테면 특정 자세에 대한 데이터 학습량이 적어 뭉게지게 나오는 것을 선명하게 나오도록 유도하는 것이다.
  5. Lora는 특히 다른 Lora와 같이 쓰거나 그림체를 바꾸는 Lora와 함께 쓰면 뭉게지기 쉽다.