Scene Graph Generation
Scene Graph Generation
들어가며
시각 장면 이해(Visual scene understanding)는 컴퓨터 비전 분야에 있어서 성배와 같았다. 과거 초창기 컴퓨터 비전은 이미지를 보고 단순히 클래스 라벨(Class label) 정도만을 분류하였다. 예를 들어 하나의 이미지에 고양이, 자동차가 있는지 정도만 말하였지만 이후 컴퓨터 비전 기술의 발달로 인해 좀 더 복잡한 태스크를 수행할 수 있었다.
물체의 위치를 알아내는 Localization, 위치와 클래스를 동시에 알아내는 Object detection, 픽셀 단위에서 물체를 라벨링하는 Pixel-level semantic segmentation, 물체마다 독립적인 라벨을 부여하는 Instance segmentation 등 다양한 태스크에 대한 연구가 활발히 진행되었다.
https://cs.stanford.edu/people/ranjaykrishna/sgrl/slides/ranjay.pdf
이러한 연구 방향을 보면 점점 더 일반화되고 고도화되어 인간의 인지 능력에 점점 다가가기 위해 기술이 발전되어가는 것을 알 수 있다. 다양한 State-of-the-art 모델들이 활약을 하였지만 Visual scene understanding는 물체의 localization보다 한층 더 진보된 태스크이다. 앞서 말한 과거의 컴퓨터 비전 태스크의 특징은 disconnected objects에 집중했다는 것이다. 반면 Visual scene understanding을 위해선 더욱 풍부하고 포괄적인 Semantic Knowledge를 요구하게 된다.
예를 들어 다음 사진을 보고 사람이 글로 묘사하면 다음과 같다. 이런 문장들의 요소를 분류해보면 물체(Object), 특성(Attribute), 관계(Relationship)으로 구성되어 있다.
즉 사람은 이런 3가지 요소를 이용하여 시각 인지를 하는 것이다.
What information does language capture? - Objects, Attributes, Relationships, https://cs.stanford.edu/people/ranjaykrishna/sgrl/slides/ranjay.pdf
예를 들어 다음 그림을 보고 3가지 문장으로 표현할 수 있다.
- A llama standing next to a person
- White llama in front of a blue wall
- A huacaya alpaca held by a person who is holding a big ribbon
컴퓨터 비전 연구자들은 이미지의 특성과 object의 관계를 훨씬 더 구조적으로 표현하기 위한 방법으로 2015년도에 Scene Graph(Johnson et al.,“Image retrieval using scene graphs”)를 제안하였다. 이를 통해 물체의 특성(attribute)나 다른 물체와의 관계(relationship)을 통해 보다 상세한 semantics을 나타낼 수 있게 되었다.
이를 Scene graph를 이용한 모델이 시각 장면 이해(Visual scene understanding) 태스크에서 SIFT, GIST 혹은 CNN 등의 모델보다 더 좋은 성능을 낸다는 결과가 나오면서 큰 관심을 끌게 되었다. 이때 Scene Graph Generation(SSG)은 이미지를 보고 Semantic structural Scene Graph를 생성하는 작업을 말한다. 이렇게 만들어진 Scene Graph는 이후 다양한 Down-stream 태스크에서 활용될 수 있다.
Scene Graph 정의
An example of a scene graph, https://arxiv.org/pdf/2005.08045.pdf
앞서 설명한 Scene graph를 엄밀히 정의하자면 한 장면(Sccene)의 Contents를 그래프라는 데이터 구조로 묘사한 Topological representation이라고 말할 수 있다. 그래프 이론의 관점으로 보았을 때 Scene Graph는 방향성이 있는 그래프(Directed graph)이고 Object, attributes, relationship 3종류의 Node를 가진다고 볼 수 있다. 혹은 그래프의 Node는 오직 object와 attributes를 같이 표현하고 Edge를 relationship을 표현할 수 있다. 어느 방식을 취할지는 연구마다 다르다.
이미지, 비디오, 3D mesh 등의 장면이 있을 때 Scene graph의 전체 구성 요소는 다음과 같은 triplet의 집합 RS로 표현된다. 이때 OS는 장면(Scene)에 있는 모든 물체의 집합이고 AS는 모든 특성들의 집합 이다. PS는 관계를 나타내는 서술어(Predicate)의 집합이다.
OS = {o1, ..., on}
AS = {a1,..., an}
RS OS PS (OS AS )
이때 triplet에서 두 개의 Object가 있는데 첫 번째 대상을 Subject라고 표현하고 두 번째 대상을 Object라고 표현하기도 하여 <s-p-o> triplet이라고 말한다.하나의 triplet은 rS, i, j = (oS, i , pS, i, j, oS, j) RS라고 표현할 수 있고 각각의 Object는 semantic label lS, k과 Bounding box bS, k 로 이용하여 oS, k = (lS, k, bS, k ) OS라고 표현할 수 있다.
활용
Scene graph structure and some applications., https://arxiv.org/pdf/2201.00443.pdf
Scene Graph를 이용하여 다양한 태스크에 활용가능하다. 먼저 Image Captioning은 이미지를 보고 자연어로 표현하는 작업이다. 기존에는 RNN이나 LSTM을 사용하였는데 물체간의 모든 관계를 사용할 수 없기 때문에 정확도를 많이 높이기 힘들었다. Scene graph자체에 이미 무엇을 표현해야 할지에 대한 정보를 도출 할 수 있기 때문에 이를 바로 이용할 수 있다. 반대로 문장을 보고 이미지를 만드는 과정을 Image Generation이라고 하는데 여기에도 Scene graph가 활용될 수 있다.
Visual Question Answering(VQA)는 이미지와 자연어로 된 질문을 넣었을 때 대답을 출력하는 작업이다.Scene Graph를 활용한 연구들에서 기존의 VQA 방법보다 성능 향상이 있음을 보여준다. Image Retrieval은 내용을 묘사하는 설명을 보고 데이터베이스에서 이미지들을 뽑아내는 작업을 말하는데 이때 단순한 물체만 뽑아내는 것이 아니라 관계나 특성 또한 구조적으로 포함시켜서 얻어낼 수 있다. Referring Expression은 설명을 보고 이미지를 뽑아낸다는 점에선 Image Retrieval과 유사하지만 인풋 이미지에 대해 묘사와 일치되는 영역만 표시하는 것이다. 이렇듯 다양한 컴퓨터 비전 태스크에 Scene Graph가 핵심적인 중추역할을 할 수 있어서 많은 연구들이 진행되고 있다.
Scene Graph Generation Framework
A basic pipeline for the scene graph generation process, https://arxiv.org/pdf/2005.08045.pdf
앞서 본 Scene graph의 정의에 따라 우리가 찾아야 하는 것은 결국 물체와 물체의 관계이고 딥러닝 모델에서 처리하기 위해선 내부적으로 Feature라는 벡터의 형태가 구축되어야 한다. 그렇기 때문에 우선 물체와 관계자체를 검출하는 작업을 필요로 한다. 이를 위해 RPN(Region proposal network)를 사용하여 물체와 관계의 ROI(Region of Interests)를 잡아내도록 한다. Bounding box를 통하여 검출된 영역만을 이용해 Proposal을 만들고 각각의 Proposal에 해당되는 Feature representation을 계산하도록 한다. 이런 Feature들은 Object, Subject, Predicate에 대한 외형, 공간 정보, 라벨, 깊이, 마스크 정보 등을 사용하여 표현할 수 있다.
이렇게 마련된 Feature들이 결국 그래프의 Node로 표현되어 최초의 Graph를 생성하도록 한다. 이 단계에서 일단 모든 물체끼리 쌍을 이루고 있다고 가정한다. 즉 Complete graph를 형성하도록 하는 것이다. 하지만 이런 초기 그래프는 아직 완벽한 장면내의 맥락을 반영하지 못한 상태이다. 예를 들어 어떤 tiplet <s-p-o>가 있더라도 이와 연결된 주변의 노드들의 정보와 어떠한 의미론적인 의존구조가 있을 수 있다. 단순히 앞서 얻은 Proposal에만 의존하기 보다는 전체적인 시각을 고려해야 하는데 이를 Feature refinement 모듈에서 수행할 수 있다
RNN/LSTM-based SGG models, https://arxiv.org/pdf/2104.01111.pdf
초기 연구에는 Feature refinement없이 단일 CNN으로 처리하는 경우가 많았으나 앞서 말한 이유로 하여금 Global context를 반영하는 매커니즘을 적용하였다. 대표적으로 RNN/LSTM을 사용하여 RoI를 순차적으로 입력하여 정보를 처리하여 Feature refinement를 수행한다.
Scene graph 자체는 그래프 구조를 나타내기 때문에 직관적으로 그래프 연구에서 도출한 결과를 적용하는건 아주 자연스러운 일이다. Graph neural network(GNN)이라고 불리는 분야에선 그래프 데이터를 인공 신경망으로 처리할 수 있게 하였다. 핵심적인 원리는 Message Passing으로써 그래프 상의 노드의 정보가 이웃 노드에게 전달되는 것을 뜻한다. 이는 Graph Convolutional Network(GCN)과 같은 방법을 통해 구현할 수 있다. 여기에 Attention meachanism이 추가적으로 사용되어서 Message Passing을 할 때 중요도를 고려해서 반영시키는 Graph R-CNN과 같은 모델도 제안되었다.
Improved SGG models based on GNN, https://arxiv.org/pdf/2104.01111.pdf
이렇게 하여 최종적인 그래프를 완성한 뒤 노드들의 Feature를 보고 Object와 Relationship의 분류작업을 수행한다. 물체와 물체의 쌍에 대해 Relationship을 찾아내는데 이때 학습 데이터셋에 있는 클래스들로 분류를 시작한다. Loss 함수로는 분류 문제에서 주로 사용되는 Cross-entropy loss를 사용하여서 Object label와 Predicate label을 맞추도록 한다.
흔히 Scene graph generation 문제를 두 가지 접근법으로 바라 볼 수 있는데 첫번째는 Bottom-up 접근법이다. 이는 다음과 같이 3개의 likelihood로 구성된 통계 모델링으로 표현가능하다.
P(SG|I) = P(B|I) P(O|B,I) P(R|B,O,I)
여기서 P(B|I)는 Bounding Box 예측 모델, P(O|B, I)는 물체 예측 모델 그리고 P(R | B, O, I)는 관계 예측 모델이다.
순차적으로 Bounding box부터 물체, 관계식으로 예측하게 되고 앞서 설명한 방법을 식으로 표현한 것이다.
반면에 Top-down 혹은 Joint Prediction이라는 접근법은 다음과 같은 두 개의 요소로 표현할 수 있다.
P(SG|I) = P(B|I) P(O, R | B, I)
물체의 영역 Proposal인 Bounding box까지만 보고 물체와 그들의 관계를 동시에 추론하는 방식을 뜻한다.
Spatio-Temporal Scene Graph Generation
풀고자 하는 문제의 상황에 따라 Scene graph를 처리하는 방법론의 추가적인 변화가 있을 수 있다. 지금까진 2차원 단일 이미지(Still image)으로 설명하였는데 가령 데이터의 형태가 비디오인 경우 시간적 특성이 더해지게 된다. 이 덕분에 물체간의 시각적 상호작용(Visual interaction)을 인식하는데 좀 더 적합한 특징을 제공할 수 있다.
https://news.sphp.com/wellness/livesmart-remember-safe-lifting-techniques-for-better-health/
예를 들어 위의 그림에서 만약 가운데의 단 하나의 이미지를 보고 어떤 종류의 <s-p-o> triplet일지 분류할 수 있을까? <man, lift up, box>가 정답일지 아니면 <man, put down, box>가 정답인지 알기 위해서 시간축상의 관측을 필요로한다.
따라서 단일 이미지보다 훨씬 더 어려운 문제에 속하며 시간에 따라 상관 관계를 가지는 관계들을 잡아내기 위해 Object detection과 Multi-object tracking 기법을 모두 사용한다.
가령 비디오를 오버랩을 포함하여 segment로 분리한 뒤 각각에 대해서 Relation Proposal과 Refinement를 수행한다. 그 뒤 짧은 기간에 대해 예측한 관계들을 병합시키면서 최종적인 <s-p-o> triplet을 얻게 된다.
Typical pipeline of existing segment-based video visual relation detection methods, Beyond Short-Term Snippet, Chenchen Liu et al.
아직까진 비디오에 대해선 성능이 낮은 편인데 그 이유는 카메라의 흔들림, 물체의 가려짐 등에 의한 변수들로 인해 Object localization이 힘들어 지기 때문이다.
3D Scene Graph Generation
시간 축이 아닌 공간상의 한 차원을 늘려서 3차원 공간에서의 모양, 위치 정보를 얻고 다양한 컴퓨터 비전 태스크를 수행할 때 3D SGG를 고려해볼 수 있을 것이다. 3D 정보를 표현하기 위해서 Multiple views, Point clouds, Voxels 등을 사용하여 이를 인풋으로 넣게 된다. 3D Scene graph를 최초로 제안한 연구(Visual Graphs from Motion)에는 Multiple view를 사용했지만 사실상 2D 이미지를 여러개 사용한 것과 큰 차이가 없었다.
3D Scene Graph, https://arxiv.org/pdf/1910.02527.pdf
Armeni et al.의 연구에선 3D Scene graph를 사용하여 주변 환경 정보를 4개의 레이어(Camera, Objects, Rooms, Building)로 표현하였고 2D 파노라마에 비해 성능이 더 높게 나오는 것을 확인하였다. Johanna Wald et al.은 3DSSG 데이터셋을 공개함과 동시에 PointNet과 GCN을 활용한 방법을 통해 3D 비전 태스크에 효과적임을 보여준다.
이런 연구가 지속되면 로봇 agent가 실내의 3D 환경을 인식할 수 있게끔 하는 인공지능과 사람의 인식 능력의 갭을 더욱 줄일 수 있는데 Scene graph가 기여할 수 있을 것으로 보인다. 아직까진 통일된 3D Scene graph 표현이 없으나 전 세계의 연구자들이 같은 방침으로 접근할 수 있도록 하기 위해 제대로된 3차원 semantic 정보를 포함하는 데이터 구조가 마련되어야 할 것으로 보인다.
데이터셋
다른 컴퓨터 비전 태스크와 마찬가지로 SGG에는 다량의 annotated data를 필요로 한다. Scene Graph Dataset는 최초의 Real-world scene graph 데이터셋이다. MSCOCO와 YFCC100m에서 공통되는 이미지 5,000장으로 구성하였고 사람이 직접 만든 scene graph가 들어 있다. VRD 또한 5,000장의 이미지로 구성되어 있고 SGG 태스크의 벤치마크로 사용되기 위해 구축되었다. Scene Graph Dataset은 object 당 평균 2.3개의 predicates가 있지만 VRD는 object당 평균 24.25개의 predicates를 가진다.
이 분야에서 가장 대표적으로 사용되는 공개 데이터셋은 Visual Genome이다. 가장 다양한 object categories와 relation을 포함하고 있다. VRD는 컴퓨터 비전 전문가가 만든 반면에 Visual Genome을 많은 수의 데이터를 처리하기 위해 일반인 annotator가 참가해서 퀄리티가 떨어지는 단점이 있다. 그래서 연구자들마다 Visual Genome을 그대로 사용하기 보다는 나름대로 개선한 자신들만의 버전을 사용한다. 예를 들어 VrR-VG는 Visual Genome에서 중복되거나 시각적으로 덜 중요한 관계를 필터링하였다.
Visual Genome 홈페이지에선 샘플을 볼 수 있다., https://visualgenome.org/
단일 이미지 데이터셋 이외에도 비디오를 기초로 하는 Action Genome 데이터셋도 존재한다. 기존의 비디오 데이터셋은 다량의 클립으로 구성하긴 했지만 물체와 관계가 어떻게 변화하는지에 대해 주목하진 않았다.
즉 단일 사건으로만 분류하였고 시간에 따라 관계가 어떻게 변하는지는 나타내지 않았다. Action Genome에선 시간에 따라 변하는 관계 또한 포함하기 때문에 Spatio-temporal SGG를 연구하는데 사용될 수 있다.
이외에도 ImageNet-VidVRD라는 데이터셋 또한 존재한다.
Dataset | object | bbox | relationship | triplet | images/frames/sizes |
Scene Graph | 266 | 69,009 | 68 | 109,535 | 5,000 |
VRD | 100 | - | 70 | 37,993 | 5,000 |
Visual Genome | 33,877 | 3,843,636 | 40,480 | 2,347,187 | 108,077 |
VG150 | 150 | 739,000 | 50 | 413,000 | 88,000 |
VrR-VG | 1,600 | 282,460 | 117 | 203,375 | 58,983 |
Action Genome | 35 | 476,299 | 25 | 1,715,568 | 234,253 |
3DSSG | 534 | 48,000 | 40 | 544,000 | 1482 scans |
Scene Graph dataset statistics, https://arxiv.org/pdf/2201.00443.pdf
데이터셋들이 구축되어 공개적으로 사용할 수 있는 것은 환영할 일이지만 이런 데이터셋에는 문제점이 있다. 데이터셋의 구성이 Long-tail distribution을 따르기 때문에 불균등하다는 것이다.
다시말해 특정한 Predicate는 한정된 샘플에만 존재해서 자주 나타나는 Predicate보다 그 빈도가 훨씬 적다는 것을 말한다.
예를 들어 “on”이라는 관계는 “standing on”이라는 관계보다 더 일반적으로 많이 나오고 덜 구체화되어 아무래도 대부분의 데이터셋에서 존재할 것이다. 이것의 문제점은 만약 모델이 “on” 이라는 관계에 더 많이 학습되어서 편향된 그래프를 만들 수 있다는 것이다. 이를 Biased Scene Graph Generation이라고 부른다. 이 때문에 정확한 장면 묘사 능력이 떨어질 수 있다.
가령 Visual Genome의 경우 이런 문제가 심해서 연구자들은 상위 50개의 관계만 추려내서 이용하기도 한다. 이 경우 무려 관계의 98%를 사용하지 않게 된다.
long tail (left) of infrequent relationships, https://arxiv.org/pdf/2005.08045.pdf
평가방법
SGG를 수행하는 모델의 성능을 평가하는 태스크는 크게 4가지로 구성된다.
- Predicate Classification(PredCls) : 검출한 물체들에 대한 모든 pairwise relationship의 predicate를 예측한다. 다른 요소는 무시하고 predicate classifcaition의 성능만 검증한다.
- Scene Graph Classification(SGCls) : 검출한 물체들이 있을 때 모든 pairwise relationship에 대해서 predicate와 object, subject의 categories를 예측한다.
- Phrase Detection(PhrDets) : (s-p-o)의 label을 출력하고 전체 relationship을 하나의 bbox로 localize한다. 이때 ground truth box와 overlap이 0.5이상이어야 한다.
- Scene Graph Generation(SGGen) : object를 detection하는 것과 동시에 검출된 object의 pair간의 predicate를 예측한다. Object는 gt bbox와 0.5이상 IoU가 있을 때 성공적으로 검출한 것으로 본다.
일반적인 분류작업에서 평가지표에는 정확도(Accuracy), 정밀도(Precision) 등이 있으나 SGG에서 재현율(Recall)이 de-facto standard로 자리잡았다.
왜냐하면 불균등 데이터셋인 점을 감안해서 성능을 지표화하기엔 정확도가 완벽하지 않기 때문이다.
Recall@k라고 표현하는데 예측으로 나온 <s, p, o>의 Top-k개와 실제값을 비교하여 계산하게 된다. k는 보통 50, 100을 사용한다.
Recall@k = |Topk GT ||GT|
예를 들어 다음과 같은 이미지가 있을 때 정답에 해당하는 triplet annotation이 7개가 있다고 하자. 그리고 모델은 100가지 예측값을 내놓고 각각의 Confidence score 순으로 랭킹을 내도록 한다.
이때, 7가지 정답 중 4번째 예측 결과에서 맞추었으므로 1/7=14%로 계산된다.
Evaluation, Standard recall metric, https://www.youtube.com/watch?v=tMLj9TcLgPg
이 지표 또한 문제점을 가지고 있는데 자주 나오는 <s-p-o> triplet을 모델이 내놓기만 한다면 Recall@k는 높게 나온다는 것이다. 가령 위에 서 <man, wearing, shirt> 라던지 <cup, on, table>은 여러 이미지에서 자주 등장하는 것이고 이런 결과만 내놓아도 성능을 과대평가할 가능성이 높아진다는 것이 단점이다.
Recall@k을 기준으로 모델 별 성능을 비교하면 다음과 같다. PredCls, SGCls, SGGen으로 갈수록 더 복잡한 태스크이기 때문에 재현율이 떨어지는 것을 확인할 수 있다.
A visual representation for a performance comparison between the various SGG techniques with graph constraint, https://arxiv.org/pdf/2005.08045.pdf
연구방향과 맺음말
수 백편의 Scene graph 연구들이 계속해서 발표되는 것을 보면 컴퓨터 비전 커뮤니티의 Scene graph에 대한 관심이 매우 높다는 것을 알 수 있다. 앞으로의 연구방향과 개선되고 있는 점들을 살펴보면 다음과 같다.
먼저 더 나은 평가지표의 도입을 말할 수 있다. Recall@k보다는 평균을 고려한 mean Recall@k 혹은 데이터의 분포에 따른 가중치를 반영한 wRecall@K 을 사용하거나 SGGen+라는 지표도 사용된다.
SGGen+는 무조건 triplet만 정답을 처리하는 것이 아니라 Object나 Predicate만 맞추어서 부분 점수를 준다는 개념이다.
예를 들어 <boy-wearing-shoes>에서 boy가 man이라면 SGGen에성 0점으로 처리하지만 SGGen+에서는 0점이 아니게 된다.
또한 근본적으로 triplet의 종류가 너무 많아서 불가피하게도 long-tail 분포를 띄는 데이터셋의 문제이기 때문에 이를 해결하기 위해 Meta-learning을 도입해서 해결하는 연구들이 많이 등장하였다.
즉 Zero-shot, one-shot, Few-shot 시나리오에서 모델의 학습 성능을 높이고자 하는 것이다.
Loss 함수도 개선되어 성능 향상에 기여한다.
일반적인 Cross entropy loss 대신에 Graphical Contrastive loss는 같은 종류의 여러 개 물체를 모델이 혼동을 일으키고 여러 개의 <s-p-o> triplet에 대해 같은 predicate으로 인식하는 문제를 해결하기 위해 제안되었다.
그리고 Density-normalized edge loss는 불균등하게 편향되는 예측값을 줄여 빈도가 작은 tripliet에 대한 모델의 일반화 능력을 향상시켰다.
Scene graph generation이 직면하는 또 다른 문제는 학습 효율이 낮다는 것이다. 검출된 물체의 모든 순서 쌍을 고려해야 하기 때문에 계산해야 할 Relationship의 양이 O(n2)이다.
이 때문에 효율적으로 Region Proposal을 하거나 tail에 해당되는 관계에 좀 더 attention을 주려는 연구가 많이 있다.
그리고 더 큰 스케일에서 관계를 포착할 수 있어야 할 것이다.
현재 Scene graph는 공간적 거리가 가까운 경우에 의존하는데 멀리 떨어진 사람과 사람의 상호작용을 확장하다 보면 사회적 관계를 잡아내는데에도 응용 될 수 있기 때문이다.
또한 향후에 Online learning, Active learning을 결합하여 현재 SGG 모델들이 불충분한 데이터셋에서 학습되어지는 문제를 해결할 수 있을 것으로 보인다.
분명히 Scene graph의 표현력이 뛰어남에도 불구하고 한정적인 상황에서 연구가 진행되다 보니 잠재력을 완벽히 끌어올리지 못하고 있다. 아직까지 완벽히 성숙되지 하지 못하였지만 역으로 생각하면 그 만큼 기회도 많은 분야이다. 해결되어야 과제와 씨름하여 좋은 솔루션을 낼 수 있다면 앞으로 컴퓨터 비전 분야에서 크게 앞서 나갈 수 있을 것이라고 기대되어진다.
참조
1. https://cs.stanford.edu/people/ranjaykrishna/sgrl/slides/ranjay.pdf
2. https://arxiv.org/pdf/2005.08045.pdf
3. https://arxiv.org/pdf/2104.01111.pdf
4. https://arxiv.org/pdf/2201.00443.pdf
5. https://www.youtube.com/watch?v=tMLj9TcLgPg
About Author
Taeyeop Kim
Pro, AI 1팀