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

Video Odometry 연구 시작 - EndoSLAM 셋업해보자

by 포숑은 맛있어 2021. 5. 4.
반응형

아직 KITTI dataset 리퀘스트 답장이 오지 않았다. 방금 보내고 오는 길이다.

데이터셋을 받는다면 바로 DeepVO, DF-VO를 시도하려고 한다.

www.cvlibs.net/datasets/kitti/eval_odometry.php


 

그래서 EndoSLAM부터 시도하려고 한다.

matlab 코드가 있어 꽤 번거롭긴 하겠지만.. 아무튼 EndoSLAM 셋업을 시도 해봐야겠다. 

 

ubuntu 18.04, 도커 사용.

 

샘플 데이터500MB 정도이다. 풀데이터는 현재 공개 되어있지 않다.

3월말 기준으로, 깃허브 이슈상에서는 몇주 후에 오픈소스로 제공하겠다고 하였으나 5월초인 아직까지 풀데이터가 올라오진 않았다.

Pretrained model도 제공되는데, 200MB 정도 용량.

cd ~
git clone https://github.com/CapsuleEndoscope/EndoSLAM
cd EndoSLAM
pip install -r requirements.txt


# 데이터셋을 모두 셋업한 후
# 나는 VO를 돌릴거라서

model='pretrained/exp_pose_model_best.pth.tar'  #DIR_TO_PRETRAINED_MODEL
data='EndoSLAM/EndoDataset/validation_dataset/Frames' # data dir
result='result/'  #DIR_TO_RESULTS
python EndoSfMLearner/test_vo.py  --pretrained-posenet $model --dataset-dir $data --output-dir $result

 

 

데이터셋을 어떻게 해야하는거지?

다운받고 압축을 풀면 아래와 같은 형태로 되어있다. 물론 모든 데이터는 없고, 장기별로 하나씩만 있다.

그런데 깃허브에서 요구하는 데이터는 이러하다.

일단 test 할때에는 형식 맞출 필요 없다. 그냥 프레임들이 잔뜩 들어가있는 폴더를 넣어주면 된다.

Frames 폴더에는 HighCam에 있는거 아무거나 가져왔다.

 

실행하면 이렇다.

 

그러면 결과 파일에 이미지별로 나온다.

6-DoF 아닌가? 왜 output이 12 칼럼이지?

6 dof output 맞는데 뭔가 형식을 global pose 형태로 바꿔준 것 같다. 잘 모르니 나중에 확인해보자.

 

학습 코드 돌리려면 train.txt, val.txt 등 위에 얘기한대로 데이터를 가공 해놔야한다.

cam.txt가 없다고 뜨는데, 잘 보면 Calibration 폴더가 풀데이터셋에는 있다. 하지만 현재는 제공되지 않았다.

아직은 알 수 없는걸로. 선행지식이 없는 관계로 뭐가 디폴트값인지 알 수 없어서 그냥 1을 9개 입력해서 txt파일 만들었다.

 

그러면 학습은 잘 돌아간다. 흠...

validation output 12개의 값이 뭘 의미하는지만 좀 알아봐야겠다.

 

매트랩이 있어서 쫄았는데 일단 주어진거 돌리는데는 별 상관 없었다.

아마 커스텀 데이터셋으로 학습할거라면 calibration parameter를 알아내는 방법이 필요해보인다.

레이블의 경우 일단 dispnet과 pointnet 둘다 unsupervised로 알고있어서 상관 없을거다.

 

그래도 혹시 모르니까 확인해봐야한다.

 

TODO

  • train.py 확인하면서 학습 모델 자세히 알아보기
  • 6 DoF값이 output인것같은데, test output으로 나오는 12개의 값 정체를 알아내기
  • 커스텀 데이터셋으로 돌려보기
반응형

댓글