High Quality Monocular Depth Estimation via Transfer Learning(DenseDepth) 논문리뷰
-
2018년에 나온 Depth Estimation 분야 논문으로 Encoder-Decoder 구조로 이루어진 모델입니다.
Contributions
transfer learning(전이 학습) 기반으로 깊이 추정 정확도/품질 향상
학습 더 빨리 진행되도록 loss 함수 개선
깊이 추정 일반화 성능 평가를 위한 합성된 실내 장면 데이터를 테스트셋으로 제안
관련 연구
multi-view : multi-view에서는 CNN을 이용한 stereo 재구성 방법이 최근 제안되었다. 이 논문에서는 단일 이미지 깊이 추정의 성능 향상에 초점을 맞춰서 진행하고 있다.
transfer learning : 이미지 분류를 위해 설계된 모델을 인코더에 전이 학습으로 사용함
Encoder-Decoder : 이미지 segmentation, 이미지 복원 등 많은 비전 분야에 사용되고 있고, 깊이 추정에서도 최근 성과가 잘 나오고 있다. 일반적으로 하나 이상의 인코더-디코더 네트워크를 더 큰 네트워크의 하위 모듈로서 사용하고 있다. 위의 그림2를 보면, 이 논문의 모델은 skip-connection(=residual connection)을 이용한 하나의 인코더-디코더 아키텍처를 사용한다.
제안한 모델
- 네트워크 아키텍처 : ImageNet에서 사전 학습된 DenseNet-169 모델을 인코더로 사용하여 feature를 추출하고, 최종 depth map을 출력하기 위해 upsampling 레이어를 사용한다. 이러한 upsampling 레이어와 관련 skip-connection이 디코더 부분이라 볼 수 있다.
* DenseNet-169보다 다소 복잡하고 다양한 SOTA 인코더도 실험하고, 다른 디코더 유형도 실험해봤는데 깊이 추정을 위한 인코더-디코더 아키텍처 설정에서 더 복잡한 Convolution block을 갖도록 한다고 해서 반드시 성능이 향상되지는 않았다.
- Loss는 GT로 주어지는 depth map과 모델 출력값 사이의 L1 Loss로 정의하였습니다.
- Augmentation
vertical flip을 적용하게 되면 학습이 어려워질 수 있기 때문에(ex. 바닥과 천장의 기하학적 특성 차이), 50%의 확률로 horizontal flip만 적용하였습니다.
이미지 회전은 해당하는 실제 깊이에 대해 잘못된 데이터가 들어갈 수 있어서 제외, 입력 이미지에서 Red와 Green 채널을 바꾸면 성능이 향상 되었다. (25% 확률로 적용 / 이게 왜 좋을지 모르겠네요. 일반화에 문제가 생기는 건 아닐지..)
4. 실험 결과
실험에 사용한 데이터셋
- NYU Depth v2 : 640x480 실내 장면 이미지, depth map 제공. 120,000개의 학습 데이터, 654개의 테스트 데이터가 있음. 이 논문에서는 50K 하위 집합에서 학습을 하고(왜 전체를 안썼을까), 입력 이미지와 GT depth map은 320x240 해상도로 사용한다.
- KITTI : 주행하는 차량에 장착된 장비를 사용하여 캡처한 야외 장면의 스테레오 이미지, 해당 3D 레이저 스캔. 1241x376 이미지인데 depth map이 누락된 데이터가 많음. 이 논문에서는 왼쪽에서 본 26000개 정도의 이미지를 학습에 사용하고, 그 중 누락된 깊이 값은 inpainting 방법을 사용하여 채워서 사용한다.
각 데이터셋별 SOTA 다음 순위
이 논문에서 보여주는 샘플들에서는 SOTA가 일부분을 놓쳤고, 이 논문의 모델은 잘 캐치한 걸 볼 수 있습니다.