캐릭터가 이미지마다 다르게 보이는 이유는 확산 모델이 각 프롬프트를 이전 출력에 대한 기억이 없는 새로운 독립적 인스턴스로 처리하기 때문입니다. 생성 경로를 제어하고, 시각적 레퍼런스를 제공하며, 정체성 특징을 고정하는 구조적 설명자를 작성하여 일관성을 강제할 수 있습니다.
근본 원인: 확산 모델이 모든 프롬프트를 새로운 인스턴스로 취급하는 이유
확산 모델에는 영구적인 상태가 없습니다. 이미지를 생성할 때 모델은 랜덤 노이즈에서 시작하여 프롬프트, 랜덤 시드 및 모델의 내부 가중치가 결정하는 경로를 따릅니다. 이러한 변수를 제어하지 않으면 모델은 매번 설명을 약간 다른 방식으로 해석합니다.
문제는 모델이 캐릭터를 "잊어버리는" 것이 아닙니다. 모델에는 캐릭터를 지속되는 엔티티로 인식하는 개념이 없기 때문입니다. 모델은 텍스트 설명과 일치하는 이미지를 생성하는 방법만 알고 있습니다. 설명이 모호하면 모델은 자신의 통계적 편향으로 공백을 채웁니다. "빨간 머리 여성"이라고 설명하면 한 생성에서는 머리가 왼쪽에, 다른 생성에서는 오른쪽에 배치되거나 머리 질감이 완전히 달라질 수 있습니다. 모델이 일관성이 없는 것이 아니라, 모호한 지시에 충실한 것입니다.
이를 해결하려면 캐릭터를 단순히 설명하는 것에서 캐릭터를 구체적으로 지정하는 방식으로 전환해야 합니다. 이를 위해서는 시드, 레퍼런스 이미지, 구조적 설명자라는 세 가지 레버가 필요합니다.
일관성의 세 가지 레버: 시드, 레퍼런스 이미지, 구조적 설명자
시드는 시작 노이즈 패턴을 결정하는 랜덤 숫자입니다. 시드를 고정하면 모델은 노이즈 공간에서 동일한 경로를 따릅니다. 하지만 프롬프트를 조금이라도 변경하면 경로가 갈라집니다. 시드만으로는 충분하지 않습니다.
레퍼런스 이미지는 시각적 앵커 역할을 합니다. 캐릭터의 이미지를 제공하고 모델이 이를 정체성과 스타일의 가이드로 사용하도록 요청합니다. 이는 언어의 모호성을 우회하므로 텍스트보다 더 강력합니다. 모델은 코의 구체적인 모양, 재킷의 재단 방식, 눈의 색상을 명확하게 인식할 수 있습니다.
구조적 설명자는 캐릭터의 정체성 특징을 정확하고 기하학적으로 묘사합니다. "멋진"이라고 말하는 대신 "비대칭 안경, 왼쪽 렌즈는 깨지고 오른쪽 렌즈는 온전한 상태"라고 표현합니다. 이렇게 하면 모델이 목표로 할 안정적인 기준점이 생깁니다.
시드 값을 사용하여 생성 경로 고정하기
Midjourney나 Stable Diffusion처럼 시드 값을 설정할 수 있는 도구를 사용하는 경우, 생성 경로를 고정할 수 있습니다. 좋은 기본 이미지를 생성하는 시드로 시작하세요. 그런 다음 시드는 고정하고 프롬프트를 다듬어 나갑니다. 이렇게 하면 프롬프트 변경으로 인해 모델이 완전히 다른 해석으로 이탈하는 것을 방지할 수 있습니다.
하지만 시드는 민감하다는 점을 유의하세요. 종횡비, 모델 버전 또는 프롬프트 구조를 변경하면 시드가 동일한 결과를 생성하지 못할 수 있습니다. 시드는 전역적 제어가 아닌 지역적 제어 수단으로 취급하세요. 이는 좁은 파라미터 범위 내에서만 작동합니다.
반복적 개선을 위한 이미지-투-이미지 워크플로 구현하기
일관성을 유지하는 가장 신뢰할 수 있는 방법은 이미지-투-이미지 워크플로를 활용한 반복적 개선입니다. 먼저 캐릭터의 좋은 이미지로 시작합니다. 그런 다음 해당 이미지를 다음 생성 단계의 레퍼런스 이미지로 사용합니다. 캐릭터의 정체성 특징은 그대로 유지하면서 장면, 포즈 또는 조명을 변경하도록 프롬프트를 조정합니다.
Adobe Firefly, Krea, Runway와 같은 도구가 이러한 작업에 적합합니다. 이러한 도구를 사용하면 특정 캐릭터 이미지를 업로드하고 해당 시각적 입력을 기반으로 새로운 생성을 안내할 수 있습니다. 이러한 도구를 사용할 때는 얼굴 모양, 의상 스타일, 색상 팔레트 등 중요하게 생각하는 특정 정체성 특징이 얼마나 잘 보존되는지 기준으로 출력 결과를 평가하세요. 출력 결과가 흐트러지면 레퍼런스 이미지의 가중치를 높이거나 구조적 설명자를 더 엄격하게 조정하세요.
정체성 특징을 고정하는 구조적 설명자 작성하기
프롬프트에는 오해의 여지가 없는 구조적 설명자가 포함되어야 합니다. "아름다운", "멋진", "신비로운"과 같은 주관적인 형용사는 피하세요. 대신 기하학적이며 구체적인 설명자를 사용하세요.
- "짧게 자른 머리에 일정한 앞머리"가 "짧은 머리"보다 낫습니다.
- "높은 칼라가 있고 후드가 없는 가죽 재킷"이 "재킷"보다 낫습니다.
- "눈 사이가 넓고 약간 처진 눈"이 "슬픈 눈"보다 낫습니다.
이 설명자는 정체성을 고정합니다. 모델에 안정적인 대상을 제공합니다. Stable Diffusion이나 ComfyUI를 사용하는 경우, 특정 캐릭터 데이터셋에 대한 LoRA 학습과 이러한 설명자를 결합할 수 있습니다. 이를 통해 모델은 캐릭터의 구체적인 시각적 특성을 학습하고 다양한 장면에서 일관되게 적용할 수 있습니다.
흔한 실수: 이름에 과도하게 의존하거나 기하학적 요소를 불충분하게 지정하기
가장 흔한 실수는 이름에 의존하는 것입니다. 캐릭터 이름을 "Alice"라고 지정하면 모델은 Alice가 누구인지 알지 못합니다. 일반적인 여성 이미지를 생성할 뿐입니다. 이름은 모델에게 의미가 없습니다.
두 번째 실수는 기하학적 요소를 불충분하게 지정하는 것입니다. "파란 눈을 가진 여성"이라고 입력하면 모델은 눈의 모양, 동공의 크기, 시선의 각도를 다양하게 변경합니다. 기하학적 요소를 구체적으로 지정해야 합니다: "위쪽 눈꺼풀이 살짝 덮인 아몬드형 눈."과 같이 명시하십시오.
정체성과 스타일을 혼동하지 마십시오. 정체성은 얼굴, 헤어스타일, 체형 등 안정적인 핵심 요소입니다. 스타일은 조명, 배경, 포즈 등 가변적인 요소입니다. 프롬프트는 이 두 가지를 분리해야 합니다. 정체성 특성은 정밀하게 설명해야 하며, 스타일 특성은 비교적 유연하게 설정할 수 있습니다.
워크플로우: 장면 생성 전 캐릭터 시트 만들기
장면을 만들기 전에 캐릭터 시트를 생성하십시오. 이는 캐릭터를 정면, 측면, 후면 및 클로즈업 등 다양한 각도에서 보여주는 이미지 세트입니다. 고정된 시드와 고정된 레퍼런스 이미지를 사용하여 이를 생성하십시오. 캐릭터 시트가 일관될 때까지 프롬프트를 다듬으십시오.
일관된 캐릭터 시트가 완성되면 이후 모든 생성 작업의 레퍼런스로 사용하십시오. 장면을 만들 때 캐릭터 시트 이미지를 레퍼런스 입력으로 사용합니다. 장면 설명을 위해 프롬프트를 조정하되, 구조적 설명자를 통해 정체성 특성을 고정된 상태로 유지하십시오.
이 워크플로우는 모든 도구에서 적용 가능합니다. 모델 학습 기능이 있는 Leonardo.ai를 사용하든, 상세한 프롬프트 엔지니어링을 위해 DALL-E 3를 사용하든 원칙은 동일합니다: 먼저 정체성을 확립한 후 장면을 다양하게 구성하십시오. 캐릭터 시트를 생략하면 콘텐츠를 만드는 시간보다 불일치를 수정하는 데 더 많은 시간을 소비하게 됩니다.
The AI Creative Workflow Guide
You will be able to design a repeatable, high-quality creative workflow using AI tools for images, video, and design tasks.
Get it — $29