AI 기술

프롬프트만으로 여러 개체를 잘 그릴 수 있을까?

Ricolacola 2025. 7. 18. 23:49
반응형

Stable Diffusion의 한계점 분석

멀티 객체 프롬프트에서 객체가 사라지거나, 섞이거나, 이상하게 나타나는 이유는?


도입

최근 텍스트-이미지(T2I) 생성 기술의 발전은 놀랍습니다.
*"고양이, 개, 토끼, 독수리, 말이 있는 사진"*이라는 간단한 프롬프트로 고해상도의 사실적인 이미지를 생성할 수 있죠.

하지만 언급된 모든 객체가 실제로 이미지에 나타날까요?

실무와 연구 모두에서 멀티 객체 프롬프트 사용 시 일부 객체가 누락되거나, 혼합되거나, 잘못 배치되는 경우를 자주 목격합니다.

이 글에서는 Stable Diffusion을 중심으로 이러한 실패의 근본 원인을 분석합니다.
왜 한 줄짜리 프롬프트만으로는 여러 객체를 충실히 렌더링하기 어려운지 탐구해보겠습니다.


멀티 객체 프롬프트의 일반적인 문제들

  1. 객체 누락
    • 프롬프트에 언급된 객체가 이미지에 나타나지 않음 (예: 고양이 누락)
  2. 객체 혼합
    • 두 객체가 하나로 융합됨 (예: 말-개 하이브리드)
  3. 객체 겹침 또는 부자연스러운 레이아웃
    • 객체들이 겹치거나 어색한 위치에 배치됨

이는 무작위 오류가 아니라 현재 확산 모델의 본질적인 아키텍처 한계를 반영합니다.


 이러한 실패의 원인은?

1. 의미적 간섭

프롬프트의 모든 토큰이 동일한 어텐션 공간을 공유합니다.
결과적으로 너무 많은 개념이 어텐션을 두고 경쟁할 때 의미적 간섭이 발생할 수 있습니다.

지배적인 토큰(예: "말")이 우선순위를 받는 반면, 약한 토큰(예: "고양이")은 충분한 어텐션을 받지 못하고 생성 과정에서 누락됩니다.

2. 임베딩 공간 겹침

확산 모델은 각 단어의 고차원 임베딩에 의존합니다.
객체 임베딩이 의미적으로 유사할 때(토끼와 고양이처럼),
잠재 공간에서 겹치거나 흐려질 수 있어 생성 과정에서 구별하기 어려워집니다.

3. 공간 정보 부족

프롬프트에는 보통 명시적인 위치 단서가 부족합니다.
모델이 공간적 레이아웃을 자율적으로 추론해야 하므로 객체 겹침이나 어색한 구성이 발생하기 쉽습니다.


실험 사례: 어떤건 나오는데 왜 어떤건 안나올까?

A photo of dog, cat, rabbit and horse at beach 프롬프트로 그린 이미지
A photo of dog, cat, rabbit and horse at beach 프롬프트로 그린 이미지

프롬프트:
A photo of a dog, cat, rabbit and horse at the beach

실제로 생성된 이미지에서는
모든 동물이 나오지만, 강아지와 토끼가 조금 섞여 있거나 (위)

강아지가 나오지 않고, 말의 이미지가 이상하게 나옵니다 (아래)

이는 텍스트 인코더에서 해당 토큰이 충분한 attention을 받지 못했거나,
cross-attention 단계에서 filtering되었을 가능성이 있습니다.


🧪 참고 논문

  • [ACL 2023] Text encoders bottleneck compositionality in contrastive vision-language models
  • [ACL] Words Worth a Thousand Pictures
  • [ECCV 2024] Be Yourself: Bounded Attention for Multi-Subject Text-to-Image Generation

이 논문들은 공통적으로 복잡한 프롬프트에서 토큰 간 경쟁과 표현 손실을 지적하고 있습니다.


다음 글 예고

다음 글에서는 “텍스트 인코더가 문제일까? — Layer별 임베딩 해부”를 통해
실제로 어떤 레이어에서 고양이 토큰이 사라지는지를 시각화하고 분석합니다.