본문 바로가기
AIML 분야/Depth, Camera Pose, VO, SLAM 등

[연구일지] 2022.08.10 Monocular Depth Estimation 기록

by 포숑은 맛있어 2022. 8. 10.
반응형

[상황]

데이터셋 https://arxiv.org/pdf/2101.01133.pdf 

모델 Monocular Depth Estimation Toolbox 사용 (이전 포스팅 참고)

텐서보드로 train loss curve와 image-pred-GT visualization 확인중

GT가 tiff file이고 값의 범위가 넓음

 

[몇가지 이슈]

  1. [GT 관련] 양수값으로도 몇백 이상의 큰 값이 있지만 0보다 작은 값이 있다.
  2. [GT 관련] 빈 값이 많아서 자글자글 -> 실제로는 depth map 차이가 크지만 이미지로 뽑아보면 빈값때문에 어두워 보이는 경향이 있음.
  3. [학습 관련] 상대적으로 predicted output값이 크게 나오는 경향이 있었다.
  4. [테스트 관련] depth estimation은 뭔가 evaluation metric 종류가 많고 데이터셋마다 다른 것 같다. 나는 어떻게 구현할지

 

[디버깅 내역]

  1. 값 스케일링
    max_depth값 지정한 것으로 normalization. 그냥 나눠줬다.
    -> 시각적으로 결과가 많이 좋아짐

 

[다음 단계?]

  1. 마스크 추가하기 (GT 이슈)
    max_depth값보다 크거나, 0보다 작은 값(=너무 큰 양수값이거나 아예 음수값이면)을 마스킹하여 loss 발생시킬때 제외하기
  2. validation, test 코드 짜기 (정량적 평가 Metric 맞춰서 구현)
  3. Transfer Learning 시도하기
    GT가 없는데 depth estimation을 해야하는 target domain에다가 현재 모델을 가지고 inference 해보기. 과연 결과는?

 

[여담]

stereo에서 다음단계 3번에 적어놓은대로 그냥 하면 domain transfer 문제가 있다고 하셨다. GAN으로 style transfer하여 이미지를 바꿔도 잘 안먹힌다고 하셨다.

그러면 저 public dataset에서 학습한 모델로 파라미터 init을 한다음, 딥러닝 아닌 고전 알고리즘으로 pseudo GT를 뽑아 얻은 depthmap으로 supervised learning을 하는 게 나을지도.

 


으악 추가 한줄 알았는데 아니었음

지금 Sigloss 발생시킬때 찍어보니까 원래 depth값(대충 100정도)으로 GT, pred 둘다 나옴

 

궁금한거: depth scale 조절 해야하나?

  • 로스 발생시킬때 원래 log 쓰니까 값이 작은가? -> depth scale 조절을 안하는게 낫나?
  • 일단은 스케일 해봐야지. mmseg의 loading.py에 있는거 없애고 데이터로더 구현한거에서 처리하도록 변경했으니까,
    일단은 줄여놓고 -> plot하거나할때만 값 키워서 쓰기
  • 그러면 sigloss 발생시킬때와 Eval때 valid_mask를 계산하는 과정에서는 원본 스케일 써야하므로 유의
반응형

댓글