Scene Graph

컴퓨터비전에서 Visual scene understanding의 중요성은 지속적으로 제기되어왔고, 지금까지는 특히 아래의 세 가지 연구(object-centric techniques)에 초점을 맞추어 진행되어 왔습니다.

  • presence(image classification)
  • spatial extent(object detection)
  • pixel-wise spatial extent(semantic segmentation)

하지만 이것만으로는 scene understanding이 충분하다고 보기에는 무리가 있습니다. 따라서 최근에는 단순히 object의 존재 유무, 위치를 아는 것(perception)을 넘어 object의 속성, object와 object간의 관계 등을 추론하고 생각하는 것(cognition)에 대한 연구[1]가 대두되었습니다.

Graph는 이러한 관계를 표현하기 위해서 직관적으로 이해하기 쉬운 구조입니다. 각각의 node를 object 또는 attribute로 보고, edge들을 node끼리의 관계를 규정한다고 생각할 수 있습니다. 이러한 구조를 두고 Scene Graph라고 하는데, 근래에 다음과 같이 보다 높은 추론이 요구되는 연구들에 적용되고 있습니다.

  • Image Captioning
  • Visual Question Answering
  • Image-grounded Dialog

문제는 이러한 Scene Graph를 손수 만들기에는 시간과 비용이 많이 드는 일이고, 따라서 “Scene Graph를 어떻게 효율적으로 추출할까?” 하는 의문을 가지게 됩니다. 방법은 여러가지가 있겠지만 우선 가장 쉽게 떠오르는 아이디어부터 정리해봅시다.

1) 모든 노드간의 관계를 엣지로 모조리 연결한다. (Brute Force)

단순하지만 확실한 방법이 될 수는 있습니다. 노드의 숫자가 적을 때는 문제가 되지 않지만 노드의 숫자가 늘어날수록 기하급수적(\(O(N^2)\))으로 엣지의 숫자가 늘어나게 됩니다. 아무래도 모든 노드를 다 연결하기에는 무리가 있어 보입니다. 그러면 몇개의 노드들에 대해서만 무작위로 관계를 짝지어주는거는 어떨까요?

2) 랜덤하게 샘플링한 엣지들만 고려하는 방법

기존의 scene graph generation 모델들은 이러한 휴리스틱에 의존하는 경향이 컸습니다. 하지만 이는 직관적으로도 굉장히 큰 문제를 안고 있음을 알 수 있습니다. 예를 들어, 이미지 내에 object가 ‘wheel’, ‘car’, ‘building’이 있다고 했을 때 ‘wheel’-‘building’의 관계 보다 ‘wheel’-‘car’의 관계가 당연히 더 일리가 있어 보입니다. 앞선 방법보다는 효율적일 수는 있지만, 역시나 노드간의 관계가 랜덤이 아니기 때문에 논리적으로 타당하다고 보기에는 어려울 듯 합니다.


Scene Graph Generation

Classification에서 부터 Detection, Segmentation, 그리고 최근에는 Captioning, Question Answering 등 Vision과 Language를 결합하는 high-level의 recognition task에 이목이 쏠리고 있습니다. 이러한 고수준의 recognition task를 해결하기 위해서는 단순히 이미지에서 object가 존재하는지, 어디에 위치하는지 정도를 넘어 object가 어떤 속성을 지니는지, object간의 어떤 상호작용이 있는지를 이해해야 합니다. scene graph는 이러한 총체적인 정보들을 graph의 형태로 정의하게 되는데, 어렴풋이 생각해봐도 bounding box, object label, relationship label 등 데이터를 만드는 것이 매우 까다로울것 같습니다. 그래서 등장한 task가 scene graph generation입니다. 다음의 두 논문에서는 Scene Graph Generation에 대해서 눈여겨 볼만한 아이디어를 제시하는데, 이 논문에서도 마찬가지로 아래 두 논문의 아이디어를 차용합니다.

1) Iterative message passing[2]

2) Neural motifs[3]

1

[2] Scene graph generation by iterative message passing

object는 이미지 내에서 bounding box와 label로 표시되고, relationship은 두 개의 bounding box(object-subject) 사이의 directed edge와 predicate(위의 그림에서 빨간색 노드)로 표시됩니다.

먼저 입력 이미지를 RPN(Region Proposal Network)[4]에 입력하면 object region을 얻을 수 있고, proposed region에 있는 object feature들을 Graph Inference 모델에 넣으면 scene graph가 최종적으로 얻어지는 방식입니다.

[2]에서는 전체 graph를 두 개의 sub-graph로 나누어 하나는 object, 하나는 relationship을 추출하고 서로가 반복적으로 message passing을 하는 방식으로 동작합니다.

[3]에서는 scene 내에 빈번하게 나타나는 graph 구조를 motif라는 개념으로 수식화하고, training phase에서 object간의 relation의 출현 분포에 대한 정보(frequency prior)를 이용하여 relationship을 예측합니다. 즉, bounding box \(i\)와 \(j\)가 있을 때, 그 둘 간의 predicate 확률분포를 계산하기 위해서 training phase에서 계산된 object \(o_i\)와 \(o_j\)간의 relationship 확률분포를 이용하자는 아이디어입니다. 그러므로 \(Pr(x_{i->j} \mid o_i, o_j )\)를 계산할 때, 이미지를 보는 것이 아니라 예측한 object label \(o\)를 통해 값을 도출하게 됩니다.


Graph R-CNN

노드를 추출하는 일은 기존의 object detection의 파이프라인을 따라가면 되지만, 노드 간의 관계를 추정하는 일은 생각보다 쉽지 않습니다. 어떻게 하면 이 관계를 효율적으로 추정할 수 있을까요? 우선 개괄적인 파이프라인을 확인해봅시다.

아래는 Graph R-CNN의 동작방식을 간단하게 도식화한 그림입니다.

2

a) Object node extraction: object detection을 통해 먼저 scene 내의 object(노드)에 대한 bounding box를 그리고, 일단 가능한 모든 relationship(엣지)들을 고려합니다. 여기까지는 기존의 object detection과 크게 다르지 않습니다. 다음의 두 단계에서 등장하는 RePNaGCN이 논문에서 가장 중요한 핵심이라고 할 수 있습니다.

b) Relation edge pruning: RPN을 통해 Dense Graph(모든 노드가 이어진 graph)를 얻을 수 있다면, Relation Proposal Network(RePN)은 연결 가능성이 낮은 relationship(엣지)들을 잘라내어 Sparse Graph를 만들어 냅니다. 여기서 relatedness score이 등장하는데, 이 score이 낮으면 pruning을 하는 방식입니다. 이렇게 하면 모든 노드가 모두 연결된 처음 graph들에 비해 듬성듬성하게 연결되어 있는 scene graph 후보군을 만들 수 있습니다.

c) Graph context integration: 앞 단계에서 전달받은 scene graph 후보들(Sparse Graph)에 대해 attentional Graph Convolution Network(aGCN)를 적용하여 graph 전체에 global context를 전달합니다. 또한 각각의 object와 relationship는 인접한 노드들에 의해 업데이트 됩니다. 다른 관점에서 보면 업데이트 과정 자체가 그래프의 global context 정보를 통합하는 것으로도 해석할 수 있습니다. 논문에서는 각 노드에 대한 edge attetion을 예측하는 방식을 사용하는데, attention의 weight에 따라 엣지를 타고 흐르는 정보 흐름을 제어하도록 학습됩니다. 위의 그림에서 엣지의 두께가 attention의 정도를 보여줍니다.

Graph Convolutional Network(GCN)는 [5]에서 제안된 네트워크로, 그래프 형태의 데이터에 대한 복잡한 연산을 작은 단위의 연산으로 쪼개어 계산할 수 있게 합니다. 작은 단위의 연산이라 함은 매 time step마다 각각의 노드에 대한 이웃 노드들에 대한 연산을 말합니다. 그래프의 구조와 각각의 edge strength는 대개 연산이 진행되기 이전에 고정됩니다.

RePN과 aGCN은 각각 다른 논문에서 제안된 Relationship Proposal Network(Rel-PN)[6], Graph Attention Network(GAT)[7]와 유사한 방식으로 동작한다고 합니다. 다만 Rel-PN은 subject, object, predicate를 독립적으로 예측하고 가능한 모든 triplet에 대하여 scoring하는 방식으로 동작하지만, RePN은 생성된 detected object의 조건부 relation을 생성하여 object간의 relationship bias를 학습할 수 있습니다.

다음은 Graph R-CNN의 전체적인 파이프라인입니다.

3

1) RPN(Region Proposal Network)[4]이 먼저 object region을 찾아내면, 2) RePN(Relational Proposal Network)은 찾아진 object region을 node로 간주하고 그 node를 연결하는 edge를 선별하는 역할을 합니다. 3) 마지막으로 aGCN(attentional Graph Convolutional Network)을 적용하면 이웃하는 노드로부터 contextual information을 결합하여 중요도가 높은 edge에 대해서 가중치를 주게 됩니다. 이 과정을 거쳐 최종적으로 Scene Graph를 만들어냅니다.

이 과정을 수식화 하기 전에, 우선 각각의 구성요소들을 아래와 같이 적어봅시다.

  • \(I\): 주어진 이미지
  • \(V\): Vertex(Node); RPN을 통해 찾아진 obejct region
  • \(E\): Edge; object간의 relationship
  • \(O\): Object
  • \(R\): Relationship

여기서 \(P(S = (V, E, O, R) \mid I)\) 를 모델링하는 네트워크를 만들고자 하는데, 이는 앞서 말했던 세 가지 스텝으로 다시 분할할 수 있습니다.

\[P(S|I) = P(V|I) P(E|V, I) P(R, O|V, E, I)\]
  • \(P(V \mid I)\): 주어진 이미지에 대해 Vertex(Node)를 찾아낸다; Object Region Proposal
  • \(P(E \mid V,I)\): 이미지와 Vertex가 주어졌을 때 Edge를 찾아낸다; Relationship Proposal
  • \(P(R,O \mid V,E,I)\): 이미지, Vertex, Edge가 주어졌을 때 Vertex에는 Object를, Edge에는 Relationship을 각각 매칭한다; Graph Labeling

Object Proposal

먼저 Faster R-CNN을 이용하여 주어진 이미지에서 \(n\)개의 object region을 찾아냅니다. \(i\)번째 object region proposal을 수식화하면, 이는 spatial region \(r^O_i = [x_i, y_i, w_i, h_i]\), pooled feature vector \(x^O_i\), 클래스 \(C = \{1, ... , k \}\) 에 대한 추정 분포 \(p^O_i\)을 포함합니다. 이러한 벡터가 \(n\)개가 있기 때문에 앞선 요소들을 모두 \(n\)행의 행렬로 표현할 수 있습니다. 즉, \(R^O \in \mathbb{R}^{n \times 4}, X^O \in \mathbb{R}^{n \times d}, P^O \in \mathbb{R}^{n \times |C|}\)로 나타낼 수 있습니다.

정리하면 전체 \(n\)개의 proposed object region이 있고, 그 중 \(i\)번째 proposed object region은 아래의 요소를 가집니다. (괄호 안은 \(n\)개의 object region proposal에 대한 각 요소의 matrix 표현을 의미합니다.)

  • \(r^O_i = [x_i, y_i, w_i, h_i]\): spatial region (\(R^O \in \mathbb{R}^{n \times 4}\))
  • \(x^O_i\): pooled feature vector (\(X^O \in \mathbb{R}^{n \times d}\))
  • \(p^O_i\): initial estimated label distribution (\(P^O \in \mathbb{R}^{n \times \mid C \mid}\))
  • \(C = \{1, ... , k \}\): class

Relation Proposal Network(RePN)

모든 proposed region에 대하여 짝지을 수 있는 모든 relation을 고려하게 되면 너무나도 많은 relation의 경우의 수가 생겨나고 이는 곧 연산량의 기하급수적인 증가를 의미합니다. 따라서 적절히 가려낼건 가려내고 사용할것만 취하여야 하는데 이를 위한 네트워크가 바로 RePN입니다. 이를 위해 논문에서는 추정 클래스 분포(\(P^O\))를 이용하여 object pair간의 연관성을 추론합니다. 가령, ‘자동차’, ‘나무’, ‘바퀴’ 클래스가 있을 때, ‘자동차’와 ‘바퀴’에 비해 ‘자동차’와 ‘나무’는 상대적으로 연관성이 작을것이라는 직관과도 잘 맞습니다.

이를 수식화하면 \(P^O\)(object classification distribution)가 주어졌을 때, 가능한 모든 object간의 relation은 \(n * (n-1)\)개(방향에 따라 다른 relation으로 간주하기 때문)이며, 한 쌍의 object \(\{p^O_i , p^O_j \mid i \neq j\}\)에 대해 relatedness score \(s_{ij} = f(p^O_i , p^O_j)\)를 매깁니다. 여기서 \(f(\cdot , \cdot)\)는 학습된 relatedness function입니다.

문제는 relatedness function을 어떻게 정의할 것이냐인데, 직관적으로 생각해보면 가능한 모든 쌍의 \([p^O_i, p^O_j]\)를 Multi-layer Perceptron(MLP)의 입력으로 주고 score를 출력으로 받아 비교하면 될거 같습니다. 가능한 이야기지만 처음에 얘기했다시피 \(p^O_i, p^O_j\)의 쌍이 \(O(N^2)\)개이기 때문에 메모리 소모량과 연산량이 너무나도 많아집니다. 이에 대한 해결책으로 논문에서는 아래의 asymmetric kernel function을 제안합니다. 즉, object pair (subject, object)에서 각각의 추정 클래스 분포에 대해 서로 다른 projection function을 사용합니다.

\[f(p^O_i , p^O_j) = <\Phi (p^O_i), \Psi (p^O_j)> , i \neq j\]

여기서 \(\Phi (\cdot)\) 와 \(\Psi (\cdot)\)는 각각 relationship에 대한 subject(주체)와 object(객체)의 projection function을 의미합니다. 이것을 이용하면 score matrix \(S = \{s_{ij} \}^{n \times n}\)를 \(X^O\)(찾아낸 object box의 pooled feature vector)에 대한 단 두 번의 projection과 행렬곱만으로 계산할 수 있게 됩니다. Projection function \(\Phi (\cdot)\) 와 \(\Psi (\cdot)\)를 다른 parameter를 가지는 동일한 구조의 2-layer MLP로 정의하고, score matrix \(S\)의 각 요소에 sigmoid function을 적용하여 0부터 1사이의 score를 가지도록 만듭니다. 그리고는 score를 내림차순으로 정렬하여 상위 \(K\)개의 pair를 선택합니다. 그 후 non-maximum suppression(NMS)을 적용하여 다른 object pair과의 overlap이 큰 object pair들을 걸러냅니다. 각각의 relationship은 한 쌍의 bounding box를 가지고 조합의 순서에 따라 다른 relationship이 되기 때문에, 두 쌍의 object pair \(\{u, v \}, \{p, q \}\)간의 overlap은 다음과 같이 계산하게 됩니다.

\[IoU(\{u, v \}, \{p, q \}) = \frac{I(r^O_u, r^O_p) + I(r^O_v, r^O_q)}{U(r^O_u, r^O_p) + U(r^O_v, r^O_q)}\]

\(I\)는 두 box의 교집합(intersection)을 계산하고, \(U\)는 합집합(Union)을 계산하게 됩니다. 이렇게 필터링 과정을 거치고 남은 \(m\)개의 object pair는 유의미한 relationship \(E\)를 가지는 후보군으로 간주됩니다. 최종적으로 sparse graph \(G = (V, E)\)를 얻을 수 있습니다. 또한 각각의 object pair의 union box에서 feature를 추출함으로써 \(m\)개의 relationship에 대한 visual representation \(X^r = \{x^r_1, ... , x^r_m \}\)을 얻을 수 있습니다.

Attentional GCN(aGCN)

논문에서는 그래프 구조의 contextual information을 통합하기 위한 attentional GCN을 제안합니다. aGCN에 앞서 vanilla GCN[5]의 동작방식을 먼저 간단히 살펴봅시다.

4

[8] Graph Convolutional Networks

그래프에서 \(i\)번째 노드의 representation을 \(z_i \in \mathbb R^d\)라고 하면, 그 인접한 노드들의 representation은 \(\{z_j \mid j \in N(i) \}\)로 표현할 수 있습니다. GCN에서 인접노드의 representation은 먼저 학습된 linear transformation W에 의해 변환되고 미리 정해진 weight \(\alpha\)와 곱해집니다. \(i\)번째 노드의 모든 인접노드에 대해서 똑같이 적용하여 모두 합하고 이를 \(i\)번째 노드와 함께 non-linear function \(\sigma\)(ReLU)에 넣어주면 하나의 layer에 대한 연산이 끝납니다. 앞서 설명한 GCN의 layer-wise propagation을 수식화하면 다음과 같습니다.

\[z_i^{(l+1)} = \sigma (z_i^{(l)} + \sum_{j \in N(i)} \alpha_{ij} W z_j^{(l)} )\]

이를 매트릭스의 형태로 다시 나타내면 node representation \(z\)는 \(Z \in \mathbb R^{d \times T n}\)로 표현되고 아래와 같이 정리할 수 있습니다.

\[z_i^{(l+1)} = \sigma \left(W Z^{(l)} \mathbf{\alpha_i} \right)\]

위의 식에서 \(\alpha_i \in [0, 1]^n\)는 인접하지 않은 노드에 대해서는 0으로 채우고 \(\alpha_{ii} = 1\)으로 둡니다. GCN[5]에서는 그래프의 edge를 알고있는 상태라고 가정하고 계수 벡터 \(\mathbf{\alpha_i}\) 또한 feature의 symmetrically normalized adjacency matrix에 기반하여 미리 설정됩니다.

하지만 우리가 풀고자 하는 문제에서는 계수 벡터 \(\mathbf{\alpha}\)를 미리 정할 수 없습니다. 따라서 논문에서는 \(\mathbf{\alpha}\)를 조정하는 방법 자체를 학습하는 attentional GCN을 제안합니다. 먼저 node feature의 attention을 예측하기 위해 concatenated node feature(가령, 256-d의 node feature 두 개를 512-d로 이어붙인것)로 2-layer MLP를 학습시키고 MLP의 출력으로 나오는 score에 대해 softmax 연산을 함으로써 \(\mathbf{\alpha_i}\)를 구합니다. 아래의 수식은 노드 \(i\)에 대한 attention을 나타냅니다.

\[u_{ij} = w_h^T \sigma \left(W_a [z_i^{(l)}, z_j^{(l)}] \right)\] \[\mathbf{\alpha_i} = softmax(\mathbf{u_i})\]

여기서 \(w_h\)와 \(W_a\)는 2-layer MLP의 학습된 파라미터이고, \([\cdot , \cdot]\)는 concatenation 연산을 의미합니다. 또한 정의에 의해, \(\alpha_{ii} = 1\)이고 \(\alpha_{ij}=0 \forall j \notin N(i)\)이 됩니다. attention은 node feature에 대한 함수이기 때문에 매 iteration마다 attention이 바뀌고, 이는 이후의 iteration에 대해서도 영향을 미치게 됩니다.

앞서 우리는 \(N\)개의 object region과 \(m\)개의 relationship을 이용하여 graph \(G\)를 만들었습니다. 이 Graph는 object, relationship proposal에 해당하는 node와 relation 노드와 연관된 노드를 잇는 edge, 그리고 object와 object를 잇는 skip-connect edge를 포함합니다. skip-connect edge는 두 object node를 바로 잇기 때문에 information flow가 다른 노드를 거치지 않고도 곧바로 흐를 수 있게 됩니다. 이렇게 구성된 graph에 대해 aGCN을 적용함으로써 global context에 기반한 object와 relationship representation의 업데이트가 가능해집니다.

graph는 object-relationship, relationship-subject, object-subject와 같이 여러 유형의 connection을 포함하고, 이는 방향에 따라(subject->relationship, relationship->subject) 다른 의미를 가집니다. 따라서 유형와 방향에 따라 서로 다른 transformation을 학습해야 합니다. 노드 유형 a에서 노드 유형 b로의 linear transformation을 \(W^{ab}\)라고 하고, \(s\)는 subject, \(o\)는 object, \(r\)은 relationship이라고 합시다. 그리고 object feature를 \(Z^O\), relationship feature를 \(Z^r\)이라고 할 때, object 노드 \(i\)의 representation 업데이트는 다음과 같은 형태로 이루어집니다.

\[z_i^O = \sigma \left(W^{skip} Z^o \alpha^{skip} + W^{sr} Z^r \alpha^{sr} + W^{or} Z^{r} \alpha^{or} \right)\]
  • \(W^{skip} Z^o \alpha^{skip}\) : 다른 object로부터 받은 messages
  • \(W^{sr} Z^r \alpha^{sr} + W^{or} Z^{r} \alpha^{or}\) : 인접하는 relationship으로부터 받은 messages

relationship 노드의 업데이트도 비슷하게 아래와 같이 적을 수 있습니다. 여기서도 마찬가지로 \(\alpha_{ii}^{skip}=1\) 입니다.

\[z_i^O = \sigma \left(z_i^r + W^{rs} Z^o \alpha^{rs} + W^{ro} Z^{o} \alpha^{ro} \right)\]
  • \(W^{rs} Z^o \alpha^{rs} + W^{ro} Z^{o} \alpha^{ro}\) : 인접하는 object로부터 받은 messages

\(\alpha\)는 앞에서와 같이 매 iteration마다 계산됩니다.

object와 relationship 노드의 representation \(z\)를 초기화하는 방법은 정해져있지 않기 때문에, 중간 단계의 visual feature representation으로 설정하거나 혹은 class label에 해당하는 pre-softmax output으로 초기화할 수도 있습니다. 논문에서는 visual feature에 해당하는 visual aGCN과 pre-softmax output에 해당하는 semantic aGCN 두 가지 방법을 함께 시도하였고, 이 경우 “마주보는 사람은 대화를 하고 있을것이다”와 같이 낮은 단계의 visual detail과 “자동차는 바퀴가 있다”와 같은 높은 단계의 semantic co-occurance까지도 추론할 수 있었다고 합니다. 또한 semantic aGCN의 attention을 visual aGCN의 attention으로 설정함으로써, visual cue에 기반한 semantic information의 흐름을 효과적으로 조절할 수 있게 됩니다. 뿐만 아니라 이는 그래프로 표현된 실세계의 object와 relationship가 같은 방식으로 다른 object와 상호작용하도록 만듭니다.

Loss Function

앞서 Graph R-CNN의 scene graph generation을 세 개의 sub process로 나누었습니다.

\[P(S|I) = P(V|I) P(E|V, I) P(R, O|V, E, I)\]
  • \(P(V \mid I)\): RPN에서와 같이 proposal에 대해서 binary cross entropy loss를, anchor에 대해서는 regression loss를 사용합니다.
  • \(P(E \mid V, I)\): relation proposal에 대해 binary cross entropy loss를 사용합니다.
  • \(P(R, O \mid V, E, I)\): 두 개의 multi-class cross entropy loss를 각각 object classification, predicate classification에 사용합니다.

SGGen+

scene graph generation의 성능을 평가하는 기존 metric은 <subject, predicate, object> triplet에 대한 recall을 계산하거나(SGGen: Scene Graph Generation) 또는 object localization 정보가 주어졌을 때 object와 predicate에 대한 recall을 계산하는 방식(PredCls: Predicate Classification, PhrCls: Phrase Classification)으로 동작합니다.

  • PredCls: 두 object의 위치 정보가 주어졌을 때, 두 object 사이의 관계를 얼마만큼 잘 예측하는지?
  • PhrCls: 두 object의 위치 정보가 주어졌을 때, 각 object의 클래스와 두 object 사이의 관계를 얼마만큼 잘 예측하는지?
  • SGGen: 주어진 scene에서 object를 얼마만큼 잘 찾아내며, 찾아낸 object간의 관계를 얼마만큼 잘 예측하는지?

하지만 앞선 metric에는 치명적인 단점이 있습니다. 예를 들어, 위의 그림에서 왼쪽 아래의 object를 boy가 아닌 man으로 예측을 했다면, 나머지의 예측이 모두 맞았더라도 전부 오답으로 처리할 수 밖에 없습니다. 가령, 1) standing behind a fire hydrant, 2) near a car, 3) wearing a sweater과 같은 정보들을 정확하게 예측한다고 하더라도 부분점수를 받을 수 없다는 것입니다. 따라서 이러한 triplet-based metric은 작은 실수에도 큰 페널티를 부과한다고 할 수 있습니다.

ground truth가 주어지는 방식은 relationship 예측만을 하기 때문에 이러한 문제를 피해가긴 하지만 역설적이게도 이 때문에 scene graph generation의 성능을 정확히 반영한다고 보기에는 어렵습니다.

따라서 논문에서는 이러한 문제를 해결하기 위해 새로운 metric을 제시하게 됩니다. 기존의 SGGen에서는 triplet 하나만을 사용했지만 업그레이드된 버젼인 SGGen+(Comprehensive Scene Graph Generation)은 triplet뿐만 아니라 두 개의 duplet도 함께 사용합니다.

즉, <object, predicate>, <object, attribute>, <subject, predicate, object>에 대한 recall을 총체적으로 계산하여 앞선 metric이 가지는 문제점들을 보완할 수 있습니다. 아래는 SGGen+를 수식화 한 것입니다.

\[Recall = \frac{C(O) + C(P) + C(T)}{N}\]

\(C\)는 counting operation을 의미하고 각 요소의 의미는 다음과 같습니다.

  • \(C(O)\): 올바르게 localize되고 recognize된 object 노드의 갯수.
  • \(C(P)\): 올바르게 localize되고 recognize된 predicate의 갯수.(predicate의 경우, subject 노드와 object 노드의 위치에 따라 predicate의 위치가 바뀌기 때문에 subject 노드와 object 노드가 올바르게 localize되고 predicate도 올바르게 recognize한 경우에만 갯수를 1로 간주합니다.)
  • \(C(T)\): SGGen과 동일. 올바르게 localize되고 recognize된 triplet의 갯수.
  • \(N\): ground truth 그래프에서 object, predicate, relationship을 모두 합한 갯수.

참고

[1] Johnson, J., Krishna, R., Stark, M., Li, L.J., Shamma, D.A., Bernstein, M., Fei-Fei, L.: Image retrieval using scene graphs. In: CVPR (2015)

[2] Xu, D., Zhu, Y., Choy, C.B., Fei-Fei, L.: Scene graph generation by iterative message passing. In: CVPR (2017)

[3] Zellers, R., Yatskar, M., Thomson, S., Choi, Y.: Neural motifs: Scene graph parsing with global context. In: CVPR (2018)

[4] S. Ren, K. He, R. Girshick, and J. Sun.: Faster R-CNN: Towards real-time object detection with region proposal networks. In: NIPS (2015)

[5] Kipf, T.N., Welling, M.: Semi-supervised classification with graph convolutional networks. In: ICLR (2017)

[6] Zhang, J., Elhoseiny, M., Cohen, S., Chang, W., Elgammal, A.: Relationship proposal networks. In: CVPR (2017)

[7] Velickovic, P., Cucurull, G., Casanova, A., Romero, A., Lio P., Bengio, Y.: Graph attention networks. In: ICLR (2018)

[8] http://tkipf.github.io/graph-convolutional-networks/