Text to Image AI Tool을 통한 프롬프트 엔지니어링의 기본 이해
AI로 세상이 시끄럽다. LLM이니 Chat GPT니 하면서 새로운 것들이 계속해서 나오더니, 이제는 또 갑자기 프롬프트 엔지니어링의 시대라며 프롬프트 엔지니어링이 앞으로 개인 역량의 핵심이 될 것이라고 세상이 겁을 준다. 그런데 사실 프롬프트 엔지니어링이라는 용어는 듣기만큼 복잡한 것은 아니다. AI에 지시하고 대화하는 일종의 ‘소통법’일 뿐이다. 이번 칼럼에는 프롬프트의 기본 구조와 이를 구성하는 수식어들에 대해서 소개하고자 한다.
생성형 AI 프로그램을 몇 번 써본 이들은 ‘무슨 이론이냐. 해보면서 익히는 게 제일 아니냐’ 라고 생각하는 경우가 많을 것이다. 물론 틀린 말은 아니다. 하지만 최근 프롬프트 엔지니어링을 하는 데 있어 생성형 AI의 모델 버전이 올라감에 따라 이전에 잘 통하던 프롬프트 엔지니어링이 갑자기 달라지는 경우도 많다. 결과물도 이전과 달라지고, 더 나은 방법이 생기기도 한다. 이번 칼럼에는 프롬프트의 기초를 가장 쉽게 소개할 수 있는 Text to Image AI를 통해 이야기를 풀어가 보겠다. 사례에서 사용할 AI 프로그램은 쉽게 접할 수 있는 미드저니(Midjourney)를 골랐다.
프롬프트 엔지니어링이란?
미드저니에서 내린 정의가 가장 정확하기에 이를 빌려와 소개하자면, 프롬프트(Prompt)는 미드저니 봇(Midjourney Bot)이 이미지를 생성하기 위해 해석하는 짧은 텍스트 구문이다. 미드저니 봇은 프롬프트의 단어와 구를 토큰이라는 더 작은 조각으로 분해해 교육 데이터(이미지 데이터)와 비교한 다음 이미지를 생성하는 데 사용할 수 있다. 잘 만들어진 프롬프트는 독특하고 흥미로운 이미지를 만드는 데 도움을 준다.
프롬프트 엔지니어링의 구조와 작동 방법
모델에 따라 순서나 형태는 다르지만 대부분, 위와 같은 순서가 가장 잘 입력된다. 위와 같은 형태는 예를 들면 이런 식으로 구현된다.
사진, 웃고 있는 여성, 에드워드 호퍼 느낌, 파스텔 칼라, 8K 화질, 디테일을 매우 살려서 그려달라는 이야기다. 순서는 크게 상관없는 경우도 많지만 어떤 AI들은 텍스트의 순서가 중요도나 반영도에 영향을 미치기도 한다. 중요한 것은 주제와 디테일에 반영되는 것들이며, 이러한 프롬프트 수식어들을 분류하고 그 특성을 정리하면 다음과 같다.
프롬프트 엔지니어링 수식어 분류
내가 그리고 싶은 건 이거야 <주제어>
사용자가 만들고 싶은 그림의 주제다. 예를 들어 “A cat with a Hat” (모자 쓴 고양이)”가 주제어가 될 수 있다. 자유롭게 아무 이미지나 만들 것이 아니라면, 이미지 생성에서 정확하고 명료한 주제는 필수적이다. 다만 사용자가 감안해야 할 점은, Text-to-Image 시스템은 서술적인 텍스트와 연관하여 이미지를 훈련시키기 때문에 해당 시스템이 어떤 텍스트에 훈련이 덜 되어 있는 경우, 명료하게 입력한 주제 용어도 결과물에 잘 반영되지 않을 수 있다. 예를 들어 ‘한국인 남자’로 입력했는데 나온 것이 누가 봐도 한국인 같지 않은 경우도 해당 AI 모델이 ‘한국인 남자’라는 것에 대한 연관 이미지 훈련이 덜 되어 있는 경우로 볼 수 있다.
어떤 스타일로 그리면 좋을까? <스타일>
특정한 스타일의 이미지를 생성하기 위해 스타일 수식어를 프롬프트에 추가할 수 있다. “oil painting”이나 “mixed media” 같은 특정한 그림 스타일을 넣을 수도 있고, “#pixelart,” “hyper-realistic,” “abstract painting,” “surreal,” “Cubism”, “cubist,” “cabinet card,” “in the style of a cartoon,” 와 같은 예술 장르 등을 스타일 수식어로 넣어 이미지 결과물에 반영할 수도 있다.
예를 들어, ” by Francisco Goya”라는 수식어를 넣는다면 스페인의 미술가인 프란시스코 고야의 스타일로 디지털 이미지를 생성할 것이다. 스타일 수식어는 미술 시대, 학파, 스타일뿐만 아니라 미술 재료, 매체, 기법, 작가와 관련된 정보를 넣을 수도 있다.
내가 가진 이미지도 활용할 수 있어? <이미지 프롬프트>
이미지 프롬프트는 말 그대로 사용자가 이미 갖고 있는 이미지를 입력해 Text-to-Image 시스템의 이미지 생성에 활용하는 것을 말한다. 예를 들어 미드저니에는 디스코드(discord)에 내 얼굴 사진을 올린 뒤 그 올라간 URL을 프롬프트로 입력하는 기능이 있다. 이미지 프롬프트는 일반적으로 텍스트 입력 프롬프트에 추가되거나 혹은 별도의 배열로 제공되는 하나 또는 여러 개의 URL로 지정된다. 이미지 프롬프트는 활용되는 AI 모델에 따라 꼭 1개가 아닌 여러 개의 이미지로 구성될 수도 있으며, 반영 정도를 조정할 수도 있다. 가령 Stable Diffusion Model을 통해 내 얼굴과 연인 얼굴을 섞어 2세 얼굴을 미리 만들어 본다면, 나 20%, 연인 80%를 닮은 2세를 만들 수도 있다는 이야기다.
아주 멋지게 그려줘 <퀄리티 부스터>
퀄리티 부스터는 프롬프트에 추가되어 이미지의 미적 품질과 디테일 수준을 높이는 데 사용되는 수식어를 말한다. 대표적으로 “award-winning,” “masterpiece,” “highly detailed”, “awesome,” “#wow,” “epic,” “rendered in Unreal Engine.”과 같은 용어들이 있다. 이런 수식어를 넣어서 이미지 결과물을 더욱 풍성하게 만들 수 있다. 다만, 장점이 있으면 단점도 있듯이 이렇게 퀄리티를 높이려는 수식어를 쓰면, 이미지 풍성함은 높아지지만 그 대가로 주제 반영도가 약해질 수도 있기 때문에 주의해서 사용할 필요가 있다.
이건 정말 중요하니까 두 번 이야기할게 <용어 반복>
용어를 반복해서 입력하면 생성 시스템이 형성한 연관성을 강화할 수 있다. 다만 똑같은 단어를 두 번 쓰는 것이 아닌, 같은 모습을 표현하는 조금 다른 단어와 문장을 사용해야 효과가 있다. 다음 예처럼, “A cat that fight with a dog, fight each other “라는 프롬프트는 주제어 하나만 사용하는 것보다 좀더 명확한 결과물을 생성할 가능성이 높다. (가능성이 높을 뿐 항상 통하는 건 아니라는 점에 주의!) 서로 다른 표현과 동의어를 사용하면 Text-to-Image 시스템이 주제 용어와 관련된 신경망의 잠재 공간에서 더 잘 작용할 수 있게 해준다. 기술적으로 AI 모델들이 반복된 구문은 의도적으로 AI를 피드백 루프에 갇히도록 할 가능성이 있다 보니 다른 수식어보다 반영률이 높아질 수 있기 때문이다.
이 단어를 넣었더니 신기한 효과가! <마법의 용어들>
‘마법 용어’는 일종의 문학적 표현으로 이미지에 렌덤성을 강화해서 놀라운 결과물을 얻는 용어를 말한다. 쉽게 말해 ‘이 단어를 넣었더니 이미지가 엄청 재밌게 변했다’라는 것이다. 예를 들어, 트위터 사용자인 @jd_pressman은 “orchestra conductor leading a chorus of sound wave audio waveforms swirling around him on the orchestral stage”라는 프롬프트에 “control the soul”이라는 마법 용어를 추가했다.
이 프롬프트 작성자는 “더 많은 마법적이고 마법사 같은 이미지”를 얻기 위해 이런 단어를 추가했다고 말했다. 이런 일련의 ‘마법’ 용어는 결과 이미지에 예측할 수 없는 요소와 놀라움을 더하여 이미지 결과물의 다양성을 높이는 데 활용된다. 즉 랜덤으로 이미지가 나올 확률을 높인다는 이야기다. 이런 마법 용어는 프롬프트의 주제와 먼 용어일 수도 있으며, “feed the soul”과 “feel the sound”와 같이 비시각적인 특성인 촉각(체각), 청각(청각), 후각(후각), 미각(미각)과 관련된 용어일 수도 있다. 물론 정확도가 필요한 작업에선 이런 마법 단어를 쓰는 건 적절하지 않다. 어이없는 결과가 나올 수도 있기 때문이다.
이렇게 프롬프트 수식어들을 정리해 보았다. 결국 프롬프트 엔지니어링이란 여러 경험을 통해 이러한 수식어구를 조합해 나가며 어떤 것이 생성형 AI의 반응을 잘 끌어오는지 알아보는 작업이다.
이번에 소개한 기초적인 지식은 글로만 볼 땐 이해하기 어려울 수도 있다. 실제로 프로그램을 켜고 사용하며 익혀간다면 프롬프트 엔지니어링이 어떻게 구현되는지 이해가 빠를 것이다. 결국 실행과 경험이 바탕이 되어야만 효과적인 결과가 나온다는 삶의 원칙에는 AI도 예외가 아닌 셈이다. 많은 독자가 프롬프트 엔지니어링을 즐기며 익히고 멋진 작품을 만들어 내길 바란다.
[본 글은 JONAS OPPENLAENDER, (University of Jyväskylä, Finland)의 논문 ‘A Taxonomy of Prompt Modifiers for Text-To-Image Generation’ 을 참고, 발췌하여 소개하였습니다.]