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/
다만, 딥러닝 모델을 활용하다보니 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
- 아티스트 이름에 따른 화풍의 차이 :
3) 하드웨어 사용
사용한 비디오카드가 NVIDIA RTX 2070 Super인데 (VRAM 16 GB)
기본 옵션에 가깝게 돌렸을때 한 장에 30초 정도 걸렸고 자원은 거의 100% 가까이 사용하는것으로 보인다.
4) 사용자 관점에서의 AI
수기로 관리하던 데이터를 엑셀로 관리하게 되고,
엑셀로 관리하던 데이터를 SQL과 DBMS로 관리하게 된 것 처럼,
언젠간 AI의 결과물을 활용하는게 누구에게나 필요한 필수 소양이 될 수 있겠다는 생각이 들었다.
그만큼 사용자 관점에서는 정말 쉬워졌다.
복잡한 모델의 원리를 전혀 알지 못해도 사용법만 익히면 잘 활용할 수 있게 됐다.
앞으로 지속적인 관심을 가지고 사용해봐야겠다.
'데이터 사이언스 DataScience > Deep Learning 딥러닝' 카테고리의 다른 글
GPT와 함께하는 주가 예측 - 1 (python, prophet) (2) | 2024.02.08 |
---|---|
[TensorFlow] 애플 실리콘 vs Nvidia GPU 성능 비교 (0) | 2023.12.12 |
[ChatGPT] 알고리즘 문제 풀어달라고 했을때 반응은? (knapsack problem in Java) (0) | 2023.01.31 |
[문과생의 TensorFlow] 02. 텐서(tensor)가 뭘까? (0) | 2020.08.10 |
[문과생의 TensorFlow] 01. 설치부터 첫 실행까지 (0) | 2020.07.26 |