본문 바로가기
Paper Review/Computer Vision

[CVPR 2023] Devil's on the Edges : Selective Quad Attention for Scene Graph Generation

by TaekGeun 2024. 1. 16.

Before Review

제가 KCCV 2023에 참석하면서 알게 된 논문입니다. 그전에도 알고 있긴 했지만 구체적인 내용은 몰랐고 이번 KCCV 다녀오면서 저자에게 직접 설명을 들으면서 궁금한 점도 물어보고 했던 논문입니다.

 

확실히 한국인이 논문 저자면 영어라도 뭔가 더 친숙하게 잘 읽히는 것 같습니다.

 

논문의 내용 자체는 어렵지 않지만 Scene Graph Generation이라는 task 자체는 처음 리뷰 하다 보니 저의 설명이 조금 부족할 수 있다는 점 먼저 말씀드립니다.

 

리뷰 시작하도록 하겠습니다.

Preliminaries

Multi Head Attention

Multi Head Attention(이하 MHA)은 [2017 NIPS] Attention is All you Need 논문에서 제안된 구조로 말 그대로 하나의 Attention Head를 사용하는 것이 아니라 여러 개의 Attention Head를 사용하는 것을 의미합니다.

 

여러 개의 Attention Head를 사용하는 것은 Attention을 수행할 수 있는 Learnable Matrix를 다양하게 가져가고 이를 통해 더욱 풍부한 표현력을 학습할 수 있음을 의미합니다. 또 다르게 해석하면 정보를 이해하는 관점을 다양하게 가져가겠다는 의미입니다. 하나의 Head가 하나의 관점을 부여한다면 여러 개 Head가 결국 여러 개의 관점을 제공하는 것이죠.

 

아래에서 사용하는 그림은 The Illustrated Transformer에서 가져왔습니다.

 

Head#0과 Head#1은 서로 다른 Embedding Matrix로 구성되어 있습니다. 위의 예시는 2개를 사용하고 있지만 Transformer 논문에서 default 값은 8개로 사용합니다.

 

이렇게 하나의 헤드마다 하나의 self-attention이 적용된 output이 생성됩니다. 이를 모두 concat 해주고 또 learnable matrix를 곱해주어 원래의 입력과 차원을 맞춰줍니다.

 

그래서 이를 시각화해서 표현을 해보자면 it라는 단어에 대해서 attention을 계산할 때

  • 첫 번째 Head는 The animal didn't cross에 집중하고
  • 두 번째 Head는 it was too tired에 집중하고 있습니다.

이렇게 MHA는 집중하는 부분에 대한 관점을 더욱 풍부하게 가져갈 수 있도록 해주어 더욱 효과적인 attention을 가능하게 만든 구조라고 보시면 됩니다.

Introduction

Scene Graph Generation은 이미지를 설명하는 그래프를 생성하는 작업입니다. 그래프라 함은 node와 edge로 정의가 될 수 있는데 이미지를 설명하는 그래프에서는 node가 object가 되고 edge가 이러한 object들 간의 relation을 나타내게 됩니다.

 

이러한 Scene Graph는 이미지의 의미론적 구조에 대한 높은 레벨의 reasoning을 요구로 하는 task입니다. 특히 Scene Graph를 학습하는 과정에서 발생하는 representation을 이용해 다양한 vision task (Visual Question Answering, Image Captioning, Image Retrieval...)에서 Graph 구조가 활용되고 있습니다.

 

이미지를 이해하는 과정에서 중요한 역할을 하다 보니 computer vision 연구 커뮤니티에서 요즘 활발하게 연구가 되고 있는 추세입니다. 연구가 많이 이루어지고 있는 상황이지만, 아직 practical usage 까지는 어려운 상황이라고 합니다.

 

다양한 어려움이 존재하고 있지만 저자가 특히 주목하고 있는 부분은 바로 irrelevant relation이라고 하네요.

 

위의 그림을 한번 주목해서 살펴보도록 하겠습니다.

 

(a) Ground-truth scene graph에서는 4개의 edge가 존재하고 있습니다. 이 장면을 설명하는 relation은 4개로 정의된다는 것입니다.

 

(b) Fully-connected scene graph는 무슨 상황이냐면 모든 object 간의 완전한 연결을 가정하고 있는 상황입니다. 학습이 일단 이러한 완전한 연결을 가정하고 신경망을 학습시켜서 실제 의미 있는 연결만 살리는 방향으로 이루어지는데, 이는 노이즈 할 수 있겠죠.

 

기존의 연구들이 Fully connected scene graph에서 출발하여 학습이 되었는데 실제로 ground truth edge는 굉장히 sparse 합니다. 결국 이러한 Gap을 줄이는 것이 본 논문의 아이디어라고 보시면 됩니다.

 

저자는 이러한 이슈를 해결하기 위해 Selective QUad ATtention Network (이하 SQUAT..!!!)를 제안합니다.

 

SQUAT는 두 가지 모듈로 구성되어 있습니다.

  • Edge Selection Module : Scene Graph를 생성할 때 contextual reasoning을 방해하는 irrelevant object pair를 제거하는 역할을 합니다. 간단하게 설명하면 edge 정보를 토대로 이 relation이 의미가 있는지 없는지 예측하는 모듈이라 보시면 됩니다.
  • The Quad Attention Module : Scene Graph를 생성하기 위해서 가장 중요한 것은 edge 정보입니다. Edge 정보가 결국 의미론적 정보를 담당하기 때문에 올바른 표현력을 가져야 제대로 된 그래프를 생성할 수 있겠죠. 이러한 edge 정보를 update 해주기 위해 많은 연구에서 attention 기법(edge-to-edge, node-to-node)을 사용해주고 있습니다. 본 논문에서는 E2E, N2N 뿐만 아니라 node-to-edge, edge-to-node와 같은 cross attention을 활용하여 contextual information을 더욱 잘 capture 할 수 있는 구조를 제안합니다.

 

이렇게 두 가지 모듈을 통해 SQUAT는 Visual Genome, Open Images v6 benchmarks에서 state-of-the art를 달성하며 특히 SGDet setting(가장 현실적이고 어려운)에서도 주목할만한 개선 정도를 보여준다고 합니다.

 

논문에 대한 간단한 설명은 여기서 마치고 이제 제안하는 방법론에 대해서 살펴보도록 하겠습니다.

Problem Definition

저 혼자 읽었을 때는 읽지 않고 넘어갔지만 X-Review에는 처음으로 등장하는 주제이다 보니 간단하게 한번 짚고 넘어가도록 하겠습니다.

 

결국 Scene Graph Generation의 목적은 이미지 ($ I $가 주어지면 이를 설명하는 graph ($ G=(O, R)$)을 생성하는 것이죠. 여기서 $ O $는 object 들의 집합이며 $ R $는 relation 들의 집합입니다.

  • 임의의 객체 $ o_{i} \in O $는 객체를 나타내는 bounding box의 좌표인 $ b_{i} \in [0,1]^{4}$와 class label인 $ c_{i} \in C $로 구성되어 $ o_{i}=(b_{i}, c_{i})$로 정의됩니다.
  • 임의의 관계 $ r_{k} \in R $는 subject $ o_{i} \in O $와 object $ o_{j} \in O $ 그리고 그들의 관계를 나타내는 predicate label $ p_{ij} \in P $로 구성되는 triplet : $ r_{k}=(o_{i}, o_{j}, p_{ij})$으로 정의됩니다.

Selective Quad Attention Networks

 

저자는 의미론적으로 유용한 scene graph를 생성하기 위해 세 가지 component로 구성된 SQUAT를 제안합니다.

Node detection for object candidates

이미지 $ I $가 주어지면 pre-trained object detector Faster R-CNN을 사용하여 object bounding box와 그들의 class label을 추출합니다.

 

결국 Faster R-CNN을 통해 임의의 객체 $ o_{i}$에 대해서 bounding box 좌표 $ b_{i} \in [0,1]^{4}$와 visual feature $ v_{i} \in \mathbb {R}^{d_{v}}$에 대한 정보를 추출할 수 있겠죠.

 

이때 그래프를 구축할 수 있게 node를 만드는 방법은 간단합니다.

 

box좌표와 visual feature를 각각 embedding후 concat 하고 다시 embedding 시키는 것입니다.

 

이때 $ W_{o}$, $ W_{v}$, $ W_{g}$는 linear projection matrix라 보시면 됩니다.

그리고 edge feature는 이러한 node feature를 concat 하고 embedding 시킨 형태로 사용해 주곤 합니다.

 

결국 Faster RCNN으로부터 추출한 object box와 visual feature를 토대로 concat과 linear embedding을 통해 node와 edge feature를 정의해주고 있습니다.

Edge Selection for relevant object pairs

Node feature $ N $와 edge feature $ E $들이 attentive message passing을 통해서 업데이트되겠지만 대다수의 irrelevant edge들이 attention process를 방해할 수 있습니다.

 

따라서 저자는 존재하지 않거나 잘못 관계를 예측한 invalid edge를 Quad Attention 직전에 pruning 해주는 방법을 제안합니다. 방법은 굉장히 간단합니다. 임의의 node $ i $, $ j $를 연결해 주는 edge feature $ f_{ij}$를 입력으로 받아서 간단한 MLP에 태워서 relatedness score를 계산하는 것입니다.

 

그리고 relatedness score에서 상위 top-p%에 해당하는 edge만을 살려서 Quad Attention Module로 넘겨주는 것이죠.

 

그럼 학습은 어떻게 진행이 되냐면 이진 분류를 통해 학습이 진행됩니다. 우리가 relation 정보에 대해서는 label이 있으니 edge 들마다 relation이 존재하는지 존재하지 않는지를 사전에 알 수 있습니다.

 

그리고 edge마다 MLP를 태워서 이 edge가 원래 특정한 relation이 있는 edge였다면 1, 아니라면 0 이런 식으로 BCE Loss를 통해서 학습을 시키고 Sigmoid 처리된 가장 끝단의 score를 relatedness score로 사용해 주는 구조입니다.

 

저자는 세 가지의 edge selection 모듈 : $\text {ESM}^{Q}, \text {ESM}^{N2E}, \text {ESM}^{E2E}$을 사용합니다.

 

목적이 각각 조금 다른 selection module입니다. $\text {ESM}^{Q}$는 Quad Attention 과정에서 Query로써 사용할 edge들을 필터링하기 위한 모듈이며 비슷하게 $\text {ESM}^{N2E}, \text {ESM}^{E2E}$들은 Quad Attention 과정에서 key, value를 담당해 줄 node와 edge들을 필터링하기 위한 모듈입니다.

 

각각 목적이 조금씩 다르기에 당연히 다른 MLP를 사용합니다.

Quad attention for relationship prediction

앞서 설명했지만 Quad Attention은 N2N, E2E, N2E, E2N와 같이 Node와 Edge 간의 모든 맥락을 고려하는 attention 방식이라 했습니다. 전체적인 구조는 Multi-Head Attention(MHA)과 동일합니다.

 

위의 수식은 MHA를 나타내는 수식입니다. 변형되는 부분 없이 그대로 사용해주고 있네요.

 

이러한 MHA 연산과 Transformer decoder의 구조를 그대로 차용하여 Quad Attention을 제안해 주게 됩니다. Transformer decoder처럼 $ t $ 번째 Quad Attention Layer는 $ t-1 $ 번째 Edge feature $ E_{t-1}$과 Node feature $ N_{t-1}$를 입력으로 받고 self-attention을 먼저 진행합니다.

 

이때 Edge 같은 경우는 모든 possible edge feature를 update 해주는 것이 아니라 $\text {ESM}^{Q}$로부터 추출된 edge feature $ E_{t-1}^{Q}$만을 업데이트해 줍니다.

 

위의 수식은 Node feature $ N_{t-1}$의 self attention 된 $ G_{t}$와 필터링된 Edge feature $ E^{Q}_{t-1}$의 self attention 된 $ H^{Q}_{t}$를 나타내주고 있습니다.

 

다음으로 N2E, E2E attention을 위한 key-value edge feature들을 정의해 주기 위해 아래와 같은 연산을 취해줍니다.

  • $\mathcal {H}_{t}=\mathcal {H}_{t}^{Q}\cup (\mathcal {E}-\mathcal {E}^{Q})$

Node feature $ N_{t-1}$를 가지고 self attention 된 $ G_{t}$는 다시금 N2N, N2E attention을 통해서 갱신이 되고 있으며

 

Edge feature $ E_{t-1}$를 가지고 self attention 된 $ H^{Q}_{t}$는 E2N, E2E attention을 통해서 갱신이 되고 있습니다.

 

마지막으로 $ G'_{t}$와 $ H_{t}^{Q'}$는 MLP와 residual connection 그리고 Layer Normalization을 통해서 Quad Attention이 마무리 되게 됩니다.

 

전체적인 그림은 위와 같습니다

Training Objective

SQUAT를 학습시키기 위해서는 두 가지 loss 함수를 사용해주고 있습니다.

 

우선 SGG에서 사용하는 가장 기본적인 predicate classification loss입니다. object $ i , j $ 간의 관계를 나타내는 ground truth와 비교하여 올바르게 관계 카테고리 정보를 예측했는지 보는 것이죠.

 

다음으로는 Edge Selection Module을 학습시키기 위한 Loss입니다. 여기서 라벨이 $\hat {s}_{ij}$인데 이는 binray indicator로 두 object $ i , j $ 간의 관계가 있는지 없는지를 나타내는 값입니다.

 

여기서 $\mathcal {L}_{PCE}$로 발생하는 gradient는 ESM 학습에 관여하지 않게 됩니다. 왜냐하면 relatedness score를 바탕으로 상위 p%의 edge만을 hard thresholding 하기 때문에 미분이 불가능해져 gradient가 끊기는 것이죠.

 

따라서 Edge Selection Module의 학습은 $\mathcal {L}_{ESM}^{a}$로만 이루어지게 됩니다.

Experiments

Comparison with state-of-the-art models

 

Visual Genome이라는 데이터 셋에서 제안하는 SQUAT가 모든 지표에서 좋은 성능을 보여주고 있습니다. 특히 SGDet mR@100 지표에서 3.9라는 큰 차이로 개선 정도를 보여주고 있는 것은 인상 깊다고 저자가 밝히고 있습니다.

 

이러한 이유가 SGDet 세팅에서는 다른 세팅에 비해 detected object 끼리의 invalid pair가 더 많은 상황이라 다른 연구들은 이러한 문제를 해결할 방법이 없었지만 SQUAT는 ESM을 통해 이러한 문제를 해결할 수 있어 좋은 성능을 보여준다고 합니다.

 

OpenImages v6 dataset에서는 모든 부분에서 sota는 아니지만 비견할만한 성능을 보여주고 있습니다. 이 데이터 셋의 특징은 Visual Genome에 비해 더 적은 object와 relation이 존재하기 때문에 ESM이 그다지 효과적으로 작용하지 못했다고 합니다.

Ablation Study

Model variants on edge selection

 

우선 Quad Attention을 수행함에 있어 Edge Selection을 제외했을 때를 가정하고 실험하고 있습니다. Q, E2E, N2E에 대한 Edge Selection을 모두 하지 않았을 때 성능이 SGDet mR@100 기준에서 16.47 -> 15.00으로 하락하고 있습니다.

 

SGG 분야를 잘 모르다 보니 drop이 많이 일어나는 것인지는 잘 모르겠습니다.

 

Model variants on quad attention

 

Quad Attention에 대한 ablation입니다. 결과적으론 다 적용했을 때 가장 좋은 성능을 보여주고 있습니다.

 

한 가지 알게 된 것이 SGG 과정에서는 node feature 보다는 edge feature가 더 중요하게 작용하는 듯합니다.

 

Edge feature에 대한 attention을 다 빼버리면 성능 drop이 크게 일어나는 반면, 하나라도 포함을 시키면 성능이 많이 올라가는 것을 보여 SGG의 핵심은 edge에 있는 것 같습니다.

Conclusions

Scene Graph Generation이라는 연구 분야도 참으로 흥미롭게 느껴집니다.

 

아직 challenging 한 포인트도 많아 보이고요.

 

리뷰 읽어주셔서 감사합니다.