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

[Monocular Depth Estimation] Mono depth Toolbox 사용: AdaBins 돌려보기

by 포숑은 맛있어 2022. 7. 19.
반응형

이전 게시글에 이어서 이제 코드를 돌릴거다.

 

[참고]

Depth Estimation 관련해서 요즘 정리한 글 (예전건 기억 안나고 요즘 쓴거)

 

BinsFormer 공식 코드이지만 여러 모델이 구현되어있다.

KITTI Dataset은 앞에서 미리 다운받았었다.

https://github.com/zhyever/Monocular-Depth-Estimation-Toolbox

 

GitHub - zhyever/Monocular-Depth-Estimation-Toolbox: Monocular Depth Estimation Toolbox based on MMSegmentation.

Monocular Depth Estimation Toolbox based on MMSegmentation. - GitHub - zhyever/Monocular-Depth-Estimation-Toolbox: Monocular Depth Estimation Toolbox based on MMSegmentation.

github.com

 

코드 생겨먹은게 그냥 mm시리즈네? 해서 보니깐 mmsegmentation v0.16.0. 기반이란다. 애증의 mm

(거봐. depth estimation 완전 semantic segmentation 삘 난다고 그랬지. 착각이 아니었음)

 

주의 사항?

  • setup 별거 없긴 한데 AdaBins의 경우 chamfer loss 계산을 위해 torch3D 설치해야한다.
    인퍼런스만 할거면 상관 없긴 하다.
  • data preparation 문서에 적혀있는대로 맞춰서 압축을 풀어서 디렉토리 정리해주자.
  • pretrained model도 잘 받아주자.
  • BTS같은건 캘리브레이션 파라미터가 필요한 것 같다. 추가로 다운받아야함. 그냥 AdaBins 돌릴게요

 

Step 1: Inference 확인

인퍼런스부터 해보자.

 

CONFIG_FILE='configs/adabins/custom_ada.py'
CHECKPOINT_FILE='../adabins_efnetb5_kitti.pth'
RESULT_FILE='../results'
GPU_NUM=2
#EVAL_METRICS='miou'

#./tools/dist_test.sh ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM} --show-dir=${RESULT_FILE} #--eval ${EVAL_METRICS}


python tools/test.py $CONFIG_FILE $CHECKPOINT_FILE --show-dir $RESULT_FILE --eval miou

 

굿

 

인퍼런스 예시: 2011_09_26_2011_09_26_drive_0002_sync_image_02_data_0000000006.png

depth 잘 뽑힌다

 

 

Step 2: train 확인

train data 2천장으로 줄여서 대충 돌리려는데 chamfer loss 땜에 에러 해결중

https://github.com/facebookresearch/pytorch3d/blob/main/INSTALL.md  
libcudart.so.10.1 에러 뜬다. 해결하다가 재수없으면 장비랑 또 안맞아서 DDP 에러도 뜰거임.

Torch3D dependency를 확인해보면,

"1.8.0"

...

don't go show를 시작한다.

torch 버전 올라가면 GPU 메모리가 늘어나서 (대신에 도커 이미지 배포할때 용량 줄어듦) 일부러 줄여놓았는데... 우울하다...

 

 

... 고치다가 엉키는것보다는 아예 mmsegmentation부터 다시 설치하는게 정신건강에 이롭습니다.

mmsegmentation 가서 이대로 따라해주고. (depth 코드는 docker파일 지원 안함)

mmcv-full 1.3.9 깔아야지. 아까 depth 보니까 mmcv 지원하는 버전이 좀 낮았던걸로 기억함

pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html

pip install pytorch3d

pip install packaging

 

apt-get update

apt install nvidia-cuda-toolkit

apt-get install cuda-cudart-10-1

 

진심 정신병 올 것 같아서 그냥 이미 있는 도커 찾아봤다. torch3d를 지원하는 도커면 알아서 해결해놨겠지

docker pull gaetanlandreau/pytorch3d (https://hub.docker.com/r/gaetanlandreau/pytorch3d

마지막 희망이다...

 

opencv랑 mmcv-full 깔아주고.

pip install future tensorboard 해주고

에러 뜨는거 다 깔아주고.......

 

훌륭합니다!

 

뭔가 경고가 뜨지만 무시해주자

누구신진 모르겠지만 gaetanlandreau님, 만수무강 하시길 바랍니다.

 

 

 

10 에폭(이지만 2천개만 가지고 학습한거라 성능 안좋음) 대충 돌리고 인퍼런스 다시 확인.

이거 그냥 학습 되나 확인만 하고 바로 다른 데이터셋을 사용할거라서, loss 수렴 제대로 안했지만 그냥 테스트 해봤다.

비교를 위해 같은 데이터를 띄워봄.

오 덜 수렴하면 이런 느낌이구나.

 

Step 3: Custom Dataset에서 해보기

- GT는 stereo SOTA 알고리즘 돌려서 얻은 depth map을 쓸 예정

하고나면 정리 예정

반응형

댓글