디지털 아트와 인공지능이 결합된 창작의 세계가 빠르게 확산되고 있습니다. 이제 우리는 복잡한 그래픽 소프트웨어 없이도, 단순한 텍스트만으로 아름답고 창의적인 이미지를 손쉽게 생성할 수 있는 시대에 살고 있습니다. 이 모든 것이 가능하게 된 것은 바로 스테이블 디퓨전(Stable Diffusion) 같은 AI 모델 덕분입니다. 이번 포스팅에서는 누구나 쉽게 따라할 수 있는 스테이블 디퓨전 프롬프트 작성법을 소개합니다.
핵심 내용
- 프롬프트란
- 프롬프트 기본 작성법
- 키워드로 표현하기
- 중요 키워드는 가장 먼저 작성
- 괄호로 강조하기
- AND 연산자 사용
- 숫자로 가중치 부여하기
- 프롬프트 참고하기
스테이블 디퓨전(Stable Diffusion)은 텍스트 프롬프트를 기반으로 이미지를 생성하는 인공지능 모델입니다. 프롬프트는 AI에게 원하는 결과를 얻기 위해 제공하는 명령이나 지시 사항을 담은 텍스트를 말합니다. 스테이블 디퓨전과 같은 이미지 생성 모델에서 프롬프트는 사용자가 원하는 이미지를 설명하는 텍스트로, 이 텍스트를 바탕으로 AI가 이미지를 생성합니다. 프롬프트 작성 방식에 따라 생성되는 이미지의 스타일과 내용이 크게 달라질 수 있습니다.
스테이블 디퓨전에서 프롬프트를 작성할 때 기본적으로 고려해야 할 요소는 순서, 괄호, 조합어입니다. 프롬프트에서 앞에 위치한 단어가 뒤에 있는 단어보다 더 중요한 의미를 가집니다. 하지만, 괄호를 사용하면 뒤에 위치한 단어라도 강조할 수 있으며, 괄호가 많을수록 그 단어의 중요성이 더 높아집니다.
또한, 조합어는 "and"를 사용해 단어들을 결합하는 방식으로, 단순히 나열하는 것보다 효과적입니다. 예를 들어, "소녀와 안경"이라는 표현은 "girl and glasses"처럼 연결하는 것이 더 명확한 이미지를 생성할 수 있습니다. 이러한 기본 원칙을 잘 활용하면, 효과적인 프롬프트 작성이 가능합니다.
2. 프롬프트 기본 작성법
1) 키워드로 표현하기
프롬프트를 작성할 때는 문장이 아닌 핵심 키워드를 사용하는 것이 좋습니다. 간단하고 명확한 키워드는 AI가 이해하기 쉬워 원하는 결과를 얻는 데 효과적입니다. 예를 들어, "벚꽃이 핀 나무를 지나는 소녀"라는 문장보다는 "벚꽃나무, 소녀, 지나치다"처럼 키워드를 쉼표로 연결해 표현하는 것이 더 효과적입니다. 물론, 실제 프롬프트 작성 시에는 영어로 입력해야 합니다.
키워드 예시
cherry blossom tree, girl, passing by
생성된 이미지에는 큰 차이가 없어 보일 수 있지만, 문장으로 작성한 프롬프트(좌측)는 소녀가 나무를 바라보는 듯한 이미지를 생성한 것처럼 보입니다. 반면, 키워드로 작성한 프롬프트(우측)는 소녀가 나무를 확실하게 지나치는 이미지를 생성합니다. 이처럼 키워드로 프롬프트를 작성하면 AI가 유저의 의도를 조금 더 명확하게 파악할 수 있게 됩니다.
2) 중요 키워드는 가장 먼저 작성
프롬프트에서 중요한 키워드는 문장의 앞부분에 배치합니다. AI는 앞에 위치한 단어를 더 중요한 요소로 인식하고, 이를 중심으로 이미지를 생성합니다. 예를 들어, "벚꽃나무, 소녀, 지나치다"라고 프롬프트를 작성하면, AI는 거리에 초점을 맞추고 소녀는 아예 나오지 않거나 비중이 적게 나올 수 있습니다. 따라서 소녀가 중심이 되어야 한다면, "소녀, 벚꽃나무, 지나치다"처럼 소녀를 맨 앞에 두어야 합니다.
키워드 예시
girl, cherry blossom tree, passing by
프롬프트의 순서에 따라 다른 느낌의 이미지가 생성됩니다. 왼쪽 이미지의 경우, 프롬프트에서 가장 앞에 "girl"을 넣어 생성한 것입니다. 이 경우 소녀의 이미지가 좀 더 크게 그려졌는데, 이는 AI가 "girl"에 더 많은 가중치를 부여했기 때문으로 보입니다. 오른쪽 이미지는 프롬프트에서 "cherry blossom tree"를 가장 앞에 넣어 생성한 것으로, 소녀의 이미지 크기가 줄어들고 벚꽃 나무의 디테일이 더 강조되었습니다. 이로 보아, 프롬프트에서 가장 앞에 입력한 키워드인 "벚꽃 나무"에 더 많은 가중치가 부여된 것으로 판단할 수 있습니다.
3) 괄호로 강조하기
특정 단어나 구절을 강조하고 싶을 때는 괄호를 사용합니다. 괄호 안에 있는 내용은 괄호가 없는 내용보다 더 중요하게 간주되며, 괄호의 개수가 많을수록 그 중요성도 커집니다. 예를 들어, "소녀, 지나치다, 벚꽃나무, ((아름다움)), (거리)"이라고 프롬프트를 작성하면, AI는 "아름다움"을 가장 중요하게 고려하고, 그다음으로 "얼굴"을 중시하며, 이후에 "소녀," "지나치다," "벚꽃나무" 순으로 비중을 두어 이미지를 생성합니다. 괄호는 많을수록 중요성이 높아지며, 일반적으로 2개에서 많아도 3개까지 사용합니다. 또한, 프롬프트가 너무 길어졌거나 앞에 중요하지 않은 키워드가 배치된 경우, 해당 키워드를 대괄호로 감싸면 AI는 그 비중을 낮게 인식합니다. 즉, 중요한 키워드는 괄호로 강조하고, 비중이 낮은 키워드는 대괄호로 감싸거나 프롬프트의 뒤쪽에 배치하는 것이 적절합니다. 단, 대괄호는 다른 기능으로도 활용되기 때문에, 가급적 비중이 낮은 키워드를 표현할 때는 프롬프트에서 뒤로 배치하는 것이 좋습니다.
키워드 예시
girl, passing by, cherry blossom tree, beauty
왼쪽 이미지 프롬프트 : girl, passing by, cherry blossom tree, beauty
괄호없이 프롬프트를 입력하여 생성한 이미지입니다.
가운데 이미지 프롬프트 : ((girl)), passing by, cherry blossom tree, (beauty)
"girl"에 괄호 두 개, "beauty"에 괄호 하나를 사용하여 강조하여 생성한 이미지입니다. 벚꽃 나무의 모습은 굉장히 퀄리티가 떨어지는 반면, 소녀 모습은 굉장히 자연스럽게 나타나고 있습니다.
오른쪽 이미지 프롬프트 : girl, passing by, ((cherry blossom tree)), (beauty)
"cherry blossom tree"에 괄호 두 개, "beauty"에 괄호 하나를 사용하여 강조하여 생성한 이미지입니다. 벚꽃 나무의 모습이 굉장히 자연스럽게 그려졌습니다. 이를 보아 괄호를 통해 벚꽃 나무에 가중치가 가장 올라간 것으로 보입니다.
4) AND 연산자 사용
두 개 이상의 요소를 결합할 때는 "and" 연산자를 사용합니다. 예를 들어, "girl and glasses"처럼 조합어를 사용하면 각각의 요소가 명확하게 반영된 이미지를 얻을 수 있습니다. "girl, glasses"라는 프롬프트보다 "girl AND glasses"라는 프롬프트가 더 효과적입니다. 이 경우, 안경을 쓴 소녀 이미지가 나올 가능성이 더 높아집니다. "AND"로 키워드를 결합한다고 해서 100% 그러한 이미지를 생성한다는 보장은 없지만, 가능성을 높이는 방법입니다.
참고로, 연산자 활용 중에는 "[소년 | 소녀]"처럼 대괄호 안에 파이프 기호(|)로 키워드를 연결하는 방식이 있습니다. 일반적으로 코딩에서 "또는"을 의미하는 이 기호로 키워드를 연결하면, 앞에 위치한 "소년"이라는 키워드를 이미지로 표현하면서도 뒤에 위치한 "소녀"라는 키워드도 일부 반영됩니다. 즉, 소년과 소녀의 특징을 모두 가진 인물을 염두에 둔 프롬프트 작성법으로, 이러한 이미지를 생성할 가능성을 높이는 것이지 100% 보장하는 것은 아닙니다.
키워드 예시
girl, glasses, windows, face,
좌측 이미지는 예시 키워드를 그대로 사용하여 생성한 결과입니다. 텍스트의 모든 내용을 포함하고 있지만, 생성된 인물이 사람인지조차 불분명하게 나타났습니다. 반면, 우측 이미지는 "and" 키워드를 사용하여 생성했으며, 의도에 맞게 안경을 쓴 소녀 이미지를 정확히 표현했습니다.
5) 숫자로 가중치 부여하기
특정 요소에 더 큰 비중을 두고 싶다면, 숫자를 사용해 가중치를 부여할 수 있습니다. 예를 들어 "girl:1.2, glasses:0.8"과 같이 작성하면, "girl" 요소가 "glasses" 요소보다 더 중요하게 반영됩니다. 또 "(아름다움:1.5), (소녀:0.7), (치마:0.3)"와 같이 프롬프트를 작성하면, 기본값인 1을 기준으로 "아름다움"에 1.5배의 가중치를 부여하는 것입니다. 이 경우, 소녀든 여성이든 아름다움을 강조하며, 치마를 입었으면 좋겠지만 반드시 치마일 필요는 없다는 의미입니다. 이러한 가중치는 주로 미세한 부분을 강조할 때 사용됩니다. 예를 들어, 사람 얼굴에서 눈이나 입술 같은 특정 부위를 도드라지게 표현하고 싶을 때 "(sparkling eyes:1.3), (sparkling lips:1.3)"처럼 가중치를 부여할 수 있습니다.
키워드 예시
(beauty: 1.5), (girl:1.2), (glasses:0.8), (skirt: 0.3), (sparkling eyes:1.3), (sparkling lips:1.3)
왼쪽 이미지의 프롬프트: (beauty:1.5), (girl:1.2), (glasses:0.8), (skirt:0.3), (sparkling eyes:1.3), (sparkling lips:1.3)
이 프롬프트에서 "skirt"의 가중치를 0.3으로 설정했습니다. 이로 인해 생성된 이미지에서는 스커트가 생략되었습니다. 다른 프롬프트 요소들은 1 이상의 가중치를 부여했기 때문에 모두 이미지에 제대로 반영되었습니다.
오른쪽 이미지의 프롬프트: (beauty:1.5), (girl:1.2), (glasses:0.8), (skirt:1.3), (sparkling eyes:1.3), (sparkling lips:1.3)
이 프롬프트에서는 "skirt"의 가중치를 1.3으로 설정했습니다. 모든 요소에 1 이상의 가중치를 부여했기 때문에, 모든 프롬프트 내용이 충실히 반영된 이미지가 생성되었습니다.
3. 프롬프트 참고하기
유명 예술가 파블로 피카소는 "좋은 예술가는 모방하고, 위대한 예술가는 훔친다"("Good artists copy, great artists steal")라는 말을 했다고 알려져 있습니다. 이처럼 스테이블 디퓨전에서 프롬프트를 생성할 때도, 남들이 이미 생성한 이미지를 참고하는 것이 큰 도움이 될 수 있습니다. 다른 사용자의 프롬프트를 분석하고, 그들의 성공적인 요소를 차용하여 자신만의 창의적인 방식으로 재구성하면, 더욱 원하는 결과에 가까운 이미지를 생성할 수 있습니다. 창작의 과정에서 이러한 참고와 응용은 새로운 작품을 만들어내는 중요한 방법 중 하나입니다.
- CIVITAI : https://civitai.com/
CivitAI는 인공지능(AI) 기반 이미지 생성 모델과 관련된 다양한 리소스와 툴을 제공하는 온라인 플랫폼입니다. 이 플랫폼은 특히 AI 아트 생성 모델인 스테이블 디퓨전(Stable Diffusion)과 같은 모델을 사용하여, 사용자가 만든 모델, 프롬프트, 또는 훈련된 체크포인트를 공유하고, 커뮤니티 내에서 교류할 수 있는 공간을 제공합니다.
CivitAI에서 마음에 드는 이미지를 클릭하면, 오른쪽에서 해당 이미지를 생성할 때 사용한 프롬프트를 확인할 수 있습니다. 또한, 사용된 모델 정보도 함께 확인할 수 있어, 프롬프트를 작성할 때 참고하기에 유용합니다.
스테이블 디퓨전은 누구나 창의적인 이미지 생성의 즐거움을 느낄 수 있도록 도와주는 강력한 도구입니다. 이 포스팅에서 소개한 프롬프트 작성법을 통해, 이제 여러분도 전문가처럼 AI를 활용해 자신만의 독특한 이미지를 만들 수 있습니다. 조금의 연습과 실험으로, 당신의 상상력이 무한히 펼쳐지는 디지털 캔버스를 경험해 보세요. AI와 함께하는 창작의 세계에서, 당신의 첫걸음을 응원합니다!
'AI 용어' 카테고리의 다른 글
Flutter & 기본 명령어 (1) | 2024.11.17 |
---|---|
Firebase & Flutter 개발 환경 셋팅 및 기본 명령어 (0) | 2024.10.25 |
LLM의 경량화와 성능 개선 방법에 대해 알아보자. (0) | 2024.05.29 |
LLM 성능 평가에 대해서 알아보자. (0) | 2024.05.27 |
서버와 통신에 사용되는 FastAPI / RemoteRunnable에 대해 알아보자. (0) | 2024.05.23 |