프롬프트 엔지니어링 실전: AI 그림 그리기 기술, 원하는 이미지를 정확하게 생성하세요!

프롬프트 엔지니어링 실전: AI 그림 그리기 기술, 원하는 이미지를 정확하게 생성하세요!

2025. 12. 5.
13분 읽기
0회 조회
프롬프트 엔지니어링 실전: AI 그림 그리기 기술, 원하는 이미지를 정확하게 생성하세요!

튜토리얼 개요#

본 튜토리얼은 독자들이 프롬프트 엔지니어링의 핵심 기술을 익혀 AI 이미지 생성 도구를 활용하여 자신의 요구에 맞는 아름다운 이미지를 창조할 수 있도록 돕는 것을 목표로 합니다. 프롬프트의 구성 방법을 심층적으로 탐구하고, 여러 실전 사례를 통해 독자들이 입문부터 능숙하게 사용할 수 있도록 지원합니다. 본 튜토리얼은 AI 이미지 생성에 관심이 있고, 어느 정도의 컴퓨터 기초 지식을 갖춘 독자, 예를 들어 디자이너, 마케터, 그리고 AI 예술에 관심 있는 애호가에게 적합합니다.

본 튜토리얼 학습을 통해 다음과 같은 능력을 갖추게 됩니다.

  • 프롬프트 엔지니어링의 기본 원리와 핵심 개념을 이해합니다.
  • 효과적인 프롬프트를 구축하는 다양한 기술과 방법을 익힙니다.
  • 다양한 이미지 생성 모델을 활용하여 스타일이 다른 이미지를 창조합니다.
  • AI 이미지 생성 과정에서 발생하는 일반적인 문제를 해결합니다.
  • 창의적인 표현 능력을 향상시켜 아이디어를 시각 작품으로 전환합니다.

사전 준비#

학습을 시작하기 전에 다음 사항을 준비해야 합니다.

  1. 필요 도구:

    • AI 이미지 생성 플랫폼: Midjourney, DALL-E 2, Stable Diffusion 등 주요 플랫폼을 사용하는 것을 권장합니다. 이러한 플랫폼은 무료 평가판 또는 유료 구독 서비스를 제공하며, 자신의 필요에 따라 선택할 수 있습니다. 본 튜토리얼에서는 오픈 소스 및 사용자 정의 기능이 더 강력한 Stable Diffusion을 예시로 설명합니다.
    • 텍스트 편집기: 프롬프트를 작성하고 편집하는 데 사용됩니다. VS Code, Sublime Text 등을 사용하는 것을 권장합니다. 코드 강조 표시 및 자동 완성 기능이 있어 효율성을 높일 수 있습니다.
    • 이미지 처리 소프트웨어: 선택 사항이며, 생성된 이미지를 후처리하는 데 사용됩니다. Photoshop, GIMP 등을 사용하는 것을 권장합니다.
  2. 환경 구성:

    • Stable Diffusion: Stable Diffusion을 선택한 경우 Python 환경(3.7 이상 버전 권장)을 설치하고 해당 종속성 라이브러리를 구성해야 합니다. 자세한 설치 단계는 Stable Diffusion 공식 문서 또는 관련 튜토리얼을 참조하십시오. conda를 사용하여 독립적인 가상 환경을 생성하여 다른 프로젝트와의 종속성 충돌을 방지하는 것이 좋습니다.
    • GPU: AI 이미지 생성은 계산 자원 요구 사항이 높으므로 Nvidia GPU가 장착된 컴퓨터를 사용하고 CUDA 및 cuDNN과 같은 드라이버를 설치하는 것이 좋습니다. 컴퓨터에 GPU가 없는 경우 Google Colab, Kaggle 등과 같은 클라우드 GPU 서비스를 사용할 수도 있습니다.
  3. 기초 지식:

    • Python 기초: Python의 기본 문법과 numpy, PIL 등과 같은 일반적인 라이브러리를 이해합니다.
    • 딥러닝 기초: 신경망, 컨볼루션 신경망 등과 같은 딥러닝의 기본 개념을 이해합니다.
    • 이미지 처리 기초: 픽셀, 색 공간 등과 같은 이미지의 기본 개념을 이해합니다.

핵심 개념 설명#

다음 핵심 개념을 이해하는 것은 프롬프트 엔지니어링을 마스터하는 데 매우 중요합니다.

  • 프롬프트 (Prompt): 프롬프트는 사용자가 AI 모델에 제공하는 텍스트 명령으로, 모델이 특정 이미지를 생성하도록 안내하는 데 사용됩니다. 좋은 프롬프트는 명확하고 간결하며 정확해야 하며, 생성하려는 이미지를 정확하게 설명할 수 있어야 합니다.
  • 긍정적 프롬프트 (Positive Prompt): 이미지에 포함하려는 요소, 특징, 스타일 등을 설명합니다. 예를 들어 "a photo of a cat, realistic, detailed, 8k"와 같습니다.
  • 부정적 프롬프트 (Negative Prompt): 이미지에 포함하지 않으려는 요소, 특징, 스타일 등을 설명합니다. 예를 들어 "blurry, deformed, ugly, low quality"와 같습니다.
  • 모델 (Model): AI 이미지 생성 모델은 대량의 이미지 데이터로 훈련된 신경망으로, 이미지를 생성하는 데 사용됩니다. 서로 다른 모델은 서로 다른 스타일과 특징을 가지고 있습니다. 예를 들어 Stable Diffusion에는 SD1.5, SDXL 등과 같은 여러 가지 다른 모델이 있습니다.
  • 샘플링 방법 (Sampler): 샘플링 방법은 모델이 이미지를 생성하는 방식을 결정합니다. 서로 다른 샘플링 방법은 서로 다른 효과를 냅니다. 일반적인 샘플링 방법에는 Euler a, DPM++ 2M Karras 등이 있습니다.
  • 반복 횟수 (Steps): 반복 횟수는 모델이 이미지를 생성하는 정밀도를 결정합니다. 반복 횟수가 많을수록 이미지가 더 정밀해지지만 생성 시간도 더 길어집니다.
  • 랜덤 시드 (Seed): 랜덤 시드는 모델이 이미지를 생성하는 무작위성을 결정합니다. 동일한 프롬프트와 랜덤 시드를 사용하면 동일한 이미지를 생성할 수 있습니다.
  • 프롬프트 가중치 (Prompt Weight): 프롬프트의 가중치를 조정하여 모델이 서로 다른 프롬프트에 부여하는 중요도를 제어할 수 있습니다. 예를 들어 괄호를 사용하여 프롬프트의 가중치를 늘리거나 줄일 수 있습니다. 예를 들어 "cat:(1.5)"는 "cat"의 가중치를 늘리는 것을 의미하고, "dog: (0.5)"는 "dog"의 가중치를 줄이는 것을 의미합니다.
  • LoRA (Low-Rank Adaptation): 전체 모델을 다시 훈련하지 않고도 모델에 특정 스타일이나 객체를 추가할 수 있는 미세 조정 기술입니다. LoRA 파일은 일반적으로 크기가 작아 공유하고 사용하기 쉽습니다.

1단계: 기본 프롬프트 구축#

프롬프트 구축의 첫 번째 단계는 생성하려는 이미지 내용을 명확히 하는 것입니다. 다음 몇 가지 질문을 고려해야 합니다.

  • 주체 (Subject): 이미지의 주요 대상은 무엇입니까? 예를 들어 강아지, 성, 풍경화.
  • 배경 (Background): 이미지의 배경은 무엇입니까? 예를 들어 숲, 해변, 도시.
  • 스타일 (Style): 이미지의 스타일은 무엇입니까? 예를 들어 사실적, 만화, 유화.
  • 조명 (Lighting): 이미지의 조명 효과는 무엇입니까? 예를 들어 일몰, 달빛, 스포트라이트.
  • 구도 (Composition): 이미지의 구도 방식은 무엇입니까? 예를 들어 클로즈업, 원경, 조감도.

이러한 정보를 명확하고 간결한 문장으로 정리하여 기본 프롬프트로 사용하십시오.

주의 사항:

  • 구체적인 명사와 형용사를 사용하고 모호한 단어는 사용하지 마십시오.
  • 가능한 한 간결한 언어를 사용하고 너무 긴 문장은 사용하지 마십시오.
  • 가장 중요한 정보를 프롬프트 앞에 배치하십시오. 모델이 앞의 내용을 우선적으로 처리하기 때문입니다.

예시:

  • 주체: 황금색 래브라도 리트리버
  • 배경: 녹색 잔디밭, 햇빛이 밝음
  • 스타일: 사실적
  • 조명: 자연광
  • 구도: 반신상

기본 프롬프트: "a realistic photo of a golden labrador retriever sitting on a green grass field, sunny day, natural light, half body portrait"

다음으로 몇 가지 세부 사항을 추가하여 프롬프트를 더욱 개선할 수 있습니다. 예를 들어 강아지의 표정, 자세 및 잔디밭의 세부 사항 등을 추가할 수 있습니다.

개선된 프롬프트: "a realistic photo of a golden labrador retriever sitting on a green grass field, sunny day, natural light, half body portrait, happy expression, looking at the camera, blades of grass swaying in the breeze"

프롬프트를 지속적으로 개선함으로써 생성하려는 이미지에 점차적으로 접근할 수 있습니다.

2단계: 긍정적 및 부정적 프롬프트 활용#

긍정적 프롬프트는 이미지에 포함하려는 요소를 설명하는 데 사용되고, 부정적 프롬프트는 이미지에 포함하지 않으려는 요소를 설명하는 데 사용됩니다. 긍정적 및 부정적 프롬프트를 합리적으로 사용하면 이미지 생성 결과를 효과적으로 제어할 수 있습니다.

긍정적 프롬프트 기술:

  • 색상, 모양, 질감 등과 같은 설명적인 단어를 사용하십시오.
  • 예술 스타일, 사진 스타일 등과 같은 스타일화된 단어를 사용하십시오.
  • 기쁨, 슬픔, 분노 등과 같은 감정적인 단어를 사용하십시오.
  • 의복, 액세서리, 장면 등과 같은 구체적인 세부 사항을 사용하십시오.

부정적 프롬프트 기술:

  • "bad", "ugly" 등과 같은 모호한 단어는 사용하지 마십시오.
  • "blurry", "deformed", "low quality" 등과 같은 구체적인 단어를 사용하십시오.
  • 모델의 창의성을 제한하지 않도록 너무 많은 부정적 프롬프트를 사용하지 마십시오.

예시:

위의 래브라도 리트리버를 예로 들어 다음과 같은 긍정적 및 부정적 프롬프트를 추가할 수 있습니다.

  • 긍정적 프롬프트: "highly detailed, 8k, sharp focus, professional photography"
  • 부정적 프롬프트: "blurry, deformed, low quality, cartoon, painting"

이러한 프롬프트를 이전 프롬프트에 추가하여 최종 프롬프트를 얻습니다.

"a realistic photo of a golden labrador retriever sitting on a green grass field, sunny day, natural light, half body portrait, happy expression, looking at the camera, blades of grass swaying in the breeze, highly detailed, 8k, sharp focus, professional photography, (masterpiece, best quality:1.2), negative: blurry, deformed, low quality, cartoon, painting"

(masterpiece, best quality:1.2)는 가중치를 사용하여 모델이 이러한 두 단어를 더 중요하게 고려해야 함을 나타냅니다.

3단계: 매개변수 조정 및 최적화#

좋은 프롬프트만으로는 충분하지 않으며 이상적인 이미지를 생성하려면 적절한 매개변수를 조정해야 합니다. 다음은 일반적으로 사용되는 몇 가지 매개변수입니다.

  • 샘플링 방법 (Sampler): 서로 다른 샘플링 방법은 서로 다른 효과를 냅니다. 일반적인 샘플링 방법에는 Euler a, DPM++ 2M Karras 등이 있습니다. Euler a는 속도가 빠르므로 빠른 반복에 적합합니다. DPM++ 2M Karras는 품질이 높으므로 최종 이미지 생성에 적합합니다.
  • 반복 횟수 (Steps): 반복 횟수는 모델이 이미지를 생성하는 정밀도를 결정합니다. 일반적으로 20-30단계면 충분하며, 더 정밀한 이미지를 원하면 50단계 이상으로 늘릴 수 있습니다. 그러나 반복 횟수가 많을수록 생성 시간도 더 길어집니다.
  • 랜덤 시드 (Seed): 랜덤 시드는 모델이 이미지를 생성하는 무작위성을 결정합니다. 동일한 프롬프트와 랜덤 시드를 사용하면 동일한 이미지를 생성할 수 있습니다. 다른 이미지를 생성하려면 랜덤 시드를 수정할 수 있습니다. -1을 사용하여 랜덤 시드를 나타낼 수 있으며, 매번 다른 이미지가 생성됩니다.
  • CFG Scale (Classifier Free Guidance Scale): CFG Scale은 모델이 프롬프트에 부여하는 중요도를 제어합니다. 값이 높을수록 모델이 프롬프트를 더 중요하게 고려하지만 이미지가 왜곡될 수 있습니다. 일반적으로 7-12가 적절한 범위입니다.
  • 해상도 (Resolution): 해상도는 이미지 크기를 결정합니다. 해상도가 높을수록 이미지가 더 선명하지만 생성 시간도 더 길어집니다. 필요에 따라 적절한 해상도를 선택해야 합니다. 일반적으로 사용되는 해상도에는 512x512, 768x768 등이 있습니다.

최적화 기술:

  • 반복적 조정: 매개변수를 지속적으로 조정하고 이미지 생성 결과를 관찰한 후 결과에 따라 조정합니다.
  • 다른 작품 참조: 다른 우수한 작품을 참조하여 프롬프트와 매개변수 설정을 배우십시오.
  • 커뮤니티 리소스 사용: 관련 커뮤니티에 가입하여 다른 사용자와 경험을 교환하고 기술을 배우십시오.

예시:

위의 래브라도 리트리버 예제에 대해 다음과 같은 매개변수 설정을 시도할 수 있습니다.

  • 샘플링 방법: DPM++ 2M Karras
  • 반복 횟수: 30
  • 랜덤 시드: -1
  • CFG Scale: 7
  • 해상도: 512x512

이러한 매개변수를 조정하여 다양한 스타일과 품질의 이미지를 생성하고 요구 사항에 가장 적합한 이미지를 선택할 수 있습니다.

4단계: LoRA 및 ControlNet을 활용하여 제어력 향상#

LoRA (Low-Rank Adaptation)는 전체 모델을 다시 훈련하지 않고도 모델에 특정 스타일이나 객체를 추가할 수 있는 미세 조정 기술입니다. ControlNet은 스케치, 엣지 맵, 깊이 맵과 같은 추가 입력을 사용하여 이미지 생성 프로세스를 더 정확하게 제어할 수 있는 신경망 구조입니다.

LoRA 사용:

  1. LoRA 모델 다운로드: Civitai와 같은 웹사이트에서 필요한 LoRA 모델을 다운로드하십시오.
  2. LoRA 모델 로드: Stable Diffusion 인터페이스에서 LoRA 모델을 로드하십시오. 일반적으로 LoRA 파일을 models/Lora 디렉토리에 넣어야 합니다.
  3. 프롬프트에서 LoRA 사용: <lora:모델 이름:가중치> 형식으로 프롬프트에서 LoRA 모델을 호출하십시오. 예를 들어 <lora:moreRealistic:0.8>moreRealistic LoRA 모델을 사용하고 가중치는 0.8임을 나타냅니다.

ControlNet 사용:

  1. ControlNet 플러그인 설치: Stable Diffusion의 ControlNet 플러그인을 설치하십시오.
  2. ControlNet 입력 준비: 원하는 효과에 따라 스케치, 엣지 맵, 깊이 맵 등과 같은 해당 입력 이미지를 준비하십시오.
  3. ControlNet 전처리기 및 모델 선택: ControlNet 인터페이스에서 적절한 전처리기 및 모델을 선택하십시오. 전처리기는 입력 이미지를 모델이 이해할 수 있는 형식으로 변환하는 데 사용되고, 모델은 이미지 생성 프로세스를 제어하는 데 사용됩니다.
  4. ControlNet 매개변수 조정: 최상의 결과를 얻기 위해 가중치, 시작 단계 등과 같은 ControlNet 매개변수를 조정하십시오.

예시:

특정 예술 스타일의 래브라도 리트리버 이미지를 생성하려는 경우 LoRA 모델을 사용하여 구현할 수 있습니다.

  1. ArtStyleLoRA라는 LoRA 모델을 다운로드하십시오.
  2. ArtStyleLoRA.safetensors 파일을 models/Lora 디렉토리에 넣으십시오.
  3. 프롬프트에 <lora:ArtStyleLoRA:0.7>을 추가하여 ArtStyleLoRA 모델을 사용하고 가중치는 0.7임을 나타냅니다.

최종 프롬프트는 다음과 같을 수 있습니다.

"a realistic photo of a golden labrador retriever sitting on a green grass field, sunny day, natural light, half body portrait, happy expression, looking at the camera, blades of grass swaying in the breeze, highly detailed, 8k, sharp focus, professional photography, lora:ArtStyleLoRA:0.7, (masterpiece, best quality:1.2), negative: blurry, deformed, low quality, cartoon, painting"

ControlNet을 사용하여 래브라도 리트리버의 자세를 정확하게 제어할 수 있습니다.

  1. 래브라도 리트리버의 자세 사진을 찍거나 간단한 그림을 그리십시오.
  2. Canny 엣지 감지 전처리기를 사용하여 엣지 맵을 추출하십시오.
  3. Canny ControlNet 모델을 선택하십시오.
  4. 엣지 맵을 ControlNet의 입력으로 사용하십시오.

LoRA와 ControlNet을 결합하여 이미지 생성 프로세스를 더 정확하게 제어하고 요구 사항에 더 부합하는 이미지를 만들 수 있습니다.

일반적인 문제 및 해결 방법#

다음은 AI 이미지 생성 과정에서 발생하는 일반적인 문제 및 해결 방법입니다.

  1. 생성된 이미지가 프롬프트와 일치하지 않음:

    • 문제: 생성된 이미지가 프롬프트에 설명된 내용과 큰 차이가 있습니다.
    • 해결 방법: 프롬프트가 명확하고 간결하며 정확한지 확인하십시오. 더 구체적인 단어를 사용하고 프롬프트의 가중치를 조정하십시오. 부정적 프롬프트를 추가하여 원하지 않는 결과를 배제하십시오.
  2. 이미지 품질이 낮음:

    • 문제: 생성된 이미지가 흐릿하고 왜곡되어 있으며 세부 사항이 부족합니다.
    • 해결 방법: 반복 횟수를 늘리고 CFG Scale을 조정하고 더 높은 품질의 샘플링 방법을 선택하십시오. 더 높은 해상도를 사용하고 "highly detailed", "8k" 등과 같은 프롬프트를 추가하십시오
프롬프트 엔지니어링 실전: AI 그림 그리기 기술, 원하는 이미지를 정확하게 생성하세요! | EndTo.AI