인공지능의 유쾌한 반란

딱딱한 코드에 웃음을 입히다. 인공지능을 재미있게 공부할 수 있는 블로그.

YouTube 자세히보기

인공지능(AI)/생성형 인공지능(Generative AI)

Text-to-Image Prompt Guide - 올킬?!

오드리공주될뻔 2024. 8. 24. 20:54

# 기본적인 개념의 이해

요즘 멀티모달 기술이 날로 발전하고 있습니다. 프로그래머가 아닌 일반인도 이제는 이미지 정도는 마음대로 생성해야 자신의 업무 효율성을 높일 수 있을 것입니다. 그래서 이번 블로그 글에서는 AI 이미지 생성의 핵심인 텍스트 투 이미지(text-to-image)의 프롬프트(Prompt) 작성법에 대해 알아보고, 이를 통해 어떻게 원하는 이미지를 보다 정확하고 창의적으로 얻을 수 있는지 살펴보겠습니다.

본 내용은 관련  주로 해외의 최신 논문, 유튜브 영상, 그리고 관련된 블로그 검색 내용을 종합하고 제 지식과 결부시켜 작성했습니다. 이미 텍스트 투 이미지(text-to-image) 기반 프롬프트는 많이 정리되어 유포되었으므로, 저는 Text to Image에 좀 더 집중하여 작성해 보았습니다.

프롬프트의 정의는 컴퓨터에 입력한 지시 내용 정도일 것입니다. 영문 위키백과의 프롬프트는 "컴퓨터 시스템(예: 텍스트-이미지 인공지능)에 발행되는 지침"으로, "instructions issued to a computer system (such as a text-to-image artificial intelligence) in the form of written or spoken language."라는 정의를 가지고 있습니다. 따라서 우리 인간 사회에서 지시할때 그렇듯이 프롬프트에는 명확한 지시, 배경 이해를 할 수 있는 맥락, 형식, 예시, 제약 설정이 있을 수 있습니다. (지시할 때는 말이죠, 이렇게 똑바로 해야 합니다. :) )

텍스트 투 이미지(text-to-image) 모델은 모델에 따라 의존성(dependency)이 있습니다. OpenAI DALL-E 시리즈, 구글 Imagen 시리즈, Midjourney, Stable Diffusion, RunwayML 정도가 우리가 많이 접하는 모델들입니다. 텍스트 투 이미지(text-to-image)  모델은 자연어 설명을 입력으로 받아 해당 설명에 일치하는 이미지를 생성하는 인공지능 모델로, 딥 뉴럴 네트워크의 발전으로 2010년대 중반에 개발되기 시작했습니다. 2022년부터 최첨단 모델의 출력이 실제 사진과 예술 작품의 품질에 근접하는 것으로 평가받으면서 지금 많은 인기를 끌고 있습니다.

이 모델은 입력 텍스트를 잠재 표현으로 변환하는 언어 모델과 해당 표현에 따라 이미지를 생성하는 생성 이미지 모델을 결합하며, 방대한 양의 이미지와 텍스트 데이터로 훈련됩니다. 텍스트 투 이미지(text-to-image) 모델을 알고리즘 측면에서 그룹핑하여 분류하면 아래처럼 나눌 수 있습니다. 각 모델마다 고유한 강점이 있습니다. 텍스트와 이미지 간의 강한 연관성을 가진 모델이 있는가 하면, 포토리얼리즘에 탁월한 모델도 있습니다.

  • 확산 모델(Stable Diffusion) :  Stable Diffusion , Midjourney, Imagen 등
  • GAN(Generative Adversarial Networks)  기반 모델: BigGAN, StyleGAN, AttnGAN 등
  • Transormer 기반 모델(Transformer-based Models) : DALL-E, Muse 등
  • 멀티 모달 모델 (Multi-modal Models) : CLIP, BLIP 등 (지난번 글 VLM 게시글 참조)
  • 위의 모델들의 알고리즘을 결합한 하이브리드 모델 등

그러나 같은 이름을 가진 모델이더라도 시리즈로 나오면서 변형된 알고리즘으로 더 좋은 품질을 추구하기 때문에, 위의 범주에서 벗어날 수도 있습니다. 사용자 관점에서는 대략적으로 이 모델들이 서로 다른 배경을 가지고 있다고 생각하면 좋을 듯합니다. 마치 고향이 경기도, 강원도, 충청도, 전라도, 경상도, 제주도인 것처럼요. 그 모델과 친해지려면 때로는 그에 맞는 '사투리'도 구사해야 합니다. :-)


# 텍스트 투 이미지(text-to-image) 프롬프트 작성 시 고려 사항

그럼, 사용자 관점에서 '어떻게 프롬프트를 만들지'에 대한 고민이 생길 수 있습니다. 전달될 포맷은 각 모델마다 조금씩 다를 수 있습니다. 키워드 중심의 단어 나열 방식도 있고, 서술식도 있으며, 주제별로 그룹핑해서 제시하기도 합니다. 결론적으로는 다음과 같은 요소들을 종합적으로 체크해야 합니다.

  1. 주제와 명확성
    • 주제어: 이미지 생성의 중심이 되는 핵심 주제를 명확히 설정합니다.
    • 명확성과 구체성: 애매한 표현을 피하고, 원하는 결과를 명확하게 전달할 수 있도록 구체적인 언어를 사용합니다.
  2. 맥락과 환경
    • 컨텍스트 및 환경: 이미지가 놓일 시간적, 공간적 배경과 환경을 구체적으로 설정합니다.
    • 감정, 분위기 표현: 이미지가 전달하고자 하는 감정과 분위기를 구체적으로 묘사합니다.
  3. 피사체 및 세부 사항 (일종의 재료 추가. Add in the ingredients)
    • 구체적인 피사체 세부 정보: 인물이냐 동물이냐에 따라 거기에 맞는 세부 사항을 명확히 설정합니다.
    • 상세 조치 및 동작: 피사체가 취하는 자세, 동작, 포즈를 구체적으로 묘사합니다.
  4. 스타일과 예술적 요소
    • 유형 및 매체: 이미지가 애니메이션인지, 사진인지, 디지털 아트인지 등 미디어 유형과 스타일을 명시합니다. 또한 예술적 스타일, 미디어 형태(디지털, 유화 등) 등을 지정합니다.
    • 예술 기법 및 문화적 참조: 특정 예술 기법, 화풍, 역사적, 문화적 배경을 포함해 원하는 분위기를 반영합니다.
    • 색상 팔레트 및 질감: 이미지의 색상 선택과 질감, 재질을 명시하여 시각적 일관성을 유지합니다.
  5. 구도와 원근법
    • 구도 및 렌즈: 카메라의 위치, 원근법, 렌즈 타입(광각, 클로즈업 등)을 명시하여 이미지를 효과적으로 구성합니다.
    • 가로 세로 비율 및 해상도: 이미지의 비율과 해상도를 설정하여 원하는 출력 형식에 맞춥니다.
  6. 조명과 분위기
    • 조명 및 분위기: 이미지의 조명 조건(자연광, 인공조명 등)과 전체적인 분위기를 설정합니다.
  7. 퀄리티 부스터
    • 퀄리티 부스터: 이미지의 미적 품질과 디테일 수준을 높이기 위한 수식어를 사용합니다.
  8. 인물 묘사 (해당 시) / 동물 묘사 (해당 시)
    • 신체적 외모 특징: 인물의 성별, 나이, 체형, 얼굴 표정 등을 명확히 설정합니다.
    • 동작과 포즈: 인물이 취하는 자세와 동작, 시선 등을 설정합니다.
    • 성격과 특징: 인물의 성격, 직업, 특징을 묘사하여 개성을 부여합니다.
    • 움직임: 동적인 이미지라면 행동이나 움직임을 묘사해야 합니다.
    • 의상 및 액세서리: 안경, 의상, 액세서리, 신발 등을 구체적으로 묘사합니다.
  9. 부정 프롬프트 (해당 시)
    • 제한 및 제외 요소: 생성하고 싶지 않은 요소나 부정적인 키워드를 명시하여 AI가 이를 피하게 합니다.
  10. 렌덤 시드( Random seed) 혹은 시드 넘버(seed number)의 유지 유무 (해당 시)

(※ Magic Words: 이미지 품질 향상이나 특정 방식을 유도하기 위해 특별한 단어를 추가하기도 합니다. 하지만 이는 공통적으로 적용할 수 있는 요소가 아니므로 제외했습니다.)

이러한 고려 요소들을 고려해서 작성된 프롬프트(Prompt)를 활용하는 단계에서는 다음과 같은 팁스(Tips)을 활용하라고 제시하고 있습니다. 

  1. 기존 이미지 작품 참조하기
    • 특정 예술 스타일이나 참고 이미지를 염두에 두고 있는 경우, 이 이미지에 대한 스타일을 지정해서 프롬프트를 반영해 보세요. 예를 들어, “고흐 스타일로 그린 해바라기 밭 위의 별이 빛나는 밤하늘” 같은 표현을 사용할 수 있습니다. 다만, 저작권 문제를 피하기 위해 이 방법은 영감을 얻는 용도로만 사용하는 것이 좋습니다.
  2. 시작은 단순함에서
    • 처음에는 명확하고 간결한 프롬프트로 시작한 후, 점차 복잡도를 더하세요. 경험이 축적됨에 따라 더 정교한 프롬프트를 작성할 수 있습니다.
  3. 과도한 복잡함 방지
    • 세부 사항은 중요하지만, 프롬프트가 지나치게 복잡하면 AI가 혼란스러워져 원하지 않는 결과가 나올 수 있습니다. 핵심 정보에 초점을 맞추고, 명확하고 간결한 설명을 목표로 하세요. 텍스트 투 이미지(text-to-image)  프롬프트 작성 시 너무 복잡하게 구성하면 문제가 될 수 있습니다. 
  4. 유사성 또는 비교 사용
    • 원하는 스타일이나 이미지를 설명할 때, 비교를 활용해보세요. 예를 들어, "판타지 소설의 한 장면처럼"이라는 표현을 사용하면 AI가 더 구체적으로 이해할 수 있습니다. 이러한 내용을 통해 원하는 결과를 더 명확하게 전달할 수 있습니다.
  5. 반복적 개선 필요
    • 원하는 결과를 얻기 위해 프롬프트의 단어와 표현을 반복적으로 실험하고 수정하세요. 처음부터 완벽한 프롬프트를 작성하기 어려울 수 있으므로, 여러 번의 반복과 수정을 통해 최적의 이미지를 얻으세요.
  6. 부정 프롬프트 활용 (모델에 따라)
    • 원하지 않는 요소를 제거하기 위해 부정 프롬프트를 활용하세요. 예를 들어, "차가운" 또는 "불길한" 요소를 제거하고 싶다면, 프롬프트에 "추위도 없고 불길함도 없다"와 같은 표현을 추가하여 따뜻함과 평온함을 강조할 수 있습니다.
  7. 단어 순서에 유의
    • 모델에 따라 프롬프트 내에서 단어의 순서는 결과에 영향을 미칠 수 있습니다. 프롬프트의 시작 부분에 있는 단어는 AI가 더 강조할 수 있으므로, 가장 중요한 요소를 프롬프트의 앞부분에 배치하는 것이 좋습니다.
  8. 필터링: 법적 및 윤리적 경계 존중
    • 살아있는 예술가의 이름을 무단으로 언급하거나, 저작권이 있는 캐릭터 또는 브랜드를 사용하는 것은 피하세요. 법적 분쟁을 방지하기 위해 AI가 생성한 이미지의 출처를 명확히 하고, 공공 도메인에 있는 참조 자료만 사용하세요.

위와 같이 정리된 항목들을 따르면, 어떤 논문, 블로그, 유튜브 동영상을 참고하더라도 이 범주에서 크게 벗어나지 않을 것입니다. 다만 고려할 요소가 많으므로, 지나치게 복잡한 프롬프트는 원하는 결과를 얻지 못할 수 있으니, 본인이 원하는 목적에 따라 선택적으로 사용하시길 바랍니다.

프롬프트 내의 단어도 중요하므로, 텍스트 투 이미지(text-to-image) 프롬프트를 잘 생성하려면, 원하는 내용을 달성하기 위해 단어를 추가, 제거, 강조 및 재정렬하는 작업이 필요할 수 있습니다.(참고로 Diffusers에서 프롬프트의 단어에 가중치를 부여하는 방법으로 compel 라이브러리를 사용하기도 합니다.)


# 개념 적용

그럼 이제 전쟁 준비를 위한 총에 대한 제반 설명은 되었고, 이제는 사용자가 총 쏘는 법만 잘 알면 되니, 총 쏘는 법에 중점을 두고 살펴보겠습니다. 똑같이 시도해도 이미지는 랜덤하게 생성될 수 있어 결과가 달라질 수 있지만, 중요한 것은 그 결과를 어떻게 좀 더 정교하게 반영하느냐이니, 그 본질인 맥락에 집중해서 진행해 주시길 바랍니다. 일단 저는 약간 애니메이션 스타일을 좋아해서 이러한 모델을 주로 많이 사용해 보았습니다.

제 유튜브 쇼츠에 사용할 황진이라는 가상 캐릭터를 생성하기 위해 인물 이미지를 만들어 보겠습니다. 그냥 생각나는 대로 프롬프트를 작성하면, 아래와 같은 초벌 프롬프트로 시작할 수 있겠습니다.


1 단계 : 'Start Simple'

Prompt : "한국의 조선시대의 유명한 기생인 황진이의 이미지를 생성해(Create an image of Hwang Jini, a famous gisaeng from the Joseon Dynasty in Korea)" - 조선시대 기생에는 춤, 노래, 시 등에 능한 예인(엔터테이너)적 요소가 있음

#1. 모델: Anime Pastel Dream. 간단한 Prompt로 생성한 황진이라는 조선시대 인물의 예시 - 기대와 다른 이미지
#2. 모델: Leonardo Anime XL. 간단한 Prompt로 생성한 황진이라는 조선시대 인물의 예시 - 조선시대 이미지가 아닌 일본 애니메이션 스타일
#3. 모델: Stable Diffusion 2.1. 간단한 Prompt로 생성한 황진이라는 조선시대 인물의 예시 - 일본 애니메이션 스타일
#4. 모델: Ideogram 2.0. 간단한 Prompt로 생성한 황진이라는 조선시대 인물의 예시 - 황진이 상상 이미지와 동떨어짐
#5. 모델: DALL-E. 간단한 Prompt로 생성한 황진이라는 조선시대 인물의 예시 - 너무 현대적인 느낌
#6. 모델: Flux.1 Schnell. 간단한 Prompt로 생성한 황진이라는 조선시대 인물의 예시 - 너무 현대적 느낌

참고로, 사이즈를 9:16 쇼츠 사이즈로 황진이 이미지를 손까지 포함해 생성하면, 손 모양의 손상이 가장 적은 것은 요즘 많이 주목받고 있는 Flux나 구글 Imagen 모델인 것 같습니다. 이 모델들은 텍스트 이해 능력이 뛰어난 특징을 가지고 있습니다.

어찌되었건, 이렇게 'Start Simple' 접근으로 단순하게 시도해본 결과, 제가 상상한 모습과는 거리가 멀어 방법을 달리해보았습니다. 우선 구글에서 유사 이미지를 찾고, 그 이미지를 기반으로 생성하는 방법입니다. 위의 'Start Simple' 접근으로도 할 수 있는 일이 많지만, 저는 좀 더 높은 수준의 이미지를 원했기 때문에 구글 검색에서 제가 생각한 것과 유사한 이미지를 찾아 그에 맞게 생성해보겠습니다. 이 방법은 자신만의 독특한 캐릭터를 영화배우를 벤치마킹하여 생성할 때와 같은 경우에 많이 활용될 수 있습니다.


2 단계 : 원하는 이미지를 기반으로 특징 추출하기

2.1 이미지 검색 및 선정

다른 방법으로 접근하겠습니다. 일단 구글에서 '황진이'라는 키워드로 검색하니, 매우 많은 인물 이미지가 나옵니다.

구글 검색: '황진이' 키워드 조회 결과

이 중에서 내가 원하는 이미지를 선택합니다. (이때 저작권 문제는 잠시 접어둡니다. 실제 이 이미지를 활용하는 것이 아니기 때문입니다.) 그런 다음, 이 이미지를 생성할 때 어떤 프롬프트를 사용해야 하는지를 알아봅니다.

이미지는 우리나라의 국가유산인 '신윤복 필 미인도' 그림에서 인물을 따오겠습니다. 이미지를 선정한 후에는 배경 없이 캐릭터만 추출해야 캐릭터에 대한 정확한 묘사를 얻을 수 있습니다. 직접 코드를 짜서 프로그램을 사용해도 되지만, 무료 배경 제거 기능을 검색해서 활용하면 됩니다. 

[출처: 국가유산포털. 신윤복 필 미인도 - 배경을 없앤 인물 이미지]


2.2 이미지를 통한 1차 Prompt 추출

그런 다음 해당 이미지를 ChatGPT의 GPTs에 있는 Describe Image 앱(다른 앱들도 많이 있음)을 이용해 아래와 같은 프롬프트를 얻습니다. (직접 ChatGPT에게 이미지를 주고 이에 대한 프롬프트를 요청해도 어느 정도 사용할 수 있는 결과를 얻을 수 있습니다.)

"Create a detailed illustration of a traditional Korean painting, showcasing a standing woman in traditional Korean attire (hanbok) with a soft, muted color palette. The woman has a serene expression, with her eyes gazing slightly downward, exuding an aura of elegance and tranquility. Her hairstyle is elaborate, with voluminous, neatly arranged hair, adorned with a simple hairpin. She holds a small object delicately in her hands, which adds to her graceful demeanor. The hanbok consists of a loose, long-leeved jacket in light, earthy tones, and a voluminous, flowing skirt in a matching soft hue. The artwork should have a vintage, hand-painted feel with subtle textures that resemble the original fabric and paper. The overall style should reflect a historical Korean aesthetic, with an emphasis on simplicity, grace, and the quiet beauty of traditional Korean art. Size: 1024x1792 (전통 한국화의 자세한 일러스트레이션을 만들어 부드럽고 차분한 색상 팔레트로 전통 한국 의상(한복)을 입은 서 있는 여성을 보여줍니다. 여성은 고요한 표정을 지으며, 시선은 약간 아래로 향하고 우아하고 평온한 분위기를 풍깁니다. 그녀의 헤어스타일은 정교하고 볼륨감 있고 깔끔하게 정돈된 머리카락에 단순한 머리핀으로 장식되어 있습니다. 그녀는 손에 작은 물건을 섬세하게 잡고 있어 우아한 태도를 더합니다. 한복은 가볍고 흙빛 톤의 느슨한 긴팔 재킷과 어울리는 부드러운 색조의 볼륨감 있고 흐르는 치마로 구성되어 있습니다. 아트워크는 원래 직물과 종이를 닮은 미묘한 질감으로 빈티지하고 손으로 그린 ​​느낌이어야 합니다. 전반적인 스타일은 단순함, 우아함, 전통 한국 예술의 고요한 아름다움을 강조하여 역사적인 한국 미학을 반영해야 합니다. 크기: 1024x1792"

비교 차원에서 직접 ChatGPT에 이미지를 업로드해 물어보면 아래와 같이 프롬프트를 얻을 수 있습니다. 아무래도 특수 목적 기능으로 만든 GPTs 내 기능들이 좀 더 우수합니다.

"Create a traditional Korean painting of a woman wearing a hanbok, inspired by classical Joseon dynasty artwork. The woman should have a serene and gentle expression, with her hair styled in an elaborate updo. She is holding a delicate object in her hands, perhaps a small ornament or fan. The hanbok is elegant, with soft, muted colors, primarily in shades of light blue and beige. The painting style should be minimalist, with fine lines and a subtle use of color, giving it an ethereal and timeless quality. (한복을 입은 여성의 전통적인 한국화를 그려보세요. 조선시대 고전 예술 작품에서 영감을 얻었습니다. 여성은 차분하고 온화한 표정을 지어야 하며, 머리를 정교하게 올렸습니다. 그녀는 손에 섬세한 물건, 아마도 작은 장신구나 부채를 들고 있습니다. 한복은 우아하고 부드럽고 차분한 색상으로 주로 밝은 파란색과 베이지색 음영을 사용합니다. 그림 스타일은 미니멀리스트여야 하며, 섬세한 선과 미묘한 색상 사용이 있어야 하며, 이를 통해 천상적이고 시대를 초월한 품질을 부여해야 합니다.)"


이제 주어진 이미지에 대한 프롬프트가 어느 정도 수준으로는 만들어진 것 같습니다. 기타 다른 사이트에서도 이미지에 대한 프롬프트 생성을 시도해보면, 아래의 프롬프트를 만들 수 있습니다.(참고용입니다.)

1. OpenArt : Clip 모델(조금 이상하게 나오더군요) 활용시 프롬프트 추출 내역

"a woman in a dress with a hat on her head and a cat in her hand, sitting on a black background, Byeon Sang-byeok, ukiyo-e, full body portrait, a silk screen(검은색 배경 위에 앉아 머리에 모자를 쓰고 손에 고양이를 든 드레스를 입은 여성, 변상벽, 우키요에, 전신상, 실크스크린) 

2. Midjourney Describe 기능 활용시 프롬프트 추출 내역

[Midjourney에서 추출한 Prompt]

3.  Playground 사이트에서 추출한 경우

"A traditional East Asian painting depicting a woman standing in a three-uarter view, facing slightly to the left. She is dressed in a traditional hanbok, featuring a light beige chima (long-sleeved robe) with a navy blue sash tied around her neck and shoulders, and a grayish-blue chokchori (skirts). The robe is fastened with a white belt, and there are subtle red accents on the shoulders. Her hair is styled in an elaborate updo with multiple voluminous black bundles, adorned with a purple and white feathered accessory. The woman's expression is calm and contemplative, with her head slightly tilted downward. She is holding what appears to be a small floral brooch with flowers and ribbon in her hands. The background is entirely black, providing high contrast and making the subject stand out clearly. The painting uses soft, diffused lighting with low saturation, creating a serene and balanced composition. The overall style is traditional with delicate brushwork, emphasizing simplicity and elegance. The color palette includes muted tones of beige, navy blue, light blue, and off-white, with hints of red and gray. The artwork has a shallow depth of field, focusing on the subject while the background remains unobtrusive. (3/4 시점으로 서 있는 여성을 묘사한 전통적인 동아시아 그림으로, 약간 왼쪽을 향하고 있습니다. 그녀는 전통 한복을 입고 있으며, 밝은 베이지색 치마(긴팔 가운)에 네이비 블루 띠를 목과 어깨에 두르고, 회청색 초코리(치마)를 입고 있습니다. 가운은 흰색 벨트로 고정하고 어깨에는 미묘한 붉은색 악센트가 있습니다. 그녀의 머리는 여러 개의 볼륨감 있는 검은색 묶음으로 정교하게 업도 스타일로 되어 있으며, 보라색과 흰색 깃털 액세서리로 장식되어 있습니다. 여성의 표정은 차분하고 사색적이며, 머리를 약간 아래로 기울였습니다. 그녀는 손에 꽃과 리본이 달린 작은 꽃 브로치처럼 보이는 것을 들고 있습니다. 배경은 전부 검은색으로, 대비가 강하고 피사체가 선명하게 돋보입니다. 이 그림은 낮은 채도의 부드럽고 확산된 조명을 사용하여 고요하고 균형 잡힌 구성을 만들어냅니다. 전체적인 스타일은 섬세한 필치로 전통적이며, 단순함과 우아함을 강조합니다. 색상 팔레트에는 베이지, 네이비 블루, 라이트 블루, 오프 화이트의 차분한 톤이 포함되며, 빨간색과 회색이 살짝 섞여 있습니다. 아트워크는 얕은 피사계 심도를 가지고 있어 피사체에 초점을 맞추는 반면 배경은 눈에 띄지 않게 유지합니다.)"


2.3 1차 Prompt 적용

어떤 방식으로 하든, 일단 해당 이미지의 인물이나 동물을 잘 묘사한 것을 찾아 진행해야 합니다. 일단, ChatGPT의 GPTs로 가져온 프롬프트를 적용하여, 계속 발전시키면서 생성해보겠습니다. 사이즈는 일단 1:1로 통일하여 진행했습니다.

1. 이미지에서 추출한 프롬프트를 DALL-E (Microsoft) 모델에 적용한 결과 이미지

가. DALL-E로 생성한 황진이 이미지 추출 Prompt 적용결과

 

2. 이미지에서 추출한 프롬프트를 Ideogram 2.0 모델에 적용한 결과 이미지

나. Ideogram 2.0으로 생성한 황진이 이미지 추출 Prompt 적용결과

 

3. 이미지에서 추출한 프롬프트를 Flux.1 schnell 모델에 적용한 결과 이미지  

다. Flux.1 schnell 생성한 황진이 이미지 추출 Prompt 적용결과


3 단계 : 프롬프트 최적화

1차 프롬프트는 부족하지만, 제가 원하는 조선시대 인물 황진이의 모습에 좀 더 가까워졌습니다. 그러나 부족한 부분을 보충해야하므로, 앞에서 설명한 체크리스트를 활용해 마무리하여 최종적으로 원하는 모습을 완성하겠습니다. 방법은 아주 쉽습니다. 고려한 것을 체크해서 ChatGPT에 다시 물어서 결과를 얻으면 됩니다. 

"""

당신은 프롬프트 개선 전문가입니다. 주어진 초기 프롬프트를 분석하고, 아래 요소들을 고려하여 개선된 프롬프트를 생성해야 합니다. 주어진 프롬프트에서 아래 요소의 내용이 부족하다면, 적절히 추가하여 더 상세하고 명확한 프롬프트를 만들어주세요.

(이하 위에서 언급한 내용들: 주제와 명확성, 맥락과 환경 등등 열거)

"""

이런식으로 대략 물어보면 그 결과로 아주 좋은 프롬프트를 생성해 줍니다. 이제는 만족스러운 프롬프트를 얻을 수 있습니다. ChatGPT에서 나온 프롬프트 최적화 결과입니다. (별도 구독자 게시를 통해 전체 프롬프트를 올려놓았습니다.)  

"""

최종 프롬프트 내용 : 
"Create a detailed illustration of a traditional Korean painting, showcasing a standing gisaeng (a Joseon Dynasty entertainer) in traditional Korean attire (hanbok) with a soft, muted color palette. The gisaeng has a serene yet subtly confident expression, with her eyes gazing slightly downward, exuding an aura of elegance and refined poise. Her hairstyle is elaborate and voluminous, styled in a traditional eoyeo meori fashion, adorned with a delicate hairpin and a floral ornament that hints at her artistic role. She delicately holds a folded fan in her hands, which adds to her graceful and artistic demeanor. The hanbok consists of a jeogori (loose, long-leeved jacket) in light, earthy tones, and a voluminous, flowing chima (skirt) in a matching soft hue. The artwork should have a vintage, hand-painted feel with subtle textures that resemble the original fabric and paper. The background subtly reflects a traditional Korean garden or pavilion setting, with hints of nature in soft, muted tones. The overall style should reflect the historical Korean aesthetic of the Joseon Dynasty, with an emphasis on simplicity, grace, and the quiet beauty of traditional Korean art. (전통 한국화의 자세한 일러스트레이션을 만들어 보세요. 부드럽고 차분한 색상 팔레트로 전통 한국 의상(한복)을 입은 기생(조선시대 연예인)이 서 있는 모습을 보여 주세요. 기생은 고요하면서도 미묘하게 자신감 있는 표정을 지으며, 시선은 살짝 아래로 향하고 있어 우아함과 세련된 균형감이 느껴집니다. 그녀의 헤어스타일은 정교하고 볼륨감이 있으며, 전통적인 어여머리 스타일로 스타일링되었고, 섬세한 머리핀과 그녀의 예술적 역할을 암시하는 꽃 장식으로 장식되어 있습니다. 그녀는 우아하고 예술적인 태도를 더하기 위해 접힌 부채를 손에 섬세하게 잡고 있습니다. 한복은 밝고 흙빛 톤의 저고리(헐렁한 긴팔 재킷)와 어울리는 부드러운 색조의 볼륨감 있고 흐르는 치마(치마)로 구성되어 있습니다. 아트워크는 원래 원단과 종이와 비슷한 미묘한 질감을 지닌 빈티지하고 손으로 그린 ​​느낌이어야 합니다. 배경은 전통적인 한국 정원이나 정자 환경을 미묘하게 반영하며, 부드럽고 차분한 톤으로 자연의 힌트를 줍니다. 전반적인 스타일은 조선 시대의 역사적 한국 미학을 반영해야 하며, 단순함, 우아함, 전통 한국 예술의 고요한 아름다움을 강조해야 합니다.)"

이를 반복하여 좀 더 나은 이미지를 생성할 수도 있지만, 저는 이렇게 나온 프롬프트를 곧바로 활용해서 이미지를 생성해 제 유튜브 쇼츠의 캐릭터로 활용하겠습니다.

A. 최종 프롬프트 적용 결과: DALL-E에서 최종적으로 생성된 황진이 이미지 : 탈락
B. 최종 프롬프트 적용 결과: Leonardo Anime XL에서 생성된 황진이 이미지 : 탈락
C. 최종 프롬프트 적용 결과: Ideogram 2.0에서 생성된 황진이 이미지 : 탈락
D. 최종 프롬프트 적용 결과: FLUX-schnell에서 생성된 황진이 이미지 : 최종 선택

 

여러 모델의 결과를 비교한 끝에, 이번 이미지는 Flux 모델에서 나온 결과를 최종적으로 선택했습니다.


# 마무리

지금과 같은 방법을 적용하면, 캐릭터를 좀 더 자신이 원하는 스타일로 만들 수 있습니다. 같은 방법으로 원하는 배우의 특징을 추출해서 캐릭터화할 수도 있습니다. 그리고 나서 시드 번호를 고정시키거나, Character Consistency GPTs 앱이나 프롬프트를 통한 일관성 유지 방법을 이용하면 캐릭터의 동작과 표정을 애니메이션 툴이 아닌 대화식으로 텍스트 명령어를 통해 더 일관성 있게 처리할 수 있습니다.

유튜브 쇼츠를 만들 때는 이 캐릭터가 표정을 짓거나 말을 할 수 있게 해야 합니다. 그런 방법은 유튜브에 이미 많이 나와 있습니다. 그중에서 립싱크(Lip sync AI)와 TTS(Text to Speech) 알고리즘을 적용해, 아래와 같이 쇼츠 영상에 삽입될 영상을 만들어 보았습니다. (눈을 감은 캐릭터 이미지라 말할 때도 눈을 감고 있네요! 유튜브 채널에는 해당 쇼츠 영상이 있습니다.)

유튜브 쇼츠에 사용된 황진이 캐릭터 이미지에 대한 립싱크/TTS 적용 결과

 

▶ 유튜브 쇼츠 : 😂 웃음 폭발! 청춘을 돌려다오~
https://youtube.com/shorts/3lRnImuFpUU

[어쩌다낙랑 유튜브 쇼츠]

어떻습니까? 이런 방식을 잘 응용하여 이제 여러분도 각자의 분야에 맞게 적용해 보시기 바랍니다. 생성형 인공지능 시대에는 뭔가를 생성해야 하지 않겠습니까? 총에 대한 해박한 지식이나 사양을 많이 아는 것보다, 총을 잘 쏘는 사람이 전쟁에서 승리할 수 있습니다. 프로그램을 활용하면 더 좋겠지만, 프로그램 코딩 없이도 충분히 그 이상의 기능을 업무나 취미에 활용할 수 있습니다.

이글이 도움이 되었다면 아래 URL로 유튜브 구독 클릭 부탁드립니다. 여러분들의 소중한 클릭이 제가 블로그에 글을 쓰고, 콘텐츠를 제작하는데 많은 도움이 됩니다. 미리 감사드립니다.

▶URL : 어쩌다낙랑 구독버튼
https://www.youtube.com/@audreyprincesslike?sub_confirmation=1

 

어쩌다낙랑

갓 태어난 병아리 유튜버. 인공지능과 인간의 호기심이 만나 펼쳐지는 무한한 재미의 세계. 지루한 일상에 달콤한 꿈을 선사할 채널 '낙랑공주'에 오신 것을 환영합니다. 지친 하루, 편안한 휴식

www.youtube.com

 

또한 유튜브 구독자분들을 위해, 본 블로그에서 사용되었던 프롬프트, 유튜브 스크립트, 관련 문서들은 별도 게시를 통해 다운로드할 수 있도록 공유했습니다. 더불어 간단한 파이썬 프로그램을 할 수 있는 분들을 위해 OpenAI GPT모델기반으로 제가 짜놓은  구글 코랩 버전의 프롬프트 최적화 코드도 같이 올렸습니다.(요청방법은 공지사항 참조)

(참고: 최근에는 특정 모델별로 Text to Image Prompt를 최적화해 주는 툴도 생기고 있습니다. Stable-Diffusion의 낮은 버전에 대해서는 아래 URL로 가면 프럼프트를 최적화 해줍니다.)

▶URL : Promptist Demo
https://huggingface.co/spaces/microsoft/Promptist