AI 숏드라마 캐릭터가 계속 변하는 이유 — 프롬프트가 아니라 자산 관리

← 전체 목차 · 이전: 이미지 생성 Agent — 중복 과금·결과 뒤섞임·원본 유실을 어떻게 막나 · 다음: Agent가 20초 멈췄다면 — Trace와 Span으로 여는 관측성

"캐릭터 외모 묘사를 한 단락 더 자세히 쓰자"는 답은 이미 방향을 틀렸다. 캐릭터가 변하는 진범은 생성 단계가 아니라 생성 이전의 입력 측에 있다. 같은 캐릭터인데 세 화가 쓴 참조 소재가 애초에 같은 것이 아니었고, 조명·색온도·해상도·얼굴 각도가 전부 달랐다. 모델은 판이하게 다른 세 묶음의 픽셀 정보에서 특징 벡터를 뽑았으니 당연히 다른 얼굴 세 개를 그린다.

이것은 환환이 맞물린 네 층의 엔지니어링 문제다: 소재 버전 정규화, 생성 파라미터 잠금, 얼굴 특징 앵커 검증, 모델 버전 잠금.

바닥 논리는 명확하다. 모델은 "일관성"이 무엇인지 이해하지 못하고 입력 픽셀과 노이즈 분포만 인식한다. 그래서 "캐릭터를 일관되게 유지해"라는 모호한 지시로는 영원히 일관성을 살 수 없고, 진짜로 일관성을 결정하는 것은 세 번의 호출 사이에 입력 측 변수를 전부 잠갔는가이다. 일관성은 프롬프트 문제가 아니라 버전화·검증·회귀가 가능한 자산 엔지니어링 문제다.

변화의 인과 사슬

여러 라운드의 생성 사이에
  참조 소재의 버전 / 조명 조건 / 해상도 파라미터를 잠그지 않음

모델이 세 번의 호출에서 완전히 다른 시각 신호로부터

같은 캐릭터를 재구성

결과는 필연적으로 불일치

1층 · 소재 버전 정규화

숏드라마 제작 흐름에서 캐릭터 참조 이미지는 완전히 다른 세 출처에서 올 수 있다.

화수출처해상도특징
1화미술팀이 만든 인물 포스터3000×3000스튜디오 조명, 이목구비 선명
2화일정에 쫓겨 작가가 1화 완성본에서 딴 한 프레임800×400표정이 과장된 측면 얼굴
3화외주팀 교체, 상대는 원본 소재가 없음텍스트 설명만 보고 직접 그린 예시 (손그림 초안)

세 장의 조명 방향·색온도·해상도·얼굴 각도가 전부 다르다.

올바른 방법: 표준 캐릭터 라이브러리 + 금지 3항

  1. 캐릭터 라이브러리에 한 장 또는 여러 장의 표준 참조 이미지를 잠근다.
  2. 전 작품의 모든 생성 작업이 같은 버전을 강제 참조한다.
  3. 금지 3항:
    • 임시 스크린샷으로 대체 금지
    • 손그림으로 대체 금지
    • 후반 담당자가 임의로 색보정한 뒤 모델에 넣는 것 금지

2층 · 생성 파라미터 잠금 — Seed가 최저 비용의 보장

같은 모델, 같은 프롬프트라도 Seed가 다르면 그려지는 얼굴이 다르다.

랜덤 Seed
  → 매 호출마다 다른 노이즈 시작점에서 출발
  → 디노이징이 다른 얼굴 구조로 수렴
  → 일관성은 성립할 수 없음

Seed를 잠그는 것이 최저 비용의 보장 수단이지만 그것만으로는 부족하다. 함께 잠가야 할 것:

파라미터설명
Seed(시드)노이즈 시작점을 결정
Sampler(샘플러)샘플링 알고리즘
CFG Scale가이던스 강도
디노이징 스텝 수반복 횟수

파라미터 하나가 바뀌면 얼굴 전체가 표류한다.

3층 · 얼굴 특징 앵커 검증 — "닮았나"를 판정 가능한 수치로

참조 이미지에 얼굴 주요 비율을 표기한다.

  1. 눈썹-눈 간격과 얼굴 너비의 비율
  2. 콧방울 너비와 입 너비의 비율
  3. 턱 각도

자동화 흐름:

매 생성 후
  1. 얼굴 검출 모델로 생성 이미지의 특징점 추출
  2. 참조 이미지 앵커와 유사도 비교
  3. 임계값 판정: 불통과 → 자동 재시도

반면 시나리오: 감독이 시사할 때 육안으로 또 얼굴이 바뀐 걸 발견하게 두면 안 된다 — 그때는 이미 십수 분의 GPU 시간을 낭비한 뒤다. 검증의 가치는 문제 발견 시점을 "시사"에서 "생성 직후"로 앞당기는 데 있다.

4층 · 모델 버전 잠금 — 가장 놓치기 쉬운 층

사용 모델
1~5화SDXL
6화Flux

같은 프롬프트, 같은 Seed라도 모델 아키텍처가 다르면 얼굴 특징이 완전히 달라진다.

따라서 일관성 방안에는 모델 버전 불변을 반드시 약정하고, 부득이 업그레이드해야 한다면 같은 캐릭터에 대해 새 모델에서 캘리브레이션 참조 이미지 세트를 다시 제작해야 한다.

핵심 통찰

  1. "얼굴 변화"는 입력 측 문제이지 생성 측 문제가 아니다 — 같은 프롬프트가 세 번의 호출에서 다른 얼굴 세 개를 만들었다면, 지시가 충분히 상세한지 의심할 것이 아니라 입력이 동일한지 의심해야 한다. 생성 모델은 결정론적 시스템 겉에 무작위성을 한 겹 두른 것이다. 입력(소재·파라미터·모델)이 완전히 같으면 출력은 수렴하고, 출력이 다르면 반드시 어떤 입력이 바뀐 것이다.
  2. 모델은 의미론적 약속을 이해하지 못하고 수치 입력만 인식한다 — "캐릭터를 일관되게 유지해"는 사람에게 쓰는 제약이지 모델에게 쓰는 제약이 아니다. 구체적 수치나 구체적 파일 버전으로 매핑되지 않는 요구는 진짜 제약이 되지 못한다.
  3. 일관성 요구는 "모호한 지시"를 "잠글 수 있는 엔지니어링 변수"로 번역하는 일이다 — 이 문서에서 가장 이식성 높은 방법론이다. 어떤 모호한 요구를 받든 먼저 "그것이 대응하는 잠글 수 있는 변수는 무엇인가"를 물을 것. 소재 버전, Seed, 샘플러, CFG Scale, 디노이징 스텝, 모델 버전이 이 요구의 번역 결과다.
  4. 소재는 버전이 있는 자산이지 아무렇게나 교체 가능한 이미지가 아니다 — 포스터·완성본 스크린샷·외주 손그림은 전부 "이 캐릭터의 참조 이미지"처럼 보이지만, 조명·색온도·해상도·얼굴 각도가 완전히 다른 픽셀 분포를 구성한다. 참조 이미지를 버전 관리에 편입하는 것이 일관성의 첫 번째 관문이다.
  5. 일관성은 자동 판정 가능해야 하며 그렇지 않으면 없는 것과 같다 — "닮았나"를 눈썹-눈 간격/얼굴 너비, 콧방울 너비/입 너비, 턱 각도 같은 비율로 정량화하고 임계값과 자동 재시도를 붙여야, 일관성이 주관적 감각에서 실행 가능한 검증 단계로 바뀐다.
  6. 품질 검증 지점은 앞에 있을수록 비용이 싸다 — 같은 "또 얼굴이 바뀌었다"라도 생성 직후 판정하면 한 번의 생성만 손해지만, 감독 시사에서 발견하면 십수 분의 GPU 시간과 공정 전체의 재작업을 잃는다.
  7. 모델 버전은 가장 은밀한 변수다 — 소재와 파라미터는 그래도 제작 인원의 시야 안에 있지만 모델 업그레이드는 종종 "순수한 이득"으로 여겨져 아무도 재검토하지 않는다. 아키텍처를 가로지르는 업그레이드(SDXL → Flux)는 같은 프롬프트·같은 Seed도 더 이상 등가가 아니라는 뜻이며, 일관성 기준선을 함께 재구축해야 한다.

엔지니어링 실전 Tips

  • 가장 싼 것부터 잠글 것: Seed 잠금이 최저 비용의 보장 수단이다. 네 층 중 투입 대비 산출이 가장 높은 단계를 먼저 하고 층층이 강화할 것.
  • 금지 조항은 구두 주의가 아니라 프로세스 규칙으로 쓸 것: "임시 스크린샷 금지 / 손그림 대체 금지 / 임의 색보정 금지"를 따로 명문화하는 이유는, 이 세 가지 대체가 모두 일정 압박·팀 교체 같은 고압 상황에서 발생하기 때문이다. 자각에 기대면 반드시 무너진다.
  • 파라미터는 묶음으로 잠글 것: Seed만 잠그고 샘플러·CFG Scale·디노이징 스텝이 표류하게 두면 잠그지 않은 것과 같다. 이 넷을 분리 불가능한 설정 패키지로 취급할 것.
  • 검증을 시사 루프가 아니라 생성 루프에 넣을 것: 특징점 비교는 생성 직후 자동으로 돌고 불통과 시 자동 재시도해야 한다. 감독 시사 단계로 내려가면 비용의 자릿수가 완전히 달라진다.
  • "닮았나"에 측정 가능한 대리 지표를 정의할 것: 눈썹-눈 간격/얼굴 너비, 콧방울 너비/입 너비, 턱 각도는 모두 비율 또는 각도라서 해상도 스케일링의 영향을 받지 않고, 크기가 다른 생성 이미지끼리도 비교할 수 있다.
  • 모델 업그레이드를 파괴적 변경으로 취급할 것: 아키텍처를 가로지르는 업그레이드는 기존 참조 이미지 세트와 파라미터 조합을 전부 무효화하므로, 캘리브레이션 참조 이미지 세트를 다시 제작하는 동작을 방안에 명시적으로 넣어야 한다.
  • 외주·팀 교체 시 설명이 아니라 소재를 먼저 전달할 것: 3화가 무너진 이유가 바로 외주가 "원본 소재 없이 텍스트 설명만 보고 직접 그린" 것이었다. 텍스트 설명은 픽셀 단위 일관성을 실어 나를 수 없다.