해당 논문은 인풋으로 입력되는 subject를 이용해 원하는 이미지를 생성하는 연구이다. 저자들은 DisEnVisioner 라는 아키텍쳐를 제시해 별도의 tuning 과정 없이 단 한장의 이미지 만으로 아래와 같은 성능을 보인다고 한다. 그러면, 저자들이 어떤 문제점을 어떠한 방법으로 해결했는지 알아보자.
기존 연구의 한계점
기존의 유사한 연구는 fine-tuning을 하는 방법들과 하지 않는 방법 크게 두 가지 방법으로 연구가 진행되고 있으나, 두 방법 모두 subject의 속성들을 제대로 해석해서 그려내는데 어려움을 겪고 있다. 이로 인해 subject의 디테일을 제대로 그려내지 못하거나, 프롬프트대로 생성이 안되게 된다.
아래 그림에서 맨 오른쪽 column을 제외하고는 전부 1) 원본이랑 비슷하게 만들어지거나, 2) 다른 고양이가 그려지고 있는 것을 확인할 수 있다.
아이디어
저자들은 이를 배경과 subject가 동시에 학습되기 때문에 disentangle 이슈가 생기는 것으로 생각해 각각 나누어 인풋으로 넣고 합성할 때 합치는 방법을 생각했다. 이를 각각 DisVisioner와 EnVisioner에서 나누고 합치는 것을 하게 학습 파이프라인을 구성했다.
DisVisioner
이미지 tokenizer를 이용해, CLIP image encoder를 통해 추출된 subject 이미지의 feature들을 subject-essential과 subject-irrelevant 토큰들로 분리했다. 이렇게 추출된 토큰 중 subject-essential 토큰을 text token 중 placeholder 와 교체해 학습을 진행했다.
EnVisioner
위의 DisVisioner에서 효과적으로 disentangle해 single token에 담았지만, subject의 디테일한 뉘앙스를 담기에는 부족하다. 이에 저자들은 subject-essential token과 subject-irrelevant 토큰을 나누어 각각 cross-attention의 key-value set을 만들어 원하는 이미지를 생성하게 했다.
결론 및 느낀점
저자들은 1장의 이미지보다 많은 이미지가 들어오면, disentanglement가 competitive하게 되어 성능이 낮아진다고 한다. 일반적으로 입력 이미지가 많을수록, 다양한 정보를 추출해 결과가 좋아지게 되고, 저자들이 주장하는 것처럼 disentangle이 완전히 이뤄졌다면 여러장의 이미지에서도 working해야 된다고 생각이 드는데, 이 부분은 추가 실험이나 논의가 필요할 것 같다.