안녕하세요, 71번째 x-review 입니다. 이번 논문은 CVPR 2024년도에 게재된 WorDepth라는 language를 MDE에 활용한 논문 입니다.
그럼 바로 리뷰 시작하겠습니다 !

1. Introduction
3차원 장면을 2차원 이미지로 투영하게 되면 한 이미작 여러 3차원 장면에 포함될 수 있으며, 그 반대 역시도 ill-posed 문제가 발생합니다. 특히나 이미지로부터 depth를 예측하는 monoculdar depth estimation(MDE)는 스케일의 모호성과 같은 내재되는 불확실성을 가지고 있습니다. 그래서 대체적으로 induction에 의존하게 된다고 하는데요, MDE는 입력 이미지로부터 가능한 모든 scene의 분포 중에서 최대 확률을 갖는 하나의 장면을 선택하도록 합니다. 이를 조건부 장면 분포라고 정의하는데, 이는 특정 학습 데이터셋을 통해 학습되며 이상적으로 생각해보면 해당 데이터셋은 real world의 장면 분포를 정확하게 반영하고 있어야 합니다. 그러나 실제로 large scale의 depth 데이터셋이 부족하다는 한계가 존재하고, 이러한 한계를 해결하기 위한 다음과 같은 가정을 하나 하게 됩니다.
“학습 데이터셋 이외의 사전 정보를 활용해서 학습된 장면 분포를 real world에 맞게 보정할 수 있지 않을까?”
사전 정보라는 건 여러가지가 있을 수 있겠죠. 가령 connectivity, 포함돼있는 물체의 방향, 그리고 local smoothness 등과 같은 일반적인 사전 정보들이 학습 과정에서 정규화 항으로 포함되어 활용되고 있다고 합니다. 그러나 이러한 기존의 사전 정보들은 다양한 장면들에 얼마든지 적용할 순 있겠지만, 각각의 3차원 장면 안에서의 물체 크기나 형태와 같은 구체성이 부족하다고 합니다.
그래서 기존의 사전 정보와 같이 적용이 쉬우면서도 장면에 특화된 사전 정보로 저자는 language 정보를 생각하게 됩니다. language는 장면의 의미론적인 정보를 잘 포함할 수 있으며 물체의 형태나 모양에 대해서도 표현할 수 있기 때문 입니다. 예를 들어 “침대와 테이블이 있는 침실”이라는 텍스트는 침대와 테이블이 장면 안의 주요 물체로 구성된 3차원 공간임을 상상할 수 있습니다. 물론 물체의 배치나 형태, 크기 등에 대해서는 여러 케이스가 있겠지만 포함된 객체들의 일반적인 크기들을 유추할 수 있을 것 입니다. 그래서 특정 카메라 센서 정보나 정확한 객체 형태에 대한 가정 없이 특정 장면에 대해 일반적으로 사용할 수 있는 정보로 language를 적용하고자 하였습니다.
그런데 이미지와 텍스트는 둘 다 본질적으로 3차원 공간을 표현하기에 모호한 부분이 존재하는 정보이기 때문에, 이 두 정보를 서로 보완해서 함께 사용할 수 있는 방법이 무엇인지를 고민하게 됩니다. 이미지로는 장면 내의 물체들의 배치와 같은 레이아웃 정보 및 의미론적 정보를 얻을 수 있고, 텍스트는 장면과 장면 속의 대략적인 형태와 스케일을 표현할 수 있을 것 입니다. 그래서 이 두 정보의 모호성을 상호보완적으로 해결하고, 이를 통해 2.5D depth map을 생성하는 걸 목표로 하게 됩니다. 즉 MDE를 하는데, 단순히 RGB 이미지만을 사용하는 대신, 이미지에 해당하는 캡션을 함께 활용합니다. ( 여기서는 ExpansionNet v2라는 captioning 모델을 활용한다고 합니다.)
텍스트 캡션이 가지는 모호성 때문에 캡션을 장면의 확률 분포로 바꾸며, 이는 VAE로 평균과 표준편차를 구해서 장면을 샘플링하여 depth map을 얻게 됩니다. 자세한 내용에 대해서는 method에서 다루기로 하며 본 논문의 main contribution을 살펴보면 다음과 같습니다.
- 본질적으로 모호한 이미지와 텍스트 정보를 함께 사용하여 MDE를 개선하는 WorDepth 프레임워크 제안
- language를 사전 정보로 활용하는 이미지 기반의 조건부 샘플러를 제안
- NYU Depth v2와 KITTI 데이터셋에서 SOTA 달성
- language를 variational 사전 정보로 MDE에 처음 적용한 연구
2. Method

2.1. Text variational auto-encoder
텍스트 VAE는 입력으로 들어오는 description으로부터 depth map의 latent 분포를 학습하는 것을 목표로 합니다. 이 때 인코더는 CLIP의 텍스트 인코더를 freeze한 상태로 사용한다고 하네요.
CLIP 인코더로 임베딩을 하고 나면 MLP g_{\psi}(t) \in \mathbb{R}^{2 \times d}를 통해 평균과 표준편차 (\hat{\mu}, \hat{\sigma})로 변환합니다. 그러고 나서 reparameterization 트릭을 통한 샘플링을 한다고 하는데, 이건 VAE에서 자주 사용되는 방식이라고 합니다. 어떻게 하냐면 가우시안 분포 \epsilon ~ \mathcal{N}(0, I)로부터 노이즈 벡터 \epsilon \in \mathbb{R}^d을 샘플링할 수 있다고 합니다. 이 노이즈 벡터를 이용해서 최종 샘플링한 latent 벡터는 \hat{z} = \hat{\mu} + \epsilon \cdot \hat{\sigma}로 볼 수 있겠죠. 이렇게 만든 벡터는 latent 공간에 있기 때문에 이미지 차원으로 변환을 해주고 depth 디코더를 통해 depth map \hat{y}을 예측합니다.
위의 VAE와 depth 디코더를 학습하기 위해서는 식(1)과 같은 loss 함수를 사용합니다.

첫번째 항은 디코더에서 예측한 depth map과 GT depth map 사이에 scale invariant depth loss 입니다. 두 번째 항은 평균과 표준편차를 정규 분포와의 차이를 줄이도록 학습하기 위해 KL divergence loss를 사용하였다고 하네요.
2.2. Image-based conditional sampler
앞선 2.1절에서는 텍스트 설명만 보고 예측되는 depth map을 생성하였는데요, 실제로는 이미지에 맞는 depth map을 원하는 것이기 때문에 텍스트 기반의 샘플링만으로는 부족할 것 입니다. 그래서 2.2절에서는 이미지를 조건으로 하여 샘플링을 조절하는 conditional sampler를 제안하고 있습니다.
구체적으로 텍스트 VAE가 만들어낸 분포를 사전확률 분포로 간주합니다. 즉 텍스트에서 얻은 정보는 텍스트를 통해 이런 장면들이 가능하다는 공간적 가능성을 제시하는 것이죠. RGB 이미지 x에 맞는 depth map \tilde{y}를 얻기 위해서 텍스트 VAE의 latent 공간 중에서 이미지와 가장 잘 맞는 \tilde{z}를 선택해야 합니다.
기존의 VAE에서는 \epsilon ~ \mathcal{N}(0,1)을 샘플링해서 \hat{z} \hat{\mu} + \epsilon \cdot \hat{\sigma}로 샘플을 구한다고 했습니다. 그런데 여기서 이미지 기반의 conditional sampler는 \hat{\epsilon}를 구하는 것을 의미합니다. 이 \hat{\epsilon}을 텍스트에서 얻은 평균과 표준편차를 이용해서 latent vector \tilde{z}를 생성하는 것이죠. 그럼 \tilde{z}는 이미지에 맞춰서 선택된 것이고 최종적으로 depth 디코더에 입력으로 들어가서 depth map \tilde{y}를 생성할 수 있습니다.
좀 더 자세히 얘기해보면 입력 이미지는 먼저 Swin-L 트랜스포머 백본을 사용해서 인코딩을 합니다. 출력 토큰들을 변환해서 공간적으로 h \times w 크기의 모든 위치마다 d차원 벡터를 가진 구조를 만듭니다. 결국 \tilde{\epsilon}은 [d, h, w]의 shape을 가지는 것이죠. 이는 단순히 하나의 \epsilon을 가지sms 기존의 VAE와 다르게 패치 단위로 더 세밀하게 샘플링을 하기 위함이라고 이야기 합니다. 각 패치별로 \tilde{\epsilon}[i,j]를 사용해서 \tilde{z}[i,j] = \hat{\mu} + \tilde{\epsilon}[i,j] \cdot \hat{\mu}를 계산함으로써 depth map을 더 정확하게 예측할 수 있도록 합니다.
그런데 여기서 이미지만 가지고서는 조건부 샘플링을 할 수 없기 때문에 2.1절에서 얻은 평균과 표준편차도 conditional smapler의 입력으로 같이 사용하게 됩니다. 이러한 conditional smapler는 \tilde{\epsilon} = f_{\psi}(x, \hat{\mu}, \hat{\sigma})와 같은 함수로 정의되어 샘플링을 할 수 있습니다. 이 뒤로는 위에서 설명드린 대로 latent ㅁ벡터 생성해서 디코더를 통해 depth map 예측값을 출력하게 되죠.
conditional sampler를 학습하기 위해서는 식(1)과 마찬가지로 식(2)와 같이 동일하게 loss를 구성하였다고 합니다.

- \tilde{\mu}, \tilde{\sigma} : 배치 사이별 샘플에 대한 평균과 표준편차
\mathcal{L}_{KL}은 샘플링된 노이즈가 표준 정규분포로부터 벗어나지 않도록 학습됩니다.
2.3. Training Loss
위의 식(1)과 (2)에서 사용하는 학습 loss에 대해 더 자세하게 살펴보도록 하겠습니다.
먼저 식(3)은 sacle invarinat depth loss \mathcal{L}_{SI}를 정의한 것 입니다.

- e(i,j) : 예측 depth와 GT depth 사이의 로그 차이
- N_e : 유효한 픽셀 개수
예측과 GT depth 값 사이의 상대적인 구조를 유지할 수 있도록 설계되었습니다. 사용하는 의도는 입력으로 들어오는 장면마다 depth의 절대적인 스케일 범위는 다를 수 있기 때문에 상대적인 depth 오차에 더 집중하기 위함이라고 합니다. 예를 들어 예측 depth가 GT보다 전체적인 스케일이 2배 정도 더 크다고 해도 상대적인 구조가 동일하다면 해당 loss에 대해 크게 패널티를 주지 않는 것이죠.
다음으로 식(4)는 KL divergence loss 입니다.

Text-VAE와 conditional sampler에서 예측한 latent 분포가 표준 정규분포 \mathcal{N}(0,1)과 유사하도록 정규화 합니다. 모델이 너무 이상한 latent 공간으로 가지 안도록 식 (4)를 통해 유도하고자 하였습니다.
2.4. Optimizing Wordepth
WorDepth는 크게 두 개의 분리된 모듈을 가지고 있습니다. Text-VAE와 conditional sampler가 하나의 네트워크처럼 작동해야 하기 때문에 어떻게 학습을 하는 지가 중요하게 여겨집니다.
가장 직관적으로는 Text-VAE 먼저 학습하고, 이후에 freeze한 다음에 conditional sampler만 학습하는 방법이 있겠죠. 그런데 실험적으로 이렇게 하면, conditional sampler가 비효율적으로 학습된다고 합니다. 왜냐하면 이미 freeze된 prior에 맞춰서 억지로 학습이 되기 때문에 local minima에 빠질 수도 있기 때문 입니다. 그렇다고 학습을 두번으로 나눠서 하자니 시간 복잡도나 cost가 너무 많이 발생하게 되죠.
그래서 본 논문에서는 alternating 최적화 방식을 제안하게 됩니다. 말 그대로 텍스트와 이미지 브랜치를 한 번씩 번갈아가며 학습하는 방식을 의미합니다. 텍스트 브랜치를 학습할 때는 이미지 쪽 모듈을 freeze한 채로 텍스트 설명에 대한 평균과 표준편차를 구하고, 앞서 설명한대로 latent 벡터를 구하고 변환하여 예측 depth를 생성을 합니다. 반대로 이미지 브랜치를 학스발 때는 텍스트 모듈은 고절한 채로 conditional sampler 과정을 수행합니다. 여기서 alternating 한다는 건 하이퍼파라미터 p를 정의해서 p가 0.01이라면 텍스트 브랜치는 전체 학습 epoch 중에 1%만 업데이트를 하고 conditional sampler를 주로 학습을 하는 것을 의미합니다. (여기서 0.01이라는 수치는 실험적으로 가장 좋은 결과를 낸 세팅이라고 하네요.)
3. Experiments
실험 데이터셋은 indoor NYU Depth V2와 outdoor KITTI 데이터셋을 사용하였다고 합니다.
Quantitative Results

먼저 Tab.1은 NYU Depth V2에 대한 정량적 실험 결과 입니다.
우선 WorDepth는 모든 평가 지표에서 기존 방법론들보다 좋은 성능을 보이는데, 그 중에서도 \delta < 1.25라는 임계값의 정확도 성능에서 가장 큰 성능 향상을 보이고 있습니다. 이는 예측된 depth 값이 GT와 얼마나 유사한지를 나타내는데, 기존의 방법론들은 depth map의 물체 모양이나 순서 관계는 잘 복원하지만 절대적인 스케일이 어긋나는 경우가 많아 \delta < 1.25에서 성능이 낮게 나오기도 한다고 합니다. 반면에 WorDepth는 scene에 포함된 물체들의 일반적인 스케일에 대해서 텍스트 기반의 사전 지식을 활용하여 예측하기 때문에 더 정확한 예측이 가능하여 해당 지표에서 좀 더 큰 개선을 이루었다고 분석하고 있습니다.

Tab.2는 KITTI 데이터셋에 대한 결과로, 마찬가지로 모든 지표에서 SOTA를 달성하고 있습니다.
NYU와 다르게 \delta < 1.25에서 개선이 있긴 하지만 그 향상 폭이 다소 줄어들어 있는 것을 알 수 있습니다. 이러한 결과에 대해서 KITTI 같은 경우는 scene 안에 포함된 물체라고 할 만한 것들의 크기나 형태가 indoor보다 훨씬 불확실하고 다양하기 때문이라고 이야기 하는데요, 가령 “car”라는 단어 하나로 수많은 자동차의 크기와 형태를 지칭할 수 있기 때문에 이러한 모호함이 텍스트로부터 얻는 사전 정보의 한계로 적용될 수 있다고 합니다.
그럼에도 불구하고 이미지로부터 조건부 정보를 함께 사용하고 있기 때문에 텍스트에서의 불확실성을 어느 정도 상쇄하여서 전반적으로 텍스트 prior를 사용하는게 성능 향상에 도움이 되고 있다는 점을 강조하고 있습니다.
Qualitative comparisons


Fig.3의 error map에서 밝은 부분은 예측 오차가 큰 영역을 나타내는데, WorDepth는 텍스트 description에서 언급되는 물체들에 대해 특히나 더 선명하게 depth를 예측하는 것을 확인할 수 있습니다. 또한 에러가 적은 영역이 장면 전체에 나타난다는 것을 보아 WorDepth가 전반적으로 좀 더 나은 스케일을 추정하고 있다는 것을 의미한다고 합니다. 이는 텍스트로부터 얻는 물체의 크기나 형태에 대한 사전 지식 덕분에 가능한 것이구요.
Fig.4의 KITTI에 대한 정성적 결과도 마찬가지로 두번째 열의 나무나 마지막 열의 여러 대의 자동차와 큰 빌딩과 같은 물체들에 대해 depth 정확도가 향상된 것을 확인할 수 있습니다.
Optimizaing with difference alternation ratios

여기서부터는 ablation study 입니다.
WorDepth의 성능에 영향을 줄 수 있는 요소 중 하나는 텍스트와 이미지 모듈을 얼마나 자주 번갈아 학습시키는 것인가에 대한 alternating 학습 비율 입니다.
Tab.3의 실험 결과, Text-VAE를 너무 자주 학습 시키면 다양한 사전 정보를 잘 학습할 순 있지만 conditional sampler의 수렴 속도가 느려지면서 이미지 정보를 제대로 반영하지 못해 흐릿한 depth map을 얻게 된다고 합니다.
반대로 너무 적게 학습을 하면 (여기서는 0%를 의미하는 것 같습니다.) prior가 반영이 되지 않아 전체 성능을 떨어뜨리게 됩니다. 그래서 저자는 전체 학습 중에 약 1%만 Text-VAE를 학습하고, 나머지는 conditional smapler를 학습하는 것을 기본 세팅으로 선택하였습니다.
Zero-shot Generalization

마지막으로 Tab.4는 zero shot 성능을 통한 일반화 능력에 대한 실험 결과 입니다.
일반적으로 이미지 기반의 모델에서는 도메인이 바뀌게 되면 성능이 급격하게 하락하게 되는데요, 텍스트 description은 서로 다른 장면이 들어오더라도 도메인 차이가 크지 않기 때문에 보다 일관된 정보를 제공할 수 있다고 합니다.
이를 검증하기 위해 NYU Depth V2로 학습해서 SUN-RGBD 데이터셋에 대해 finetuning 없이 바로 테스트를 해보았다고 하네요.
실험 결과, 기존의 이미지 기반 모델들보다 좋은 성능을 보이고 있는데, 이는 텍스트 기반 사전 정보가 새로운 장면에서도 잘 작동함을 보여주고 있습니다. 즉, 텍스트는 장면의 변화나 보지 않은 환경에 대해서도 일반화 능력을 제공할 수 있다는 것을 강조하고 있습니다.
안녕하세요. 좋은 리뷰 감사합니다.
두 개의 분리된 모듈을 잘 학습하기 위해 alternating 학습 방식을 사용한다고 말씀해주셨는데요, 이게 epoch 중에 무작위로 1%만 Text-VAE를 학습하기만 하면 되는건가요 ? ablation study의 실험 세팅이 정확히 어떤 지에 따라 성능이 좀 달라질 거 같은데, 어떤 구간의 1%를 사용하는 것은 영향이 없는걸까요 ???
감사함다.
안녕하세요, 리뷰 읽어주셔서 감사합니다.
논문에서 어떤 구간을 1%로 사용한지에 대해서는 언급하진 않았지만, 말씀하신 것처럼 무작위로 선택되는 것이기 때문에 특정 에포크에서의 사용 여부보다는 전체적인 학습 비율이 성능에 더 큰 영향을 준다고 보는 게 맞을 것 같습니다.
감사합니다.
하이요. 리뷰 읽다가 궁금한게 있어서 질문 남깁니다.
“이 노이즈 벡터를 이용해서 최종 샘플링한 latent 벡터는 ~~~ . 이렇게 만든 벡터는 latent 공간에 있기 때문에 이미지 차원으로 변환을 해주고 depth 디코더를 통해 depth map을 예측합니다.”라는 내용이 있는데 여기서 latent 공간에 있는 벡터를 이미지 차원으로 변환해준다는 부분에 대해서 설명 좀 해주실 수 있나요?
엡실론이 그냥 d차원을 가지는 벡터인 것 같은데, 평균과 표준편차도 각각 d 차원을 가지는 벡터값?이라고 이해를 했고, 여기서 표준편차 곱하고 평균 더해서 latent vector z를 만들었을 때 이것을 이미지 차원으로 변환을 어떤식으로 진행하는건가요?
감삼다.
안녕하세요, 리뷰 읽어주셔서 감사합니다.
latent 공간에서는 d차원의 벡터로 이미지 공간 정보와 같은 형태를 가지고 있지 않아서 이미지 차원에 맞추어서 모든 계산 과정이 끝난 후에 d차원의 벡터 z를 이미지 공간으로 복사하여 d x h x w 형태의 z’로 변환해주는 과정을 의미합니다.
감사합니다.
안녕하세요 좋은 리뷰 감사합니당.
간단한 질문하나 묻고싶습니다. text에서 나온 평균과 분산을 이용해서 이미지에 맞춘값을 샘플링해서 준다고 하셨는데 이미지에 맞춘 샘플링은 어떻게 이루어지는 잘 이해를 못했습니다 ㅠ
감사합니당
안녕하세요, 리뷰 읽어주셔서 감사합니다..
논문에서 text로 얻는 평균과 분산은 텍스트에 적합한 다양한 장면들의 분포를 나타내는 prior 역할을 하게 됩니다. 그런데 그 중에서 이미지에 가장 잘 맞는 depth map을 얻고 싶은 것이기 대문에, 단순히 랜덤 샘플링을 하는게 아니라 이미지로부터 샘플링할 epsilon 값을 예측하는 구조를 만든 것입니다.
그래서 이미지를 입력으로 conditional sampler가 그거에 맞는 epsilon 값을 예측하고 나서 그걸 텍스트에 나온 평균과 분산에 대입한 latent vector를 만드는 것이죠. 이 latent vector가 그 이미지에 가장 적합한 latent 표현이 되면서 이 latent 표현으로 만든 depth map이 이미지와 가장 잘 대응하는 depth map이 될 수 있는 것 입니다.
감사합니다.