Scene Graph
장면 그래프는 추론, 이미지 검색, 로보틱스를 지원하는 객체, 속성, 관계의 시각적 표현입니다.
장면 그래프는 시각적 장면을 구조적으로 표현한 것으로, 노드는 객체를 나타내고 속성은 객체의 특성을 설명하며 레이블이 지정된 에지는 객체 간 관계를 설명합니다. 장면 그래프는 이미지를 연결된 사실로 변환하여 어떤 객체가 나타나는지, 객체의 특성은 무엇인지, 객체가 어떻게 상호작용하는지 보여 줍니다. 컴퓨터 비전에서 이러한 구조는 개별 객체를 인식하는 수준을 넘어 장면을 추론하는 데 도움이 됩니다.
Justin Johnson, Ranjay Krishna와 동료들은 2015년 장면 그래프를 사용한 이미지 검색에 관한 연구에서 이미지에 기반한 현대적 정식화를 제시했습니다. 이 표현에는 남자와 보트 같은 객체, 보트의 흰색이라는 속성, 그리고 "남자가 보트 위에 서 있음"이라는 관계가 포함되어 있어 객체 범주뿐 아니라 관계도 지정하는 검색이 가능했습니다.
객체, 속성, 관계#
각 노드는 객체 인스턴스를 식별합니다. 한 이미지에 있는 두 마리의 말은 범주 레이블이 같더라도 각각 별도의 정체성을 부여받습니다. 바운딩 박스는 각 인스턴스의 위치를 지정하며, 기호로 표현된 객체와 이미지 영역을 연결하는 그라운딩을 제공합니다. 속성은 색상이나 재질과 같은 특성을 해당 인스턴스에 연결합니다. 관계는 두 인스턴스를 술어를 통해 연결하며, 술어는 두 인스턴스 간 연결을 설명하는 레이블입니다. 이렇게 만들어진 주어–술어–목적어 트리플은 하나의 관계 사실을 표현합니다.
Ranjay Krishna와 공동 연구자들이 개발한 Visual Genome 데이터셋에는 구조화된 시각 주석이 포함된 이미지 108,077개가 들어 있습니다. 장면 그래프는 지식 그래프를 이미지별로 표현한 형태입니다. 장면 그래프의 의미적 관계는 객체 간 다중 연결과 비연결 구성 요소를 허용하므로, 이미지 장면 그래프에는 필수 루트 노드가 없습니다.
Visual Genome Python 드라이버의 장면 그래프 예제에는 "말이 굴레를 착용하고 있음"과 "창문이 문 옆에 있음"이 포함됩니다. 이러한 주석은 pip install networkx로 설치하는 NetworkX를 사용해 방향 그래프로 표현할 수 있습니다:
import networkx as nx
graph = nx.MultiDiGraph()
graph.add_node("horse", label="horse")
graph.add_node("bridle", label="bridle")
graph.add_node("window", label="window")
graph.add_node("door", label="door")
graph.add_edge("horse", "bridle", predicate="is wearing")
graph.add_edge("window", "door", predicate="is next to")
for subject, obj, relation in graph.edges(data=True):
print(f"{subject} -> {relation['predicate']} -> {obj}")출력에는 질의 가능한 관계 사실 두 개가 표시되며, 각 술어는 해당 방향성 에지에 연결됩니다.
장면 그래프 생성 방식#
장면 그래프 생성(SGG)은 시각적 입력에서 이러한 표현을 예측합니다. 일반적인 파이프라인은 객체 감지, 특징 추출, 관계 분류를 결합합니다. 객체 특징은 개별 영역을 설명하고, 쌍별 특징은 가능한 상호작용을 설명합니다. MotifNet과 같은 컨텍스트 모델은 주변 객체 정보를 활용해 관계 예측을 지원합니다. 그래프 신경망은 연결된 객체 간에도 정보를 교환하여 관계적 맥락을 인코딩하는 임베딩을 생성할 수 있습니다.
Ultralytics YOLO YOLO26은 감지 출력을 통해 이 파이프라인에 객체 인스턴스를 제공합니다. 감지 출력에는 박스, 클래스 레이블, 신뢰도 점수가 포함됩니다. 다운스트림 관계 모델은 이러한 인스턴스를 사용해 "착용하고 있음"이나 "위에 서 있음"과 같은 에지를 예측합니다.
시각적 추론 및 로보틱스 분야의 응용#
명시적인 관계 표현은 객체 간의 구성을 이해해야 하는 작업을 지원합니다:
- 시각 질의응답: GQA는 Visual Genome에서 추출한 장면 그래프를 사용해 질문과 기능적 추론 프로그램을 생성합니다. 객체 관계를 따라가면 속성과 연결 관계를 기반으로 객체를 식별하는 작업을 포함해 시각적 추론을 수행할 수 있습니다.
- 로보틱스: Kimera는 시각-관성 입력으로부터 3D 동적 장면 그래프를 구축합니다. 계층적 표현은 객체, 사람, 방, 건물을 연결하여 시맨틱 매핑과 계층적 경로 계획을 지원합니다. 공간 좌표와 시간을 추가하면 표현 범위를 단일 이미지 너머로 확장할 수 있습니다.
- 이미지 생성: Justin Johnson, Agrim Gupta, Li Fei-Fei의 장면 그래프 기반 이미지 생성 시스템은 그래프를 객체 레이아웃으로 변환하고, 박스와 분할 마스크를 예측한 뒤 해당 레이아웃에서 이미지를 생성합니다. 그래프는 장면의 구성 요소와 그 관계를 모두 지정합니다.
평가 및 관계 오류#
장면 그래프 평가는 일반적으로 세 가지 작업을 구분합니다. 술어 분류는 객체 박스와 레이블을 제공하고 예측된 관계를 평가합니다. 장면 그래프 분류는 박스를 제공하고 객체 및 관계 레이블을 요구합니다. 장면 그래프 감지는 이미지에서 전체 그래프를 생성해야 합니다. 이 구분을 통해 오류가 위치 추정, 객체 인식, 관계 예측 중 어디에서 비롯되는지 파악할 수 있습니다.
관계 빈도는 데이터셋 편향을 유발합니다. 빈번한 술어가 예측을 지배하는 반면, 드물지만 유용한 관계는 놓칠 수 있습니다. Recall\@K는 순위가 가장 높은 K개 예측 중 주석이 달린 관계를 찾아낸 비율을 측정합니다. Mean Recall\@K는 각 술어 범주별로 재현율을 계산한 다음 그 값을 평균하여, 드문 술어와 빈번한 술어에 범주 수준에서 동일한 가중치를 부여합니다.










