근래 메타버스의 유행이 지나가고 AI가 다시 유행하는 듯 하다. 이전에 인공지능 열풍이 불 때는 개발자에게나 흥미로운 것에 불과했는데 요즘은 많은 사람들의 입에 오른다. Chat GPT라는 도구를 통해 일반 사용자가 실제 결과를 도출 할 수 있게 되었기 때문인 것으로 보인다.
오늘 인터넷을 둘러보다가 인공지능으로 그림을 그리는 것을 보았다. 이전에 지인한테 들었을 때는 흥미롭긴 했지만 직접 해보는 것으론 행동이 이어지지 않았는데, 실제로 그것을 보니 해보고 싶다는 생각이 마구 들었다. 컴퓨터가 만들어 냈다는 것이 믿을 수 없을 수준의 작품이었기 때문이다.
나도 내 머릿속에 있는 것을 눈 앞에 꺼내볼 수 있을까?
설치하기
여기서는 Stable Diffusion WebUI라는 것을 이용한다. 프로젝트 소개는 Chat GPT에게 물어보았다.
이 프로젝트는 안정적인 디퓨전 모델(확률적 생성 모델링 방법 중 하나로, 이미지, 음성 등의 데이터 분포를 모델링하는 머신러닝 기술)을 사용하여 이미지 생성, 보간 및 조작을 수행하는 데 사용됩니다. 웹 UI를 통해 사용자는 이미지를 업로드하고 안정적인 디퓨전 모델을 사용하여 이미지를 변환하거나 생성할 수 있습니다.
이 글에서는 Windows에 설치하여 Local에서 이미지를 만들거나 혹은 Colab과 같은 클라우드 컴퓨팅을 활용하여 이미지를 만드는 방법을 소개한다. 본인의 컴퓨터의 그래픽 카드가 그다지 좋지 않다면 Colab을 사용하는 것을 권장한다. (VRAM 6GB 기준 FHD 이미지 생성도 불가하다.)
Windows 11
우선 다음과 같은 도구들이 필요하다.
- Python 3.10.6 (64 비트 인스톨러)
- 인스톨러 실행시 첫 화면에서
Add Python 3.10 to PATH
반드시 활성화
- 인스톨러 실행시 첫 화면에서
- Git (64 비트 인스톨러)
위 두 도구 설치가 끝나면 파일을 설치할 폴더로 이동한 다음 마우스 왼쪽 클릭 후 Open in Terminal
을 실행하자.
Windows 10 이하를 사용하거나 해당 메뉴가 보이지 않는다면 윈도우 키를 누르고 CMD
를 입력하여 실행시킨 후 아래 명령어를 입력하자.
cd C:
이후 아래 명령어를 순차적으로 입력해주면 끝난다.
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
./webui.bat
모든 설치가 끝나고 접속할 주소가 뜨면 해당 주소로 접속하자. 주소는 기본적으 http://localhost:7860 으로 설정되어 있다.
Colab
Update: 구글에서 코랩 무료 사용자에 대한 Stable Diffusion WebUI에 대한 규정이 변경되었으니 사용을 권장하지 않습니다.
위 링크에 접속해서 순차적으로 아래 이미지에 보이는 실행 버튼을 눌러주면 끝난다.
이후 마지막 명령에서 접속할 경로가 뜨면 그곳에 들어가면 된다.
아래와 같은 화면이 보인다면 모든 준비가 끝났다.
사용하기
이미지 만들기
아직 갈길이 많이 남았지만, 흥미를 계속 이어가기 위해서 일단 이미지를 만들어보자.
위 입력란에 Chat GPT에게 질문하듯이 우리가 원하는 그림에 대한 구체적인 명령을 작성하면 그림이 그려진다. 어떤 그림을 그려보면 좋을까? 문득 지금 듣고 있던 노래의 분위기에 맞게 떠오르는 형상을 명령어로 입력해 보았다.
Amusement park, girl with back view, wide brim hat, white dress, pink cotton candy, visible lake
완성된 그림은 굉장히 추상적이었는데, 사실 입력한 명령어가 디테일 없이 매우 추상적이었기 때문에 그럴 수 있다고 생각한다. 핑크색 솜사탕은 손에 들고 있었으면 했었는데, 구체적인 명령이 없었더니 여기저기 떠다니게 만들어 졌다.
모델 고르기
- HuggingFace #
위 사이트에 접속해서 이미지를 그려줄 모델을 바꿔보자. 이 모델에 따라서 같은 명령을 입력해도 굉장한 차이를 보여준다. 실사 느낌으로 만들수도, 일러스트 느낌으로 만들수도 있다. 두 모델을 섞으면 만화인 듯 실사인 듯 오묘한 그림을 만들수도 있다.
인기있는 Top 3 모델
- runwayml/stable-diffusion-v1-5 # : 기본 모델로 실사같은 느낌을 준다.
- WarriorMama777/OrangeMixs # : 인기있는 모델로 일러스트 이미지 같은 느낌을 준다.
- prompthero/openjourney # : 이 모델 역시 실사같은 느낌을 준다.
모델 추가하기
모델을 설명하는 페이지 상단에 Files and versions
탭으로 이동한다.
파일중에 ckpt
, safetensors
라는 확장자를 가진 파일의 아래 화살표 아이콘을 눌러서 다운로드 할 수 있다.
다운로드 한 파일은 아래 경로에 넣어준다.
- Local :
(stable-diffusion-webui가 설치된 경로)/models/Stable-diffusion
- Colab :
Google Drive
->sd/stable-diffusion-webui/models/Stable-diffusion
웹 GUI로 접속하여 위와같은 최상단에 배치된 셀렉트 박스의 파란색 새로고침 버튼을 눌러준 후 셀렉트 박스를 눌러서 다운로드한 모델을 선택해 준다.
각 모델로 만들어 본 이미지
runwayml/stable-diffusion-v1-5
prompthero/openjourney
WarriorMama777/OrangeMixs
모델 합치기
웹 GUI 상단 탭에서 Checkpoint merger
로 이동한 후
위 이미지와 같이 Primary, Secondary 모델 2개를 선택한다. 필자는 가중치를 0.5를 주었다.
이후 모델 선택하는 곳에서 새로고침 후 머지한 모델을 확인할 수 있다.
머지한 모델로 만들어 본 이미지
너무 사진 같지도 너무 그림 같지도 않은, 적당히 현실주의 그림같은 느낌이라 좋은 것 같다. 비록 놀이동산도 안보이고... 솜사탕은 옷 장식이 되어버리고 말았지만. 이런 부분은 점차 원하는대로 만들 수 있을 것이라 예상된다. 만약 컴퓨터가 전혀 인지하지 못한다면 직접 학습 시켜줄 수 있다.
프롬프트 개선하기
- THE Ultimate Prompting GUIDE · PromptHero @anntartica #
내 상상과 가장 유사한 그림을 뽑아내기 위해서 프롬프트를 개선하고자 위 글을 참고하였다. 결국 중요한 것은 그림의 스타일, 인물과 풍경에 대한 구체적인 묘사가 필요하다. 아래는 요약한 부분인데 결론은 영어 공부를 열심히 하자..!
- very 같은 표현보다는 구체적으로 표현할 수 있는 용어가 좋음 (
very high
->steep
)- Lose The Very 여기서 대체어를 찾을 수 있음
- 떠올린 형상의 구체적인 유형 정하기
photograph
,drawing
,sketch
,3D render
- 묘사할 때는 형용사를 쓰는게 좋음
- 스타일(조명)과 구성(이미지 구도)에 대한 정보를 넣는게 좋음
- 순서가 중요함, 앞에 오는게 우선순위가 높음
아래는 알아두면 유용한 용어를 정리한 것이다.
조명
accent lighting, ambient lighting, backlight, blacklight, blinding light, candlelight, concert lighting, crepuscular rays, direct sunlight, dusk, Edison bulb, electric arc, fire, fluorescent, glowing, glowing radioactively, glow-stick, lava glow, moonlight, natural lighting, neon lamp, nightclub lighting, nuclear waste glow, quantum dot display, spotlight, strobe, sunlight, ultraviolet, dramatic lighting, dark lighting, soft lighting, gloomy
품질
highly detailed, grainy, realistic, unreal engine, octane render, bokeh, vray, houdini render, quixel megascans, depth of field (or dof), arnold render, 8k uhd, raytracing, cgi, lumen reflections, cgsociety, ultra realistic, volumetric fog, overglaze, analog photo, polaroid, 100mm, film photography, dslr, cinema4d, studio quality
그림 기법
Digital art, digital painting, color page, featured on pixiv (for anime/manga), trending on artstation, precise line-art, tarot card, character design, concept art, symmetry, golden ratio, evocative, award winning, shiny, smooth, surreal, divine, celestial, elegant, oil painting, soft, fascinating, fine art
카메라 구도
ultra wide-angle, wide-angle, aerial view, massive scale, street level view, landscape, panoramic, bokeh, fisheye, dutch angle, low angle, extreme long-shot, long shot, close-up, extreme close-up, highly detailed, depth of field (or dof), 4k, 8k uhd, ultra realistic, studio quality, octane render,
스타일과 컴포지션
Surrealism, trending on artstation, matte, elegant, illustration, digital paint, epic composition, beautiful, the most beautiful image ever seen,
색상에 대한 용어
Triadic colour scheme, washed colour
개선한 프롬프트로 만들어 본 이미지
prompt
drawing, backlight, pink, amusement park, turned around 1 girl, wide brim white hat, white dress, lake, blue sky, cloud
nagative prompt
face
오... 스타일과 조명 그리고 약간의 순서와 단어를 바꿨을 뿐인데, 굉장히 맘에 드는 이미지가 나왔다. 배경화면 만들고 놀기 딱인 듯 🤣
최근에 프롬프트 잘 관리하고 더 효과적으로 이미지를 생성할 수 있도록 도구를 만들어 봤습니다. 필요하신 분들은 이용해 보셔도 좋을 듯 합니다. NodeJS만 설치하면 누구나 쉽게 로컬에 설치할 수 있습니다.
Ghost