#1 Stable Diffusion이란?
많이들 흔히 알고 계시는 Stable diffusion이란 이미지 생성 AI모델이 있죠.? 위에건 제가
이러한 AI모델의 동작방식을 알고 진행하는것이 좋을것 같아 모델의 동작과정을 한번 설명해보려 합니다.
모델의 목표!
영어의 번역에서도 알수 있다시피 안정적인 "확산"에 초점을 맞추어 진행하는 모델입니다.
기본적으로 AI모델은 데이터를 통해서 데이터의 "패턴"을 파악하고 "보지못한" 데이터에 대해서 예측을 하는 것이 AI라고 할수 있죠
마찬가지로! Stable Diffusion (줄여서 SD라고 하겠습니다) 은 어떻게 학습이 되었는가?를 먼저 확인해보도록 하죠
SD는
대량의 [ 이미지 데이터 + 이미지에 관련된 Text => 원본 이미지 데이터 ] 로 학습이 되었습니다. 즉 원본이미지와 그 이미지에 대한 Text(설명)이 들어가고 이후 모델이 이미지를 출력하는데 이 출력이미지와 원본이미지의 차이를 줄이는 방식으로 학습을 진행하는거죠! 이것은 기본적인 멀티모달 방식의 AI의 훈련방식이지만 다른 차이점이 하나 있습니다.
그것은 바로바로 "노이즈의 추가"입니다.
노이즈를 추가?!
노이즈를 추가한다는게 무슨말일까 싶으신 분들도 있으니 일단 AutoEncoder의 개념을 사용하는데 간단히 설명하자면
이미지를 압축했다가 다시 원본이미지로 되돌리는과정을 학습하는 AI모델이라고 생각하시면 됩니다. 이미지를 압축하게 되면 이미지의 정보를 잃어버릴테고 AI모델이 그런 부족한 정보들로 기존의 이미지로 되돌리는 방법을 깨닫는 과정입죠! ㅎㄷ 신기하지 않나요? 어쨌든 SD에서의 노이즈의 추가란? 그림으로 설명드리겠습니다.
- 원본 이미지가 존재
- 이미지에 랜덤으로 노이즈를 추가
- 점점더 노이즈를 추가할수록 누구인지 모르겠움
- 점점 노이즈의 확산됨에 따라서 후에는 알수없게 되는 지경까지 이르렀지용?
이렇게 알수없게 된 지경에 이르렀는데 원본이미지로 되돌릴수 있을까요??
네! 각각의 이미지가 가진 픽셀값들중 가우시안이나 정규분포의 값을 뽑아내는식으로 샘플링을 통해서 각이미지에 해당하는 "노이즈를 학습"합니다!!!
그리고 이러한 노이즈로부터 새로운 이미지, 즉 보지못한 이미지를 생성하기 위해 "점진적 노이즈 제거" 방식을 사용합니다.
그럼 이렇게 노이즈에 대한 학습을 진행한 신경망은 어디에 쓰이는가?
위 그림처럼 알수없는 노이즈 이미지가 있다고 해봅시다. 그렇다면 이것을 신경망에 넣어서 어떻게 원본이미지로 되돌릴수 있을까요?? 여기서 SD는 이미지에 따른 노이즈의 형태(정규분포를 따름)을 학습했고 따라서 노이즈를 보고 예측을 진행할수 있어요!! 그림으로 보시죠
이러한 방식을 통해서 신경망이 노이즈를 예측하고 노이즈1-노이즈2 = 노이즈 3
이런식으로 노이즈를 "순차적으로 제거"해 나가는 방향으로 이미지를 예측하게 되는겁니다!
더 설명하고 싶긴 한데 사실 오늘의 주제는 SD설치하고 그후에 직접 사용하는 방법을 알려드리기 위해서 ! 간단한 설명은 여기까지 하고 더 깊은 내용을 보고 싶거나 코드를 보고 싶으신 분은 https://crystalline-paper-4ea.notion.site/How-Diffusion-Model-Work-c10c1d1cf79a4f979bdf2697e2366d69?pvs=4
How Diffusion Model Work? | Notion
Diffusion Model Goal?
crystalline-paper-4ea.notion.site
제 노션으로 오셔서 더 자세한 내용을 확인하실수 있습니다~~!!
#2. Stable Diffusion 의 설치 방법!
사실 이제 AI에 익숙하거나 다룰줄 아시는 분은 Jupyter나 colab등으로 돌리시긴 하는데 기업 현직자분이나 오히려 실제로 많이 사용하시는 분들은 webUI를 많이 사용하시더라고요? 저도 맨처음엔 jupyter로 계속 다뤄봤는데 터미널이 계속 꺼지기도 하고 해서 처음 사용하시는 분들도 사용하기 편한 webUI로 설치방법을 진행해보려고 합니다!
- anaconda 설치
Distribution | Anaconda
Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.
www.anaconda.com
2. 다음과 같은 명령어를 실행해주세요 ! 콘다 가상환경을 만드는 일입니다!
conda create -n diffusion python=3.10.6
conda activate diffusion
conda install git pip
3. Web-ui 의 git 을 clone해주세요 !
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
4-1. Window라면 git clone한 폴더안에 webui-user.bat파일을 다음과 같이 설정해주세요
cd {git clone한 폴더이름}
webui-user.bat
4-2. Mac/ Linux 라면
./webui.sh --xformers
그러면 이제 설치가 완료됩니다!
짜란! 이런 창이 뜨고 이제 SD를 실행할 준비가 완료되었습니다!
이제 SD를 사용하는 방법중 Prompt의 활용과 다양한 옵션들에 대해서 설명하는 시간은 다음시간에 가져보도로 하겠습니다! 그렇게 되면 이처럼 AI를 활용하는 방법을 알아보죵
이건 제가 이미지를 조절하느라 prompt가 별로없는겁니다..
absurdres, 1girl, medium breast, star eye, blush, (realistic:1.5), (blue eyes:0.7), (masterpiece, Extremely detailed CG unity 8k wallpaper, best quality, highres:1.2), (ultra_detailed, UHD:1.2), (pixiv:1.3), perfect illumination, distinct, (1girl:1.4), (bishoujo:1.2), looking at viewer, unreal engine, sidelighting, perfect face, detailed face, bangs, perfect body, beautiful eyes, pretty face, (bright skin:1.4), idol, (abs), ulzzang-6500-v1.1, (navel), ruins, dark place, night, dark aura, fire, burning, <lora:makimaChainsawMan_v10:0.5>, (blood on face:1.4), (evil smile:1.3), (black wings:1.5), close-up, (bodysuit:1.5)
원래는 이것처럼 알수없는 prompt가 많아요!
그럼 다음시간에 !
'AI' 카테고리의 다른 글
Stable Diffusion + Controlnet 을 통한 Logo 이미지 생성 (1) | 2024.04.19 |
---|---|
AutoEncoder란? (0) | 2024.01.16 |
Transformer Attention이란? (0) | 2023.12.14 |