-
MIGC: Multi-Instance Generation Controller for Text-to-Image Synthesis 논문 리뷰논문 후기와 구현 2024. 10. 22. 10:14
0. 전체 아키텍처
1. Instance 영역과 Background 영역을 분리한다.
이 논문은, input으로 텍스트 프롬프트와 함께, 생성을 원하는 특정 물체의 bounding box를 함께 입력으로 넣어 생성하는 task를 연구한다. 그러므로 각 bounding box 내에 물체가 생성되고, 또 bounding box에만 생성되도록, 그에 맞는 M 행렬을 준비해야 한다.
각 Instance 를 생성하는 diffusion 과정에서 M 행렬이 곱해지면서, bounding box를 벗어난다면 지워질 수 있을 것이다.
분리된 이후에는 각 instance를 생성(shading)한다.
- 이때 우선은, "Blue Cat", "Green Dog"와 같은 description을 CLIP 태운 벡터로부터 key, value를 얻어 Attention을 작업한 후에,
- 바운딩박스(Bounding Box) 숫자 4개 (x, y, h, w)를 푸리에변환한 후 MLP를 태워서 description CLIP 벡터와 concat한 벡터로부터 key, value를 얻어 Attention하고,
- 1, 2번을 합한다.
배경 생성도 비슷하게 하는데, 이때는 Global Prompt가 들어간다는 측면에서 조금 다르다. 이때 "Blue Cat" 같은 게 Instance 영역이 아닌 배경 영역에 생성되면 안 되기 때문에, Attention을 활용한 Loss를 걸어, 배경에 Attention이 가지 않도록 유도한다.
2. 각각의 영역이 따로 생성(shading)이 다 되었다면, 합친다.
그렇게 배경과 인스턴스 영역이 다 생성이 되었다면 합치면 되는데, 우선 M 행렬은 생성되어야 하는 영역만 1이고 나머지는 다 0인 행렬이라서, 그걸 매번 곱해가며 생성했기 때문에, 영역 밖에 무언가가 생성될 염려는 없어보인다. 아무리 논문에서 제시하는 결과물이 cherry-picking이더라도...
그렇다 하더라도 "당연히" 따로 따로 생성이 되었기 때문에 각각의 인스턴스와 배경들이 따로따로 놀고 있을 수 밖에 없다. 이를 위해 우선 인스턴스 영역 내에 Attention을 하고, 인스턴스와 인스턴스(배경포함) 사이의 Attention을 통해, 그림을 하나로 합치는 작업을 수행한다.
조금 더 상세한 아키텍처는 위와 같다. 여기서 CBAM은 KAIST에서 2018년 나왔던 논문이다.
'논문 후기와 구현' 카테고리의 다른 글