안녕하세요, 75번째 x-review 입니다. 이번 논문은 2024 ECCV에 게재된 Diffusion Models for Monocular Depth Estimation이라는 논문 입니다.
그럼 바로 리뷰 시작하겠습니다

1. Introduction
MDE는 한 장의 이미지를 가지고 scene의 depth를 추정해야 하는 어려운 task 입니다. MDE를 위해 DPT나 Depth Anything과 같이 대규모의 데이터셋으로 학습된 모델을 사용하여 많은 발전을 이루고 있었습니다. 그럼에도 그런 대규모 데이터에 포함되어 있지 않은 분포를 가진 이미지가 들어오면(야간, 저조도, 투명한 물체 등등)에 대해서는 여전히 depth 추정에 어려움이 있습니다. 이전까지의 연구들은 방금 말씀드린 이상 상황에 대해 개별적으로 해결을 하고 있습니다. 가령 저조도나 악천후를 타겟으로 해결을 하거나, 다른 갈래로는 투명하거나 반사되는 재질의 물체에 집중하는 것이죠. 저자는 이렇게 정상 이외의 상황을 따로따로 해결하는게 아니라 모든 이상 상황을 동시에 처리할 수 있는 통합 프레임워크가 필요하다고 주장합니다.
그래서 본 논문에서는 원래는 이미지를 생성하기 위해 사용하는 diffusion 모델을 사용합니다. diffusion을 이용해서 한 scene에 대한 구조는 동일하게 유지하면서도 다양한 이상 상황이 포함된 사실적인 이미지를 만들고자 한 것 입니다. 추가하는 이상 상황은 유저가 임의로 정의할 수 있고, 사용자가 텍스트 프롬프트로 원하는 이상 상황을 지정하면 됩니다.
먼저 정상 상황의 클린한 이미지를 가지고 사전학습된 MDE 모델을 통해 초기 depth map을 출력합니다. 그 다음 동일한 이미지를 diffusion 모델에 넣어서 이상 상황이 추가된 이미지를 생성하는 것이죠. 이러한 이상 상황 이미지와 정상 이미지를 합쳐서 새로운 학습 데이터셋을 만들고, 처음에 초기 depth map을 예측하는데 사용하던 MDE 모델을 finetuning 하게 됩니다. Fig.1을 봤을 때, 두번째 행은 초기 depth map을 예측하는 Depth Anything 모델의 출력 결과이고 세번째 행이 finetuning을 했을 때의 결과 입니다. 발생하는 노이즈가 사라지고 물체를 더 명확하게 표현하고 있는데요, 이렇게 의도한대로 모델이 여러 이상 상황 속에서도 depth를 잘 추정할 수 있는 모델을 설계하는 것을 목표로 하고 있습니다.
이러한 논문의 main contribution을 정리하면 다음과 같습니다.
- diffusion 모델을 사용하여 정상 상황 뿐만 아니라 여러 이상 상황을 모두 해결할 수 있는 통합적인 MDE 프레임워크를 제안
- diffusion 모델을 통해 다양한 이상상황에 대한 데이터를 생성하여 기존 MDE 모델의 이상상황에 대한 depth 추정 성능을 향상
- 기존에 구별하여 해결하던 이상상황(악천후, 저조도/반사, 투명한 물체)를 동시에 해결하며 이를 실험적으로 증명
2. Method

2.1. Diffusion-Distilled Data
본 논문의 목표는 이상 상황에서 MDE를 잘 할 수 있는 데이터를 직접 만들어서 모델을 더 강인하게 만드는 것 입니다. 그런데 실제 데이터들은 다양한 이상 상황이 포함된 이미지-Depth에 대한 GT 데이터가 거의 없고 새로 수집하기에도 cost가 많이 드는 상황 입니다.
그래서 데이터를 새로 만드는데요, pair한 데이터를 만들게 됩니다. 모든 샘플은 두 장의 이미지로 묶어서 생성하는데 e_i, h^c_i로 구성합니다. e_i는 easy 샘플, 즉 depth를 추정하는데 크게 어려움이 없는 클린한 정상 이미지 입니다. 가령 밝은 낮이나, 반사되거나 투명한 물체가 포함되지 않는 장면을 의미합니다. 두번째 h^c_i는 hard한 샘플로, e_i를 특정 이상상황 c를 적용하여 이상 상황을 포함시킨 이미지 입니다. 여기서 c는 앞서도 계속 말씀드렸지만, 복잡한 표면을 가진 물체, 투명/반사되는 물체, 악천후, 그리고 야간/저조도 등을 의미합니다.
왜 이렇게 pair한 데이터를 만드냐고 하면, 비교적 쉬운 e_i에서는 기존 MDE 모델들도 비교적 신뢰할 수 있을 depth map을 먼저 뽑아낼 수 있고, 그 depth를 어려운 이미지에 마치 pseudo 라벨처럼 활용해서 모델을 finetuning 하기 위함이라고 합니다. 이렇게 하면 모델이 지금 장면이 이렇게 어렵지만 정상 상황에 대한 depth가 있으니 지금 이상 상황 이미지에서 어떤 depth가 나와야 하는 지를 학습할 수 있는 것 입니다.
이런 데이터를 구성하기 위해서 이제 텍스트-이미지 diffusion 모델을 사용하는데요, diffusion 모델에 텍스트 프롬프트를 기반으로 이미지를 생성할 수 있습니다. 먼저 diffusion 모델의 이미지는 정상 이미지 e_i, 그 정상 이미지로 미리 추정한 depth map d_i, 그리고 텍스트 프롬프트 p_c를 입력으로 합니다. 먼저 텍스트 조건을 이용해서 그 텍스트의 이상 상황을 표현하기 위해 이미지에 어떤 변화를 줄 지를 결정합니다. 낮 이미지를 밤으로 바꾼다던가, 불투명한 물체를 투명한 물체로 변환하는 등이 되겠죠. 이렇게 이미지를 이상 상황으로 변환하여 생성한다 해도 기존의 depth 구조는 유지해야 하기 때문에 같이 입력으로 사용한 depth map을 이용하여 원본의 구조를 그대로 가져가도록 합니다. 이렇게 하면 출력으로 h^c_i가 원본과 동일한 depth 구조를 가지면서도 이상 상황을 적용한 채로 나올 수 있는 것 입니다.

위 Fig.3을 보면, 악천후에 대해 다양한 텍스트 프롬프트를 이용하여 여러 복잡한 이상상황 장면을 생성할 수 있는 것을 알 수 있습니다.
2.2. Self-Distillation Training
데이터셋을 구성하였으니, 이제 이 데이터셋으로 모델을 finetuning 하는 과정이 필요합니다.
teacher-student 구조로, 이미 사전학습된 MDE 모델을 teacher, 그 teacher 모델과 같은 구조로 초기화된 모델을 student로 정의합니다. teacher 모델이 정상과 이상 상황 이미지 모두에 대해 depth를 예측합니다. 이렇게 예측한 depth 값을 정답 라벨로 활용을 하는데, student 모델은 이 라벨을 가지고 학습하면서도 이상 상황에 대한 예측 성능을 더 높일 수 있도록 finetuning 하는 것 입니다.
finetuning에는 원래 depth estimation에서 많이 사용하는 것처럼, Scale Invariant loss를 사용합니다. MDE는 절대적인 depth 값이 아니라 상대적인 depth의 비율이 더 중요하기 때문에 이러한 아래와 같이 SSI loss를 사용합니다.

- \hat{d} : student 모델이 예측한 depth
- \hat{d}^* : teacher가 제공하는 dept
- M : valid 픽셀 수
정리하면, 이미 학습된 모델이 생성한 pair 이미지에 대해 모두 depth를 예측하고, 같은 구조의 student 모델을 SSI를 통해 finetuning하여 이상 상황에서도 강인하게 동작할 수 있도록 설계하였습니다.
3. Experimental Results
데이터셋은 다음과 같은 데이터들을 활용하였다고 합니다.
자율주행 데이터셋
- nuScenes, RobotCar, DrivingStereo, KITTI2012, KITTI2015, Apolloscape, Mapellary, Cityscapes
투명/반사되는 물체가 포함된 데이터셋
- Booster, ClearGrasp
2.1. Adverse Weather Conditions
Improving the Baselines

먼저 Tab.1은 nuScenes에서의 MDE 성능을 평가한 결과 입니다.
베이스라인으로는 DPT, MiDaS, ZoeDepth, 그리고 DepthAnything 네 가지 최신 방법론들로 선정하였다고 합니다. 각 베이스라인 모델을 본 논문의 방식을 사용하여 finetuning을 진행하였습니다.
결과를 보면, 베이스라인 모델들은 그 자체로도 많은 데이터를 이용하여 일반화를 가지고 있는 모델들임에도 불구하고, 비 오는 낮이나 야간처럼 악천후 환경에서 성능이 크게 하락되고 맑은 낮처럼 일반적인 조건에서만 좋은 성능을 보이고 있습니다. 반면 그러한 베이스라인 모델들에 finetuning을 했을 때 모든 평가 메트릭과 날씨 조건에서 모두 베이스라인 성능 대비 향상되는 것을 알 수 있습니다. 이는 본 논문의 finetuning 방식이 어떤 모델인지와 상관없이 효과적이며, 기존의 MDE 모델들의 한계를 보완할 수 있었음을 보여줍니다.
Comparison with Existing Methods


위 Tab.2, 3은 MDE 모델들 중에서도 이상 상황을 다루는 방법론들과의 비교를 진행하였다고 합니다. 특정 조건의 이미지 특성에 대한 사전 지식이 필요한지 여부에 따라서 방법론들을 구분하였습니다.
md4all-AD와 DD는 ForkGAN이라는 생성형 모델을 이용하여 모든 맑은 낮 학습 이미지를 비 오는 상황과 밤 환경으로 변환하여 학습하는데, 이 모델은 md4all 베이스라인 모델보다 좋은 성능을 보이고 있습니다. 그러나 이러한 결과를 나오게 하기 위해서는 해당하는 데이터셋의 특정 조건에 대한 이미지 특성(노이즈, 밝기)에 대한 사전 지식이 필요하다는 특징이 있습니다.
반면에 본 논문의 방법론은 쉬운 샘플, 즉 정상 상황 샘플만 있으면 md4all 베이스라인 모델의 성능을 향상시킬 수 있고 어떤 경우에는 AD,DD와도 비슷한 성능을 낼 수 있음을 알 수 있습니다.
어떤 기존 depth 모델을 teacher 모델로 활용하여 이상상황 이미지를 만들든 본 논문의 방법론은 성능이 개선된다는 것을 보여주며, 이상 상황에 대한 사전 지식 없이도 야간/비오는 이미지 변환에 특화된 기존 방법론들보다 좋은, 혹은 비슷한 수준의 결과를 낼 수 있음을 보여주고 있습니다.
2.2. Challenging Materials

본 논문은 자율 주행의 악천후 환경 뿐만 아니라 여러 이상 환경에 대한 범용적인 성능 개선을 목표로 한다고 했습니다. 그래서 반사/투명 물체도 다루는데, 이런 케이스는 정상 샘플도 대량으로 수집하는 것이 어렵다고 합니다. 그 이유는 전부 반사/투명 물체만 있는 scene을 일일이 세팅해서 촬영하기에 cost가 많이 들기 때문이라고 합니다. 또한 데이터가 있다해도 이전 연구들은 style stransfer 기반들이라 이런 투명/반사 물체들을 처리하는데 적합하지 않다고 하네요.
Tab.5는 여러 모델들을 이전 연구로 finetuning한 DPT, 그리고 본 논문의 방법으로 finetuning한 DPT를 같이 비교하고 있습니다. 이전 finetuing 연구는 실제 투명한 물체를 포함한 이미지와 그 물체의 정확한 segmentation 마스크를 이용해서 학습하게 되지만, 본 논문은 오로지 텍스트 프롬프트로 생성한 이미지에만 의존하게 됩니다.
추가로 Depth Anything 모델도 비교 대상으로 실험을 진행하였다고 합니다.
결과를 보면, 평가한 두 개의 데이터셋에서 모두 베이스라인 모델의 성능을 뛰어넘은 것을 알 수 있습니다. 베이스라인이 아닌 타 finetuning 방식과 비교를 해보면 사실 성능이 비슷하거나 미미하게 개선이 되는데요, 여기서 또 강조하는 것은 타 방식은 수동의 segmentation 마스크를 필요로 하지만, 본 논문은 텍스트 프롬프트만을 사용하면 된다는 점을 이야기하고 있습니다.
이렇게 강조하는 이유는 아무래도 모든 환경에 대한 segmentation 마스크를 일일이 수집하는 것의 cost가 크고 시간이 오래 걸리기 때문이겠죠. 반면에 텍스트 프롬프트 기반의 이미지 생성은 여러 관점에서 cost가 효율적이라는 장점이 있습니다.

마지막으로 정성적 결과를 보면, 여러 악천후 환경이 담겨있는 이미지들에서 기존의 MDE 모델이 예측한 depth는 도로가 명확하게 표현이 되지 않고 노이즈가 많이 있는 것을 확인할 수 있습니다. 반면에 finetuning을 거친 결과를 보면 확실히 앞쪽의 노이즈가 많이 사라지고 물체의 경계 부분이 명확하게 표현되는 것을 알 수 있습니다. 따라서 정상-이상의 pair 데이터를 생성하여 finetuning 하는 해당 방식이 이러한 이상 환경 데이터를 다루는데 효과적임을 정성적으로 확인할 수 있습니다.