Stable Diffusion 알아보기
Stable Diffusion은 이미지를 생성하는 Ai로 2022년에 출시된 딥 러닝 텍스트-이미지 모델이다.
우리가 입력한 명령어(Prompt)에 따라 상세한 이미지를 생성하는 데 주로 사용되지만 인페인팅, 아웃페인팅 및 이미지 생성과 같은 다른 작업에도 적용할 수 있다.
Stable Diffusion은 독일 뮌헨 대학교 Machine Vision & Learning Group (CompVis) 연구실의 “잠재 확산 모델을 이용한 고해상도 이미지 합성 연구”를 기반으로 하여, Stability AI와 Runway ML 등의 지원을 받아 개발된 딥러닝 인공지능 모델이다.
Stable Diffusion은 LMU Munich 의 CompVis 그룹에서 개발한 LDM(Latent Diffusion Model)이라는 일종의 확산 모델(DM)을 사용한다.
2015년에 도입된 확산 모델은 훈련 이미지에서 일련의 노이즈 제거 자동 인코더로 생각할 수 있는 가우시안 노이즈의 연속 적용을 제거하는 목적으로 훈련된다.
Stable Diffusion에서 사용하는 노이즈 제거 프로세스는 아래 이미지와 같다.
이 모델은 주의 메커니즘과 함께 개념에 대해 사전 훈련된 CLIP 텍스트 인코더의 안내에 따라 구성된 단계 수에 도달할 때까지 무작위 노이즈를 반복적으로 제거하여 이미지를 생성하여 훈련된 개념의 표현을 묘사하는 원하는 이미지를 생성한다.
오픈 소스로 공개해서 일반인들도 사용을 할 수 있다.
여기에서 AUTOMATIC1111(자동좌)가 만들어주신 WebUi를 설치하는 방법에 대해 알아보려고 한다.
System Requirement
먼저 사양에 대해 알아보자.
메모리와 그래픽 카드 두 가지만 보면 된다.
512×768 그림을 생성하는데 2분~20초 정도 걸린다.
512×768 그림을 생성하는데 10초 정도 걸린다.
무료버전 코랩은 WebUi를 돌리면 경고먹는다니 코랩 프로를 사용하자. 참고: 코랩 프로, 자주 묻는 질문(약관/제한사항)
512×768 그림을 생성하는데 구글 코랩보다 빠르다.
512×768 그림을 생성하는데 2초~10초
Models
모델들을 다운로드 받을 수 있는 사이트
HuggingFace, CIVITAI 두 곳이 가장 유명하다.
CheckPoint
쉽게 생각하여 이미지를 만드는 큰 틀이라고 생각하면 된다. 예를들어 애니메이션 관련 모델을 선택했는데 실사체 이미지를 생성할 수는 없다.
미리보기 이미지는 png 형식만 적용되며 파일 이름과 동일해야 WebUI에서 미리보기 이미지가 표시된다.
파일 확장자: .ckpt .safetensors / .ckpt는 요즘 보안 이슈로 거의 대부분 .safetensors 확장자를 사용한다.
저장 위치: stable-diffusion-webui\models\Stable-diffusion
LoRa
LoRA(Low-Rank Adaptation)는 다른 추가 학습 기법들보다 많이 사용되고 있다.
Microsoft 연구원이 개발한 Stable Diffusion을 위한 기존 모델에 새로운 피사체를 학습시키는 추가 학습 기법의 일종이다.
특정한 이미지의 캐릭터를 만들고 싶을 때 LoRA에서 학습을 시켜서 그 이미지의 캐릭터를 쉽게 만들어낼 수 있다.
미리보기 이미지는 png 형식만 적용되며 파일 이름과 동일해야 WebUI에서 미리보기 이미지가 표시된다.
파일 확장자: .ckpt .safetensors / .ckpt는 요즘 보안 이슈로 거의 대부분 .safetensors 확장자를 사용한다.
저장 위치: stable-diffusion-webui\models\Lora
Embedding
사용자가 제공한 이미지 모음에서 학습할 수 있으며 생성 프롬프트 내에서 임베딩 이름이 사용될 때마다 모델이 시각적으로 유사한 이미지를 생성할 수 있다.
Embedding은 Nvidia 의 지원을 받아 2022년 텔아비브 대학 의 연구원이 개발한 “TEXTUAL INVERSION” 개념을 기반으로 하며, 여기서 모델의 텍스트 인코더가 사용하는 특정 토큰에 대한 벡터 표현은 새로운 의사 단어에 연결된다.
Embedding을 사용하여 원본 모델 내의 편향을 줄이거나 시각적 스타일을 모방할 수 있다.
미리보기 이미지는 png 형식만 적용되며 파일 이름과 동일해야 WebUI에서 미리보기 이미지가 표시된다.
파일 확장자: .pt
저장 위치: stable-diffusion-webui\embeddings
HYPERNETWORK
더 큰 신경망 내의 다양한 지점에 적용되는 미리 훈련된 작은 신경망이며, 원래 텍스트 생성 변환기 모델을 위해 NovelAI 개발자 Kurumuz가 2021년에 만든 기술을 말한다.
Hypernetworks는 특정 방향으로 결과를 조정하여 Stable Diffusion 기반 모델이 원래 모델에서 아티스트를 인식하지 못하더라도 특정 아티스트의 아트 스타일을 모방할 수 있도록 한다.
머리카락과 눈과 같은 중요한 주요 영역을 찾아 이미지를 처리한 다음 이 영역을 보조 잠재 공간에 패치한다.
미리보기 이미지는 png 형식만 적용되며 파일 이름과 동일하면 오류가 생기므로 파일 이름.preview.png 이렇게 넣어야 WebUI에서 미리보기 이미지가 표시된다.
파일 확장자: .pt
저장 위치: stable-diffusion-webui\models\hypernetworks
Wildcards
비슷한 종류의 프롬프트를 하나의 텍스트 파일에 모아놓고 그 파일을 등록해놓으면 그림 생성할때마다 태그들 중에 하나를 무작위로 불러올 수 있다.
어떤 동작이나 머리색 등을 랜덤하게 넣어보고 싶을때 많이 사용한다.
다이나믹 프롬프트와 함께 사용 가능하다.
와일드카드 불러올 때 __이름__ 이렇게 작성을 해야한다.
이름 앞뒤로 언더바가 2개씩 들어간다.
파일 확장자: txt
저장 위치: stable-diffusion-webui\extensions\sd-dynamic-prompts\wildcards
예시
1900s 1910s 1920s 1930s 1940s 1950s 1960s 1970s 1980s 1990s 2000s 2010s 2020s
decade.txt와 같이 간단하게 파일을 만들 수 있고 chracter.txt와 같이 다이나믹 프롬프트와 함께 사용해서 복잡한 파일도 만들 수 있다.
decade.txt와 같이 와일드카드를 생성하면 프롬프트 작성할 때 __decade__라고 작성하여 불러올 수 있다.
1 girl, adult {__race__|} woman, {freckles,|} __eyecolor__ eyes, __hair-color__ __hair-female__, 1 girl, adult elven woman, {freckles,|} __eyecolor__ eyes, __hair-color__ __hair-female__, (1man, {muscular,|masculine,|} adult {__race__|} male:1.2), __eyecolor__ eyes, __hair-color__ __hair-male__,
chracter.txt와 같이 와일드카드를 생성하면 프롬프트 작성할 때 __character__ 라고 작성하여 불러올 수 있다.
이 때 1 girl, adult {__race__|} woman, {freckles,|} __eyecolor__ eyes, __hair-color__ __hair-female__, / 1 girl, adult elven woman, {freckles,|} __eyecolor__ eyes, __hair-color__ __hair-female__, / (1man, {muscular,|masculine,|} adult {__race__|} male:1.2), __eyecolor__ eyes, __hair-color__ __hair-male__, 중 하나를 불러오게된다.
Advantages & Disadvantages
Advantages
인공지능으로 아주 쉽게 이미지를 만들 수 있다는 것이 장점이다.
CheckPoint에 따라 실사체부터 2D까지 모든 그림체를 그릴 수 있다.
이미 훈련된 모델들을 다운로드 받아 사진 같은 이미지, 동화책 이미지, 캐리커쳐, 일러스트, 컬러링북, 로고 등을 만들 수 있다.
Disadvantages
LAION 데이터베이스에서 팔다리의 데이터 품질이 좋지 않아 사람 팔다리를 생성하는 문제가 있다.
모델은 데이터베이스에 대표 기능이 없기 때문에 사람의 팔다리와 얼굴을 이해하도록 충분히 훈련되지 않았으며 모델이 이러한 유형의 이미지를 생성하도록 유도하면 모델을 혼란스럽게 할 수 있다.
Stable Diffusion 설치
WebUI 원클릭 설치도 있던데 여기서는 WebUI를 AUTOMATIC1111(자동좌)의 stable-diffusion-webui 설치하는 방법에 대해 알아보자.
순서대로 잘 따라하면 수동 설치도 어렵지 않다.
#️⃣ https://github.com/AUTOMATIC1111/stable-diffusion-webui#installation-and-running 보면 Windows가 아닌 다른 운영체제에 설치하는 방법도 나와있다.
1. Code > Copy 클릭하여 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git 복사한다.
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
2. 예시와 같이 D:Ai와 같은 Stable Diffusion 설치할 폴더로 이동
3. 복사한 명령어 붙여넣기하여 터미널에 입력
4. 설치 완료
5. stable-diffusion-webui\webui-user.bat 실행하여 기본 설정 파일들 설치 및 실행 준비 완료.
6. 이후 부터는 stable-diffusion-webui\web-user.bat 파일로 실행한다.
PIP 업그레이드
1. 명령어 복사
D:\Ai\stable-diffusion-webui\venv\Scripts\python.exe -m pip install --upgrade pip
2. 터미널에 명령어 입력
3. 설치 완료