[CVPR 2025] Completion as Enhancement: A Degradation-Aware Selective Image Guided Network for Depth Completion

안녕하세요, 66번째 x-review 입니다. 이번 논문은 CVPR 2025년도에 게재된 depth completion을 depth enhancement 관점에서 해결한 논문 입니다.

그럼 바로 리뷰 시작하겠습니다 !

1. Introduction

depth completion의 근본적인 어려움은 입력 데이터가 sparse하다는 것인데요, 이에 대해서 저자는 “mismatch”와 “ambiguity”라는 키워드로 문제를 정의합니다. Fig.1을 보면 “mismatch”는 scene 전체에서 불규칙하게 샘플링된 sparse depth가 입력으로 들어오는 반면에 컨볼루션의 커널 shape은 고정되어 공간 불별하기 때문에 발생하게 됩니다. 또한 컨볼루션은 sparse depth에서 depth를 알 수 없는 픽셀의 값을 0으로 간주하기 때문에 실제로 유효한 값을 가진 depth와 그렇지 않은 depth 측정을 구분하는 것이 모호해지는 것을 “ambiguity”로 정의합니다.

이 두가지 문제를 해결하기 위해서 이전 연구에서는 sparsity에 불변한 CNN을 제안하거나, 입력 depth를 보간하거나 등의 방식을 제안하였지만 여전히 sparse depth에 컨볼루션을 적용하는 것을 완전히 피하지는 못했다고 합니다.

그래서 본 논문에서는 두 문제를 모두 해결하기 위해서 Selective Image Guided Network(SigNet)이라는 프레임워크를 제안합니다. Fig.1에서 보면, SigNet은 depth completion을 depth enhancement로 다시 정의를 하는데요, 먼저 CNN이 아닌, 그러니까 전통적인 영상 처리 기법을 이용해서 sparse depth를 dense하지만 coarse한 depth map으로 처리합니다. 이런 coarse depth는 GT에 비해 depth 퀄리티가 떨어지고 왜곡이 발생할 수 있는데, 이를 degradation이라고 합니다. 저자는 이 때의 degradation을 하나의 수학적인 함수 h와 노이즈 n으로 식(1)과 같이 정의하게 됩니다.

  • Z : coarse depth map
  • Y : GT
  • h : degradation → YZ로 바뀌면서 발생하는 왜곡 및 품질 저하 현상
  • n : 노이즈

이런 degradation 모델링을 하는 이유는 단순히 coarse depth를 가지고 바로 CNN을 통해 예측을 하려고 하면 정보가 부족하기 때문에 그 대신에 Z가 Y에서 어떻게 degradatation 됐는지를 모델링하는 것이죠. 이를 통해 왜곡된 Z로부터 어떻게 하면 원래의 Y를 복원할 수 있을까를 학습할 수 있습니다. 이 degradation은 보통 이미지의 엣지 근처에서 발생하는데요, 그에 반해 RGB 이미지는 엣지와 같은 고주파 이미지 정보를 잘 가지고 있습니다. 그래서 저자는 엣지 주변에서 발생하는 degradation을 잘 활용하면 RGB 이미지 정보를 depth completion하는데 사용할 수 있을 거라고 생각했다고 합니다. 이를 위해 Degradation Aware Decomposition and Fusion(DADF) 모듈을 새로 설계하였습니다. 간단히 말하면 degradation 함수를 여러 패치로 나누어서 각 패치가 주파수 영역에서 어디에 위치하는지를 분석하는 것 입니다. 이 정보를 바탕으로 어디서 RGB 이미지의 고주파 정보가 중요한지를 결정하여 RGB 이미지에서 필요한 부분을 골라서 사용하자 하였다고 합니다.

여기서 본 논문의 main contribution을 정리하면 다음과 같습니다.

  1. 처음으로 depth completion을 enhancement로 새롭게 정의하는 프레임워크인 SigNet을 제안함으로써 “mismatch”와 “ambiguity” 문제를 해결
  2. depth 퀄리티 저하를 역으로 활용하여 RGB 데이터의 고주파 영역을 adaptive하게 사용하여 coarse depth를 보완할 수 있는 DDAF 모듈 제안
  3. 이전 SOTA 방법론과의 실험을 통해 프레임워크의 효과를 입증

2. Method

Fig.2를 보면 크게 depth, degradation, 그리고 이미지 브랜치로 구성되어 있습니다.

depth 브랜치에서는 CNN이 아닌 전통적인 이미지 처리 방식(ex. IP-Basic)으로 sparse depth S를 coarse depth Z를 만듭니다. 이 Z에는 노이즈 n이 포함되어 있기 때문에 denoising 연산자를 거쳐서 \hat{Z}를 만들게 됩니다. 그 다음 \hat{Z}에서 feature를 추출하기 위해 Residual group이라는 CNN 구조를 사용하였따고 합니다.

두번째 이미지 브랜치는 마찬가지로 Residual Group을 통해 이미지에 대한 feature를 추출합니다.

두번째 degradation 브랜치는 Z가 어떻게 GT depth Y에 비해 degradation 되었는지를 모델링합니다. CNN과 Residual Group을 사용해서 degradation 정보 D를 예측합니다. 이 D는 앞서 인트로에서 식(1)의 h 함수를 표현한 것이라고 합니다.

이제 depth feature \hat{Z}, 이미지 feature I, 그리고 degradation D를 융합하기 위해 DADF 모듈을 사용합니다.

2.1. Task Switching

기존의 degradation 학습은 low level의 이미지를 복원하는 작업에 쓰였는데요, 여기서 입력 이미지와 GT는 대부분 dense하고 입력이 GT보다 해상도가 낮다고 합니다. 그러나 depth completion은 입력이 sparse하고, 입력과 GT의 해상도가 같다는 차이가 있습니다. 이를 이미지 복원처럼 해보기 위해서 depth completion을 depth enhancement로 task를 전환해본 것이죠. 식(1)처럼 Z를 구하면 마치 흐린 이미지에서 선명한 이미지(Y)를 복원하는 것처럼 진행할 수 있게 됩니다.

수식적으로 살펴보면 식(2)는 Z를 생성하는 과정 입니다.

  • f_{ds}(\cdot) : CNN이 아닌 이미지 처리 방식(IP-Basic)

이를 통해 sparse한 입력에서 dense하지만 coarse한 depth map을 얻는데, 이렇게 하면 직접적으로 sparse 데이터에 컨볼루션을 적용할 때 발생하는 “mismatch”와 “ambiguity”를 피할 수 있게 됩니다.

그러고 나서 식(1)의 degradation h는 진짜 함수가 아니라 어떻게 왜곡되었을것이다라고 가정한 가상의 함수 입니다. 그래서 이걸 실제로 사용할 수 있는 정보로 바꿔야 하는데, 이를 위해 degradation network를 설계 합니다. 흐릿한 depth 이미지 Z와 RGB 이미지 I를 보고 어디가 얼마나 왜곡되고 퀄리티가 저하됐는지에 대한 latent 표현인D를 출력합니다. 이 D를 다시 degradation 커널 K를 생성하는데 쓰이고, 만들어지는 K를 통해 식(3)과 같은 degradation 모델을 완성합니다. 결국 K를 GT Y에 적용하면 Z처럼 왜곡되는 depth map을 모사할 수 있습니다.

  • \otimes : 컨볼루션 네트워크
  • \boldsymbol{\vartheta} : 네트워크 파라미터

2.2. Degradation-Aware Decomposition and Fusion

coarse depth는 엣지 정보가 부족하기 때문에 엣지에 해당하는 고주파 정보를 많이 가지고 있는 RGB 이미지를 잘 융합해서 depth map을 만들고자 합니다. 그래서 degradation은 주로 엣지 근처에서 발생하니, 이를 통해 RGB에서 필요한 부분을 선택적으로 골라쓰자는 것이 DADF 모듈 설계의 목적 입니다.

  • F_{img} : RGB 이미지에서 추출한 feature
  • F_{dep} : denoise 처리한 Z에서 추출한 feature

Fig.3을 보면 알 수 있듯이, DADF 모듈은 F_{img}, F_{dep}, 그리고 F_D을 입력으로 합니다.

DADF 모듈은 크게 두 가지 동작을 하는데요, 첫번째는 Decomposition 입니다.

이는 고주파 정보를 고르기 위한 분석이라고 보시면 되는데, 그러기 위해서 가장 먼저 F_D를 주파수 영역으로 식(6)을 이용하여 변경합니다.

  • f_{dct} : DCT(Discrete Cosine Transform) → 주파수 성분으로 변환

결과값으로 3개의 주파수 패치 D_1, D_2, D_3을 얻습니다. 이 세 개의 주파수 패치는 특정 주파수 대역을 각각 나타내고 있습니다. 주파수로 바꾸는 이유라고 함은 엣지 정보를 포함하는 고주파와 배경을 포함하는 저주파를 구별하기 쉽도록 하기 때문이라고 하네요.

그 다음엔 RGB 이미지에서 필요한 정보만 골라내기 위해 마스크를 생성하며, 이는 식(7)과 같이 정의합니다.

  • f_m : concat, convolution, pooling, 그리고 sigmoid 등을 통해 구성된 함수

해당 마스크는 RGB 이미지에서 어디가 중요해 보인다는 걸 표시하는데, 이를 식(8)을 이용해 한번 더 업데이트를 해줍니다.

  • f_{ac} : 주파수 패치 D_i를 더 하고 컨볼루션 연산하여 합치기 위한 함수
  • f_{idct} : 주파수 성분에서 다시 spatial 영역으로 되돌리는 inverse DCT

즉 마스크와 주파수 성분을 곱해서, 여기서 원하는 공간적으로 어디가 중요한지를 알려주는 업데이트된 마스크를 얻는 것 입니다.

그 다음엔 얻은 마스크를 이용해서 RGB 이미지의 feature 중에 중요한 부분만 강조해야겠죠.

식(9)를 통해 필요한 고주파 RGB 정보만 강조하여 남긴 feature \hat{F}_{img}를 얻습니다.

두번째 동작 과정은 융합인데요, RGB와 depth feature를 합치는 과정을 의미합니다.

식(10)의 F_{rgbd}가 두 RGB, Depth feature을 concat하여 합친 feature map 입니다. 식 (11)을 잘 봐야하는데, D_i를 다시 사용하고 있죠. 이걸 conditional Mamba의 조건으로 사용한다고 합니다.

기존 Mamba는 입력 데이터만 가지고 long-range의 관계를 잘 처리할 수 있는데, 여기서는 conditional Mamba를 가지고 degradation을 조건으로 넣어서 어디가 왜곡되었는지를 참고해서 fusion을 더 잘 하고자 합니다.

위의 Algorithm.1이 Conditional Mamba 과정을 요악한 것인데, 중요한 부분은 어떤 정보를 얼마나 강조할지를 결정하는 게이팅 파라미터 \vartriangle을 생성한다는 것 입니다. 그 다음에 A와 B를 \vartriangle를 곱해서 가중치를 조정함으로써 degradation 정도에 따라 정보를 다르게 처리할 수 있도록 합니다. 7번째 줄의 SSM은 selective state space 연산으로, 최종 fusion 결과를 생성하는 부분 입니다. 이 결과가 이제 degradation 정보를 위에서 가중치로 고려한 엣지 중심으로 개선된 fusion feature이겠죠.

일반적인 fusion 방식은 모든 부분을 단순히 합치면서 동일하게 처리하지만, Conditional Mamba는 어디가 더 중요한지 degradation을 기준으로 따지게 됩니다. 또한 멀리 떨어져있는 영역 간의 관계도 동시에 학습하면서 전체 구조를 잘 살리는 depth completion이 가능할 수 있도록 합니다.

2.3. Loss Function

loss 함수는 기본적인 depth 예측을 위한 L_r과 degradation을 위한 L_d loss로 구성되어 있습니다.

단순히 depth를 복원하는 것 뿐만 아니라 degradation이 어떻게 나타나있는지를 잘 학습할 수 있어야 하기 때문에 추가적인 degradation loss를 추가된 것 입니다.

  • \hat{Y}_i : 모델이 예측한 depth
  • Y_i : GT depth
  • N : 전체 학습 데이터 수

식(12)는 예측 depth와 GT 사이의 L1 loss로 이루어진 일반적인 예측 loss 입니다.

중요한 건 아래의 degradation loss 입니다.

이는 Y에 커널 K를 컨볼루션으로 적용하였을 때 얼마나 실제 coarse depth Z처럼 되는지를 확인하는 loss 입니다. 즉, 모델이 학습한 degradation 커널이 실제로 GT depth를 얼마나 coarse depth와 유사하게 망가뜨릴 수 있는지를 평가한다고 이해해주시면 좋을 것 같습니다.

본 논문의 방법론은 degradation 모델이 굉장히 큰 영향을 미치기 때문에, 이를 위해서는 K가 정말 degradation 현상을 잘 재현할 수 있어야 합니다. 그래서 degradation loss를 추가함으로써 모델이 단순히 예측 depth가 GT에 잘 맞도록 하는게 아니라 GT도 degradation을 통해 Z처럼 자연스럽게 모델링이 될 수 있도록 강제하는 loss를 추가한 것 입니다.

3. Experiment

실험은 총 4개의 데이터에 대해 평가하였다고 합니다.

(NYUv2, DIML, SUN RGBD, TOFDC)

3.1. Comparison with SOTA

3.1.1. Performance Analysis

depth completion task에서는 거의 처음 보는데, 파라미터 수를 같이 리포팅하고 있습니다. 모든 데이터셋에서 다른 방법론들 대비 압도적으로 적은 파라미터만을 이용하면서도 SOTA 혹은 그에 준하는 성능을 달성하는 것을 확인할 수 있습니다.

DIMIL이라는 데이터셋은 저도 처음 보는데, indoor와 outdoor가 모두 포함된 데이터로, 가장자리의 그림자나 불규칙한 홀이 심한 데이터라고 합니다. 이러한 데이터에 대해서도 본 논문은 모든 메트릭에 대해서 SOTA를 달성하고 있습니다. SUN RGB-D 데이터셋은 large scale의 데이터라서 다양한 센서나 scene에 대해 SigNet의 일반화 성능을 평가하기 위해 실험하였다고 합니다. 다만 제가 알기로는 SUN RGBD는 depth completion을 위한 sparse depth 수준의 depth map을 제공하지 않을텐데, 어느 정도로 샘플링을 하여 실험을 했는지는 모르겠네요.

Fig.4와 5는 TOFDC와 DIMIL 데이터셋에 대한 정성적 결과 입니다.

참고로 TOFDC 데이터는 여러 조도 조건과 open된 공간에서 취득된 데이터셋이라고 합니다.

Fig.4에서 의자의 모양이나 나뭇잎의 디테일한 엣지에 대해서 이전의 연구들에 비해 GT와 가장 유사하게 표현하고 있는 것을 알 수 있습니다. 이를 통해 RGB에서 필요한 고주파 정보를 융합하여 사용함으로써 sparse한 depth를 사용할 때 발생할 수 있는 문제들을 해결하였다는 것을 강조하고 있습니다.

3.2. Ablation Study

SigNet Designs

Tab.3은 SigNet의 주요 구성들에 대한 ablation study 입니다.

SigNet-i는 기본 베이스라인으로, degradtion과 DADF 없이 단순 더하기로 두 feature를 합친 버전 입니다.

SigNet-ii는 depth enhancement로 task를 바꾸어서 degradation 개념을 추가하여 concat으로 융합하는 버전 입니다. 이 때 이렇게 task를 바꾸기만 해도 성능이 크게 향상되는 것을 통해 단순 completion으로 가는게 아니라 enhancement 관점으로 변경하는 것이 효과적이라는 걸 알 수 있습니다.

Signet-iii는 denoising의 추가가 더해지면서, coarse depth를 그대로 사용하는게 아니라 denoising 과정을 합치면 더 좋은 feature을 뽑을 수 있다는 걸 보여주고 있습니다.

SigNet-iv는 attention map을 적용하는데, RGB의 중요한 정보만 골라내는 구조를 attention map으로 설계한 것이죠. 이를 통해 개선된 성능은 RGB 전체를 다 쓰는게 아니라 중요한 정보를 선택하는게 훨씬 효과적이라는 걸 의미하고 있습니다.

SigNet-v는 DCT 기반의 주파수 성분으로 분해하는 과정을 추가하는데요, 이를 통해 spatial이 아니라 DADF에서 주파수 기반의 분해하는 과정이 RGB의 중요한 정보를 골라내는데 도움이 된다는 것을 알 수 있습니다.

마지막 행의 SigNet-v는 conditional mamba까지 포함된 버전으로, degradation을 조건으로 long range의 모델링을 통한 fusion을 통해 큰 성능 개선을 이루었습니다. 이를 통해 fusion을 하는 방식도 단순히 뽑은 feature을 합치는 것에서 끝내는 게 아니라 논문에서 제안한 방식대로 수행하는 것이 효과적이라는 것을 실험적으로 알 수 있습니다.

Mamba Fusion and Iteration of DADF

마지막으로 Fig.8은 Mamba fusion에 대한 ablation study 입니다.

Fig.8(b)의 vim은 vanilla vision mamba를 사용해서 RGB-D feature를 인코딩하는 버전으로 베이스라인에 해당합니다. 여기서 conditional Mamba로 변경하면 Mamba가 어디가 중요한지를 condition으로 받아서 작동할 수 있도록 합니다. 여기에 DCT composition의 분해 수를 변경해서 실험을 해보았을 때 논문에서 디폴트로 사용하고 있는 3개가 가장 좋은 성능을 보이고 있네요. 이를 통해 고주파, 즉 엣지 중심의 정보를 선택해서 사용하는 것이 더 정확한 depth를 복원할 수 있다는 것을 알 수 있습니다.

그 다음엔 Fig.(a)에서 보이는 것처럼, DAF를 반복하는 횟수에 따른 성능을 평가하였습니다.

반복 횟수가 증가할수록 RMSE가 감소하긴 합니다만, 이 과정에서 계산량이 함께 증가하게 됩니다. 따라서 실험적으로 확인하였을 때 5번 반복하는 것이 trade-off 관계가 가장 잘 맞기 때문에 본 논문에서는 5번을 디폴트로 사용하고 있다고 하네요.

Author: 손 건화

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다