Textual Inversion: An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion
Jan 11, 2026

- Task: personalized text-to-image generation

- inversion
- 이미지 생성이 latent z → x로 만드는 것이라면, inversion은 x → z로 만드는 것
- 왜 x → z가 필요한가? 수정된 x를 만드려고
- 이 논문에선 text prompt 조건으로 수정된 x를 만들기 위해서
- 학습 방법
- V100 2장으로 3-5장 학습 이미지로 5000 step
- text encoder, generator는 freezing
- 임의의 토큰 S*로 프롬프트를 만듦 “A photo of S*”
- S*를 placeholder token, pseudo-word이라고 부름
- S*가 인풋이미지와 대응되는 새로운 토큰이 되는 것임
- 이 때 여러가지 템플릿과 인풋이미지를 조합하여 프롬프트를 만듦
- S*에 대응되는 vector v*로 학습시켜 generator에 넣을 텍스트 임베딩을 만듦
- LDM loss와 동일한데, 이 loss를 최소화 시키는 v*를 학습시킴



- 학습 결과
- 두 단어를 따로 학습시키고 추론 시 조합
- Image Similarity
- 생성된 이미지와 학습 이미지의 CLIP 임베딩의 유사도 평균
- Text Similarity
- “a oil painting” vs “a oil painting of S*” 이런 식으로 S*를 넣은 스타일 트랜스퍼 프롬프트 pair를 준비해서, S* 유무에 상관없이 생성 샘플 이미지의 이미지 CLIP 임베딩 유사도 계산
- 실험 항목
- Multi-word: S*를 2개/3개 임베딩(=2-word/3-word)으로 늘려봄
- Progressive multi-vector: 학습 시 학습 벡터를 1개로 시작 → 2000 step에 2개 → 4000 step에 3개로 늘리는 방식
- Regularization: 학습된 임베딩이 기존 단어 분포에서 너무 벗어나지 않도록 임베딩에 L2정규화
- Per-image tokens: 공유 토큰 S* + 이미지별 토큰 Sᵢ를 함께 두고(“S* with Sᵢ”), 공통/개별 정보를 분리하려는 세팅
- Human captions: 크라우딩으로 수집한 짧은 캡션(12단어이하) / 긴 캡션(30단어 이하)을 S* 대신 넣어 비교
- 한계
- V100 2장 썼다고 하는데, 학습에 2시간 걸린 적도 있다고 함
- 다른 논문 (dream booth)에서 textual inversion의 생성 이미지 샘플을 보면, 제대로 생성이 안 된 경우가 보임




Share article