본문 바로가기

논문 읽기/한 가지 논문 깊게읽기

[ECCV'24] Hierarchical Temporal Context Learning for Camera-based Semantic Scene Completion (24.11.07)

 

Teaser image from [1]

 

'Occupancy prediction'은 영상이나 센서 입력이 들어오면 주변 환경을 복셀 형태로 예측하는 연구다. 구체적으로는 단일 이미지가 주어지면, 이를 통해 주변 환경의 3차원 공간과 각 클래스를 복셀 단위로 추론하여 출력한다. 개인 연구 주제인 'Occupancy prediction'과 관련해 참고할 만한 논문을 찾고, 서베이 겸 공부하고자 한다. 이번에 살펴보는 논문은 VoxFormer의 실험 중에서, 시간 연속성을 고려한 'Occupancy prediction'을 다룬 갈래 연구를 본격적으로 풀어본 연구로 볼 수 있다 (연속된 이미지를 활용한 연구). 개인적으로 연구 흐름은 이해하고 있어서, 개요와 선행 연구 부분은 생략하려 한다.

 

 

한 줄 평:

더보기


" VoxFormer를 제외하고, 처음으로 시간 연속적으로 Occupancy Prediction을 수행한 연구다."

 

 

 

1 Method

1.1 Preliminaries

논문을 설명하기에 앞서, 논문에서 정의하는 연속적인 영상을 고려한다는 게 어떤 의미인 지 정의해보자. 연속적인 RGB 이미지가 입력될 때, Isetrgb={Itrgb,It1rgb,} 이라고 정의할 수 있다. 기존 'Occupancy prediction'은 단일 이미지인, Itrgb 만을 고려하거나 TSDF 혹은 추가적인 정보를 사용하는 방식이다. 본 논문의 실험을 보면 1~5개 수준에서 이전 이미지를 historical frames라고 지칭하면서 활용한다. 영상이 입력 된 후에, 추론하게 되는 결과는 복셀 형태인 VRH×W×Z이고, 각 복셀은 클래스 정보인 C={c1,c2,,cN}를 담고 있다. c0은 비어진 free space 혹은 emtpy space를 의미한다. 아래 함수를 배우는 작업이다.

 

1.2 Overall Framework

본 제안 연구에서 연속적 영상을 고려해 복셀 추론을 하는 건, 크게 아래 세 가지 단계로 나눌 수 있다.

  1. Aligned Temporal Volume Construction: 연속적인 입력 영상(current and historical frames)을 포즈넷에 입력해서 간단한 포즈를 추정한다. 추정한 포즈를 통해서 현재 프레임의 복셀 좌표계로 전체를 정렬 시키는 과정이다. 
  2. Voxel Feature Volume Construction: 2D 이미지가 입력되면, 'EfficientNetB7'을 사용하고 기존 이미지의 1/4 사이즈의 형태로 특징을 추출한다. 선행 연구인 'LSS'에서의 프레임 워크와 마찬가지로 추출한 특징을 깊이정보(depth)를 통해 복셀에 뿌리게 된다. 본 논문에서는 (1) 스테레오에서 깊이를 구하는 'HTCL-S'와 (2) 모노 카메라에서 깊이를 구하는 'HTCL-M' 를 각각 실험한다.
  3. Reliable Temporal Aggregation: (2)번 과정을 통해 연속적인 복셀을 공통 좌표계인 특정 복셀 (current)에 모았다고 하더라도, 유의미한 복셀일 지 알 수 없다. 포즈, 깊이정보, 특징 정보 모두가 신경망 추론 결과이기 떄문이 아닐까 싶다. 따라서, 본 저자는 CPA, ADR을 통해서 각 특징을 업데이트하고, 최종적으로 WVA라는 과정을 통해서 각 특징 중 유의미한 정보만을 활용한다.

Overall pipeline from [1]

 

다른 과정은 차치하고, 최종적으로는 업데이트한 연속적인(Temporal) 복셀을 기존 복셀 정보에서 선별적으로 Attention 한 이후에, 최종적인 복셀을 출력한다.

 

 

1.3 Temporal Content Alignment 

'VoxFormer' 논문 중 'VoxFormer-T' 모델을 보면, 시간 연속적인 이미지 혹은 특징(feature)를 단순히 붙여서(concat) 추론하는 방식이 있다. 제안 논문은 'VoxFormer' 방식과는 다르게, 각 포즈를 고려해서 유의미하게 서로 정렬 시키고자 한다. 깊이 정보(depth)카메라 간 상대 포즈를 추정하고 이를 homography projection을 통해서, 이전 프레임을 현재 프레임의 카메라의 위치로 와핑 시킨다. 그 다음 채널 축으로 concat을 한다고 하는데, 간단한 식은 아래와 같다. (채널을 그대로 붙이는 게, 너무 메모리 상 비효율적인 방법은 아닌가? + V_tem에서는 W같이 dimension reduction 수행 안하는 이유가 있나?)

 

 

1.4 Cross-frame Pattern Affinity Measurement

각 연속적인 프레임 별로 취득한 특징 간의 Affinity를 측정하기 위해서, cosine similarity를 측정하는 대신, 아래 함수를 통해서 각 프레임 별로 유사한 픽셀을 찾는 방식을 제안한다. Dilation convolution을 수행 한뒤, 각각의 BEV feature에 대한 맥락 특징을 추출하고, 각 치펴 간의 Affinity map을 제안한 방법을 통해서 측정하고, 이를 Concat하여, 다음 단계로 넘긴다.

 

 

1.5 Affinity-based Dynamic Refinement

각 이미지에서 필요한 정보를 현재 프레임의 복셀에 전달했다고 하더라도, 최대한 유사한 위치(relevant locations)에서 정보를 불러오는 게 좋기 때문에, 기존에 학습한 Affinity를 기반해서 복셀을 한번 정제한 뒤, 적은 채널로 압축하는 과정을 이르는 것 같다. 

(이 부분은 정확히 어떤 원리로 동작하는 지 이해가 잘 안된다.)

 

2  Experiments

개인적으로 흥미로웠던 실험만 선별적으로 다룬다.

이미지로 선행 연구와 비교했을 때, 제안 연구 성능이 제일 높은 걸로 알 수 있다. 근데 상당히 많은 모듈을 부착한 것 치고는, 성능 갭이 높지 않다.
라이다 데이터셋 보다는 확실히 OpenOccupancy 데이터셋에서의 성능은 낮지만, 전반적으로 높은 걸 알 수 있다. (LiDAR보다는 왜 낮지?)
추론된 결과를 보면, 다른 연구보다 깔끔하게 보인다고는 하는데, 개인적으로 'vegetation'은 원래 불확실성이 높은 클래스인데, 저렇게 하나로 나오는 게 좋은 건지는 모르겠다. 물론 G.T. 기준으로는 결과가 잘 추론되는 듯 하다.
마찬가지로 OpenOccupancy 데이터에서도 실험을 해볼 때, 성능이 좋은 걸 볼 수 있는데, 이게 실제로 LiDAR라 그런 지 공간 별로 G.T.가 띠 형태로 나타나는 경우도 있다.
인상적인 부분은, 기존 'VoxFormer-T'를 제외하고는 모든 논문이 단일 입력만을 받기에, 각 연구를 연속 이미지를 받게 끔 수정한 점이다. 논문에는 구체적으로 어떤 수정을 거쳐서 각 신경망을 변경했는 지를 보여주고 있지 않아서 각 내용이 궁금하다.

 

각 모듈을 Ablation study로써 비교하였는데, 신기하게도 각 모듈을 추가한 뒤에 점진적으로 성능이 증가하였다.
몇 개의 프레임을 활용하는 게 좋을 지를 다룬 실험. 이미지를 추가할수록 복셀의 정보량이 늘어나기 때문에 성능이 좋아지는 걸까?

 

3 Reference

제안 논문 및 관련 코드