
TL;DR
- task : Visual Relationship Detection
- problem : transformer를 최대한 활용하여 one-stage로 triplet prediction을 하고 싶다.
- idea : subject, object, predicate라는 part를 나타내는 Tensor형태의 쿼리와 최종 triplet라는 sum을 예측하는 vector형태의 쿼리를 같이 사용하자(composite query라 부름). 어텐션을 걸어주자.
- architecture : CNN + DETR encoder + part-and-sum Transformer(PST). PST는 결국

- objective : part에 대한 bbox / cls, sum에 대한 bbox, cls
- baseline : Zoom-Net, …
- data : Visual Relationship Detection dataset , HICO-DET
- result : SOTA
- contribution : one-stage SGG. simple architecture.
Details
Part-and-Sum Transformer Decoder

(SA : self attention, CA : cross attention )
Part-and-Sum separate decoding
part와 sum query decoding 두개의 stream 아키텍쳐로 나눠지는데 각각 SA, CA, FFN으로 구성되어 있다.
part query decoding을 보면 모든 쿼리의 SPO를 self-attention을 하고 tokenized image feature(=I)와도 cross attention을 한다.

sum query도 똑같이 한다.

SA -> CA -> FFN을 둘다 각각 거치면 part와 global 임베딩을 동시에 할 수 있다. 특히 SA는 모든 쿼리에 대해 보므로, 1) part query에서는 “person"으로 예측되면 predicate가 “eat"이나 “hold"를 가질 수 있도록 도와주고, 2) sum query에서 “person read book"이란 triplet을 예측할 수 있도록 도와준다.
Factorized self-attention layer 위의 SA를 할때 좀더 구조정보를 가져가기 위해서 처음부터 모든 파트 쿼리를 SA하는게 아니라 intra-relation에 대해 먼저하고 inter-relation을 한다.
Part-Sum interaction
둘 다 FFN을 통과하고 나서 서로 fusion해준다. 각 s, o, p 쿼리 summation 한걸 sum query랑도 summation 한다.

Composite Prediction

- s, o에 대한 bbox
- s, p, o에 대한 cls
- spo(=triplet)에 대한 cls

- sum query에 대해서도 s, o에 대한 bbox
- s, p, o에 대한 cls
Composite bipartite matching


Training Loss

Result
