본문 바로가기

데이터 사이언스 DataScience/Deep Learning 딥러닝

[Stable Diffusion] AI가 그린 그림. 내 컴퓨터에서 돌려보기

1. AI가 그린 그림

9월부터 인터넷 상에 "AI가 그린 그림"이라는 키워드가 떠올랐다.

출처 : 구글 트렌드

게시글들을 보면 사람이 그린게 아닌가 싶을 정도로

이전에 비해 훨씬 정교하고 아름다운 작품들이 많이 나온다.

 

개인적으로 느낀 특징은
1) 색채와 빛의 표현(반사, 굴절)이 이전보다 자연스러워졌다.

2) 특정 작가의 화풍을 잘 구현한다. (반 고흐 스타일의 그림, 디즈니 스타일의 그림 등)

3) 디테일은 아직 조금 부족해보인다. (사람의 손가락이 8개라든가, 젓가락질 등 특정 동작이 잘 구현 안 된다든가)

 

 

2. Stable Diffusion

아무튼 이런 키워드가 떠오른 가장 큰 이유를 게시글 몇개를 찾아보며 거슬러보니 

Stable Diffusion에서 시작된 것 같다. 

https://github.com/CompVis/stable-diffusion

 

2022년 8월 22일에 공개된 이 딥러닝 모델은 텍스트를 이미지로 만들어 주는 Text-to-image model이다.

8억이 넘는 비용(60만$)을 들여 학습시켰음에도 오픈소스로 공개됐다.

 

무료로 양질의 모델이 공개되자 여러 업체들이 이를 활용했고

대표적으로 NovelAI라는 업체에서 잘 활용한 것 같다. 

단순 가져다 쓴건 아니고 일부 레이어의 변경 등을 통해 자체 최적화를 한 것 같다.

https://blog.novelai.net/novelai-improvements-on-stable-diffusion-e10d38db82ac

 

아무튼 이 강력한 성능의 Text-to-image model은 애니메이션 캐릭터를 만나며 폭발적으로 재생산되고 있고, 

일부 커뮤니티에는 AI창작 그림 게시판이 따로 만들어질 정도로 큰 관심을 끌고 있다.

 

 

3. 내 컴퓨터에서 Stable Diffusion 돌리기

아무튼 얼마나 잘그릴까? 궁금해서 오픈소스인 Stable Diffusion을 컴퓨터에 설치해 돌려보기로 했다.

Stable Diffusion을 웹 ui로 구현해놓은 오픈소스가 있어 이를 활용했다.

https://github.com/AUTOMATIC1111/stable-diffusion-webui/

 

GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI

Stable Diffusion web UI. Contribute to AUTOMATIC1111/stable-diffusion-webui development by creating an account on GitHub.

github.com

 

다만, 딥러닝 모델을 활용하다보니 GPU를 통한 연산이 필요해

노트북보다는 그래픽카드가 장착된 데스크탑으로 하는게 좋아보인다. 

 

* 최소사양 

- 4GB 이상의 VRAM을 가진 비디오카드

  (AMD보다 NVIDIA 그래픽카드가 최적화 된 것으로 보인다)

- 명시되어있지는 않지만, 15 GB 이상의 스토리지 공간이 필요해보인다

 

AUTOMATIC1111 github에 어떻게 설치 / 실행하는지 잘 작성되어있고 그대로 따라하면 된다.

( Automatic Installation on Windows 부분 )

 

요약하자면 

1. Python 3.10.6 이상 버전 설치

2. git 설치 ( → git clone을 위한거라 프로젝트를 다운로드하면 필수는 아니라고 생각된다 )

3. git clone을 통해 프로젝트 복사

4. model 다운로드 

5. webui-user.bat 실행 → Pytorch 등 각종 프로그램 자동 설치 후 웹 어플리케이션 실행

 

* webui-user.bat 실행시 로그

더보기

Creating venv in directory venv using python "{파이썬경로}\python.exe"
venv "{설치경로}\stable-diffusion-webui\venv\Scripts\Python.exe"
Python 3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:50:30) [MSC v.1933 64 bit (AMD64)]
Commit hash: 24ce67a13bd74202d298cd8e2a306d90214980d8
Installing torch and torchvision
Installing gfpgan
Installing clip
Cloning Stable Diffusion into repositories\stable-diffusion...
Cloning Taming Transformers into repositories\taming-transformers...
Cloning K-diffusion into repositories\k-diffusion...
Cloning CodeFormer into repositories\CodeFormer...
Cloning BLIP into repositories\BLIP...
Installing requirements for CodeFormer
Installing requirements for Web UI
Launching Web UI with arguments:
LatentDiffusion: Running in eps-prediction mode
DiffusionWrapper has 859.52 M params.
making attention of type 'vanilla' with 512 in_channels
Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
making attention of type 'vanilla' with 512 in_channels
Downloading: 100%|███████████████████████████████████████████████████████████████████| 939k/939k [00:01<00:00, 834kB/s]
Downloading: 100%|███████████████████████████████████████████████████████████████████| 512k/512k [00:01<00:00, 457kB/s]
Downloading: 100%|█████████████████████████████████████████████████████████████████████| 389/389 [00:00<00:00, 389kB/s]
Downloading: 100%|█████████████████████████████████████████████████████████████████████| 905/905 [00:00<00:00, 452kB/s]
Downloading: 100%|████████████████████████████████████████████████████████████████| 4.41k/4.41k [00:00<00:00, 2.26MB/s]
Downloading: 100%|████████████████████████████████████████████████████████████████| 1.59G/1.59G [00:54<00:00, 31.5MB/s]
Loading weights [7460a6fa] from C:\Github\stable-diffusion-webui\models\Stable-diffusion\sd-v1-4.ckpt
Global Step: 470000
Applying cross attention optimization (Doggettx).
Model loaded.
Loaded a total of 0 textual inversion embeddings.
Embeddings:
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

 

bat 파일 로그대로 http://127.0.0.1:7860 으로 접속하면 사용해볼 수 있다.

 

4. 사용후기 

1) 결과물

 

* beautiful lake, photograph

 

 

* beautiful lake, sunset, photograph

 

* castle, landscape, disney, van gogh

 

- 요즘 취미가 사진찍기인데 AI가 더 잘찍는 것 같다.

- 특정 artist의 화풍을 흉내내는건 정말 신기하고 아름답다.

 

 

2) 프롬프트의 중요성

Text-to-image model 이다 보니 텍스트를 어떻게 짜는지가 중요하고 여러 방면으로 연구 중인 것 같다.

 

- 전반적인 text(prompt) 작성에 참고가 될만한 글 : 

https://www.howtogeek.com/833169/how-to-write-an-awesome-stable-diffusion-prompt

 

How to Write an Awesome Stable Diffusion Prompt

Stable Diffusion, a popular AI art generator, requires text prompts to make an image. Sometimes it does an amazing job and generates exactly what you want with a vague prompt. Other times, you get suboptimal outputs. Here are some tips and tricks to get id

www.howtogeek.com

 

- 아티스트 이름에 따른 화풍의 차이 : 

https://docs.google.com/spreadsheets/d/1SRqJ7F_6yHVSOeCi3U82aA448TqEGrUlRrLLZ51abLg/edit#gid=2005893444

 

SD1.5 Artist Study

Intro Stable Diffusion Artist Study This test will be done on 4 basic prompt with artists modifiers Artists Count,Recognized by SD 522,497 Check the pages below for dedicated prompt,Want to Download a Specific tab for offline usage? <a href="https://mashon

docs.google.com

 

 

3) 하드웨어 사용

사용한 비디오카드가 NVIDIA RTX 2070 Super인데 (VRAM 16 GB) 

기본 옵션에 가깝게 돌렸을때 한 장에 30초 정도 걸렸고 자원은 거의 100% 가까이 사용하는것으로 보인다.

 

 

4) 사용자 관점에서의 AI

수기로 관리하던 데이터를 엑셀로 관리하게 되고, 

엑셀로 관리하던 데이터를 SQL과 DBMS로 관리하게 된 것 처럼,  

언젠간 AI의 결과물을 활용하는게 누구에게나 필요한 필수 소양이 될 수 있겠다는 생각이 들었다.

 

그만큼 사용자 관점에서는 정말 쉬워졌다.

복잡한 모델의 원리를 전혀 알지 못해도 사용법만 익히면 잘 활용할 수 있게 됐다.

앞으로 지속적인 관심을 가지고 사용해봐야겠다.

 

반응형