📑 논문

논문 | Composite Relationship Fields with Transformers for Scene Graph Generation (WACV 2023)

노바깅 2023. 1. 16. 00:45

컨셉

  SGG task를 위한 네트워크에는 크게 2가지 방식이 있다. object detector를 기반으로 feature를 추출하는 top-down 방식과 object들과 그 사이의 relation을 동시에 탐지하는 bottom-up 방식이 존재한다. (내 생각엔, top-down 방식이 two-stage, bottom-up 방식이 one-stage인 것 같다.)

 

 SGG task는 보통 VQA, Image Captioning과 같은 다른 task를 위한 수단으로 많이 활용된다. 하지만 기존의 top-down 방식은 OD을 먼저 진행해야 하고, OD로 detection된 객체들 사이의 relation을 예측해야하기 때문에 (오브젝트가 N개 존재한다면, N(N-1) 개의 경우를 고려해야함) inference time이 오래걸릴 수 밖에 없다. 그래서 이를 완화하기 위해 bottom-up 방식이 많이 연구되고 있지만, 아직 top-down 방식에 비해서는 성능이 많이 부족하다.

 

 subject와 object를 알면 그 사이에 어떤 관계가 있는지 높은 확률로 예측할 수 있다. 이런 correlation을 top-down 방식에서는 활용할 수 있지만, bottom-up에서는 object들과 relation을 동시에 추론하기 때문에 활용할 수 없다. 대신, bottom-up 방식은 context 정보를 활용할 수 있다. 보통은 이를 위해서 CNN을 활용하는데 이 때 object와 subject 사이의 거리가 멀면 정보를 잘 포착하기 어려워 효과가 떨어진다.

 

 이 논문에서는 bottom-up 방식의 SGG 네트워크를 소개하고 있으며, 모든 오브젝트 사이의 relation을 예측해야하는 top-down과는 다르게 Composite Relationship Fields를 활용해서 object 사이의 relation을 표현한다. 또한 context 정보를 활용하기 위해 CNN이 아닌 Transformer를 활용하여 object와 subject 사이의 거리가 멀더라도 잘 포착할 수 있도록 한다.

 


 

Method

 모델은 3개의 모듈로 구성되어 있다. 백본 네트워크에 이미지(3 x H x W)가 input으로 들어가고, C x H/s x W/s 차원의 feature map $F$를 만들어낸다. 이 feature map은 각 head에 input으로 들어간다. (C는 채널, s는 stride)

  1. feature map을 추출하는 backbone network
  2. object detection head
  3. relationship detection head

 

Object Detection

object detection head에서 사용한다. 백본에서 만들어진 $F$를 input으로 받아서 3개의 output을 뱉는다.

  1. heatmap $\hat{H}^O$: object의 중심과 category를 나타낸다.
  2. center offset
  3. object의 높이와 너비

 

Composite Fields for Relationship Detection

 Pifpaf 라는 논문에 기반한 아이디어인 것 같은데 아래 과정을 통해 위의 그림과 같은 CoRF를 생성한다. relationship head의 feature map의 각 cell에 대해서, cell이 subject와 object 사이에 있다면 1) relationship의 존재 여부 2) 연관된 subject와 object의 위치를 예측한다. 이를 위해서 가능한 각 predicate에 대해서 아래 3가지를 output으로 뱉는다.

  1. confidence score
  2. 각각 subject와 object를 가리키는 2개의 vector
  3. subject와 object의 scale

 따라서, feature map의 각 location $(i, j)$, channel $p$에 대해서 CoRF를 생성한다.

$$ a^p_{ij} = [c, x_s, y_s, x_o, y_o, s_s, s_o]^p_{ij} $$

 $c$는 predicate $p$의 confidence score를 의미하고 $(x_s, y_s), (x_o, y_o)$는 각각 feature map에서의 subject의 상대 위치와 obejct의 상대 위치를 의미한다. $s_s, s_o$ 는 subject와 object의 scale을 의미한다. 결과적으로 relationship head는 $7 \cdot |p|$ 사이즈의 벡터를 만들어낸다.

 

Feature Refinement with Transformers

 더 좋은 feature를 뽑기 위해서, transformer encoder를 활용한다. Multi-head self attention을 통해서 각 cell이 쿼리가 되어 주변 정보를 알 수 있고, 여러 개의 object에 동시에 attend 할 수 있다. 그리고 positional encoding을 통해서 object와 cell 사이의 상대적인 위치 정보도 파악할 수 있다. 또한, 위에서도 언급했듯이 bottom-up 방식에서는 context 정보를 활용하는데 CNN을 이용하는 경우에는 subject와 object 사이의 거리가 멀면 정보를 포착하기 어렵다. 하지만, self-attention은 global 하기 때문에 cell 거리에 상관없이 다 볼 수 있다.

 

Training Supervision

 vectors, offsets, box size and scales는 L1 loss를 통해서 학습한다. confidence heatmap은 modified focal loss로 학습을 한다.

 

Scene Graph Decoding

  1. object detection head가 산출한 feature maps를 가지고 object의 위치를 뽑는다. (top 100 peaks)
    1. 3x3 maxpo 논oling을 진행한 후에 뽑아낸다.
    2. 각 peak에 해당하는 location은 object의 중심 위치를 의미하고 category, confidence score도 나타낸다.
    3. 또한 각 peak의 location에서 offset과 bbox size (높이 및 너비를 아니까)도 구할 수 있다.
  2. relationship detection head가 산출한 CoRF를 가지고 relation을 뽑는다.
    1. confidence score > threshold 인 relation만 추출
    2. detected object가 주어졌을 때 $(x_s, y_s), (x_o, y_o)$와 가장 가까운 object가 무엇인지를 알아내서 어떤 것이 subject고, 어떤 것이 object인지 파악한다.

 

RAF vs. CoRF

 RAF는 FCSGG 논문에서 활용한 방식으로 relationship affinity fileds를 의미한다. 물체가 작아지면, hair와 head처럼 두 가지 object center가 겹칠 수 있다. RAF는 특정 cell을 가리키기 때문에 이런 문제가 발생할 수 있지만, CoRF는 real-value point를 가리키기 때문에 이런 문제가 없다.

 

Experiments

 


 

 

참고 자료