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

[논문 읽기] Endo-Depth-and-Motion: Reconstruction and Tracking in EndoscopicVideos using Depth Networks and Photometric Constraints

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

두서 없이 읽는 글.

의료쪽 depth estimation 보려고 읽는거지만 사실은 SLAM이나 SfM같은데에 훨씬 관련이 깊어보인다.

 

Endo-Depth-and-Motion: Reconstruction and Tracking in Endoscopic Videos using Depth Networks and Photometric Constraints
https://arxiv.org/pdf/2103.16525.pdf

 

뭐하는 연구인가요?

  • Task: Scene Reconstruction & Camera Motion 추정
  • Output: 6 DoF camera pose, dense 3D scene models (이건 어떤 형태지)
  • Input: monocular endoscopic sequences를 사용
  • Approach:
    1. self-supervised learning을 활용한 depth network 사용. pseudo-RGBD frames를 만들 것.
    2. 그리고나서 photometric residuals을 활용하여 camera pose tracking을 할거다. 
    3. registered depth map을 volumetric representation으로 fuse 할 것 이다.

 

Depth Estimation?

처음에는 일반적인 CNN 모델을 가지고 supervised learning을 했다. depth sensor를 통해 GT를 취득.

시간이 흐르면서 아키텍쳐 자체를 더 잘 만드는걸로 발전하면서 성능향상이 있었다.

그러고나서 self-supervised가 등장했는데, 여기서는 주로 multi-view photometric consistency를 통해 학습한다.

예시: [17] 스테레오를 활용한 self-supervision을 제시함. [18] 이전 연구를 monocular에서도 되게 일반화하였음. 그 이후에 굉장히 많은 연구들이 있었음을 related work에서 설명하는데 일단 넘어가고 이 논문에 집중하자.

 

아무튼 Endo-Depth가 가지는 특징:

1. 모노, 스테레오, 혹은 둘다 사용한 endoscopes에서 self-supervised learning 가능

2. self-supervised training을 하면 synthetic data를 활용함으로써 생기는 domain shift로 인한 (안좋은) 효과들을 제거할 수 있음

3. photometric loss는 이미지 전체에 걸친 정보를 활용함

4. 몇가지 디테일을 통해서 robust한 모델을 만들 수 있음.

 

 

 

아키텍쳐 요약

1. pixel-wise depth: endoscopic monocular video에서 keyframes에 대해서만 추출함. 딥러닝 사용. monodepth2

2. 각 frame의 motion은 가장 가까운 keyframe과 비교하도록 하는데, photometric error를 최소화하도록 학습한다. (이미지 피라미드 사용)

3. keyframes의 depth map들을 fuse하여 TSDF-based volumetric representation을 구한다. (이건 그냥 인풋 아웃풋만 봐야지)
https://hegosumluxmundij.tistory.com/111 TSDF 설명 참고

 

Step1. Depth

Endo-Depth

Monodepth2 Network를 사용한다. 이건 작년에 봤던 EndoSLAM도 썼다. 이걸 많이 쓰나봄.

image reconstruction 관점에서 학습한다. https://arxiv.org/pdf/1806.01260.pdf monodepth2 논문

 

Monodepth2 요약

monodepth2 논문의 유투브에서 캡쳐한 자료

 

  • U-Net encoder-decoder 구조. 디코더 아웃풋이 depth이다.
  • encoder: ResNet18
  • mapping function f: R^{W*H*3} -> R^{W*H}가 딥러닝으로 모델링 된 것.
  • 그 mapping function을 학습하는 loss가 self-supervised learning이며, 아래와 같다.
  • Lp: photometric loss.
    target image I_t의 픽셀값과 source->target warp한 것의 픽셀값 사이의 L1 loss(=photometric reprojection loss)에다가 Structural Similarity Index Measure를 활용한 수식을 추가한다.
    (photometric reproj loss는 이미지 픽셀에서 계산한다.)

loss는 이렇다. [.]는 sampling operator, alpha는 weights.

  • Ls: smoothing loss.
    edge부분에서 discontinuity가 있으니까, 그런 surface를 보존하면서 모델을 수렴시키려는 regularization term이다.
    수식 대충 보니까 depth map에서 하는 것 같다.

d_t*는 mean normalized inverse depth이다. 이 식은 monodepth2에서 가져온거라 notation이 다를 수 있다

 

L_p는 타겟 이미지 It의 픽셀들에 대해서 appearance residual을 최소화하도록 학습한다.

source image -> target image로 warp 시킨 것과, 그냥 타겟 이미지에서 차이를 구한다. (샘플링한 픽셀에 대해서)

그러면 source, target을 뭘로 하는가?

  • stereo: source, target을 stereo 각각 left, right 이미지로 두고 학습
  • mono: 전후 프레임 이미지 사용
  • 둘다 하는것도 가능

왜 갑자기 warp해서 구하는건지, 학습 어케 하는지는 monodepth2 봐야겠다. depth를 직접 구하도록 supervision준게 아닌데 어떻게 학습했을까.

대략 이정도까지는 이해 하겠는데, 논문이나 다른 자료가 잘 이해 안가서 모르겠다. 아래부터 depth에 대한 것들은 뇌피셜이라 불명확함.

 

T는 6DoF relative pose

-

그니까 말로 풀어서 설명을 해보자. 이미지 RGB를 가지고 loss를 계산하여 모델을 최적화 할건데, 스테레오 이미지를 활용해 하나를 warp 시켜서 매칭하는 것임. 거기서 photometric loss를 계산하겠다는거.

그러면 warp 함수를 잘 만드는게 중요할텐데. 아마 학습하려는 모델 파라미터도 이걸 구현하기 위함일거고. 어떻게 생겼나?

미리 계산된 transformation matrix가 있을 때, 

 

픽셀 컬러값 p와 depth map을 활용하여 파이 인버스 함수를 적용. 그러면 3차원 좌표가 나오는데.

여기에 Rotation, Translation 파라미터를 활용하여 이동된 x,y,z 좌표를 구한다. 참고로 transformation matrix는 스테레오에서는 미리 calibration이 되며, 모노의 경우 별도의 딥러닝 네트워크를 둔다는 듯.

그리고 그 좌표를 다시 파이 함수를 취하여 p'를 얻는다. 이게 픽셀 값이 같아야겠지. 두 값이 유사한 픽셀들만 샘플링한게 [p]라는 것 같다.

 

그럼 대체 파이와 파이 인버스 함수가 뭐냐는거다. 뭔가 3차원 공간에 뿌렸다가 다시 projection 할 수 있는 게 있나보다.

이 논문에는 이렇게만 써있고,

원 논문 monodepth2를 보면 이렇게 설명한다.

I_{t'->t}와 I_t의 photometric loss를 구할건데, I_t야 원본 타겟 이미지 RGB겠지만 I_{t'->t}는 I_t'을 워프를 시킨거다.

그러면 I_{t'->t}를 어떻게 구하느냐. D_t, T_{t'->t}, intrinsic parameter를 가지고 I_t'를 projection 후 샘플링을 한다.

설명이 이게 끝이다. (...?)

 

????

?

https://darkpgmr.tistory.com/83 이건 epipolar geometry 얘기

 

[76] https://arxiv.org/pdf/1704.07813.pdf 논문에 가보니까 조금 더 자세히 설명이 있다.

그렇다네요. 아무튼 depth가 여기 들어있으니 depth network가 학습이 되겠지요

pose야 mono로 하면서 다른 deep network로 학습해서 얻고, stereo면 pre-calibrated 되어서 이미 transformation matrix를 가지고 있다는 듯?

다들 국룰처럼 쓰나보다. 그래 나만 몰랐다 이거지...

 

아무튼 depth map 뽑았고 다음 단계 가자.

차이가 많이 나는 듯. 셋중에 뭐가 제일 좋은건지는 뒤에서 결과를 봐야겠다.

 

Step 2. Photometric Tracking

target keyframe I_k, current source frame I_c.

Output: transformation matrix T_ck 구하기

 

T_ck를 optimize하기 위해서 non-linear least square를 Lucas-Kanade style로 수식화하여 photomtric error를 최소화했다고 한다. DTAM이라는 논문과 유사한 방식을 썼다. 먼저 camera rotation을 최적화하고 (pyramid의 lowest level에서 시작), 점점 fine한 스케일로 가면서 6DoF 카메라 포즈를 optimize한다. 

아까랑 비슷하네 뭐.

 

 

Step 3. Volumetric Reconstruction

TSDF를 활용했다. 이전에 구한 pseudo-RGBD keyframes를 활용한다.

먼저, scene을 voxels 단위로 나눈 다음에,

cumulative signed distance function d: R^3 -> R을 통해 모든 정보를 누적하고,

closest surface에 대해서 거리를 표현한다.

 

Marching Cubes algorithm등을 활용하면 representation을 복원할 수 있다는데, 이 논문에서는 Open3D를 통해 구현했다.

여기 두 포스팅을 참고하면 좋을 것 같다.

https://hegosumluxmundij.tistory.com/111

 

3D Reconstruction , TSDF

1. 3D Reconstruction 이란? 실제 물체의 모습이나 모양을 복원하는 과정 여러 2D images 로부터 3D image 얻는 과정 본래 image는 3D scene에서 2D plane으로 mapping, 이 과정에서 Depth(깊이) 손실 단일 이미지..

hegosumluxmundij.tistory.com

https://m.blog.naver.com/jws2218/222049854706

 

TSDF(Truncated signed distance field)

Reconstruction 핵심요소 a) Depth Map Conversion · Vertex map(Point Cloud) 생성 - Kinect 카메...

blog.naver.com

 

Experiments

Hamlyn Dataset에서 실험했다. http://hamlyn.doc.ic.ac.uk/vision/

여기 웹사이트 링크가 있는데 안 들어가져서 확인 못했다.

 

정량적 평가를 위해서는 GT가 필요하고, GT depth를 얻기 위해서 stereo로 생성했다는데, Libelas (Library for Efficient Large-Scale Stereo Matching)를 사용했다고 한다. 이미지 경계선, 가끔은 이미지 내부에 blank area가 있기도 해서 완전하지는 않다고 한다.

http://www.cvlibs.net/software/libelas/ Libelas 툴

 

 

2epoch (stereo+mono)

9 epoch (mono)

 

21-fold CV. 20개로 학습하고 하나로 테스트 하는걸 21번 한 것.

모델은 imageNet pretrained parameters

 

연산이 빠르다.

Depth 속도
카메라 속도
볼륨 렌더링 속도

 

성능?

depth: 스테레오가 좋아보임

참고로 스케일링은 이거라고 한다.

다른 모델과 비교해도 좋다고 한다. 케이스별 분석

 

 

카메라 포즈나 볼륨 성능: GT 없어서 못잼. qualitative analysis만 가능

 


여담: Hamlyn Dataset 찾아보자.

Endo-Depth-and-Motion 논문에서 아래 네 편의 논문을 인용하고 있다.

 

[54] P. Mountney, D. Stoyanov, and G.-Z. Yang, “Three-dimensional tissue deformation recovery and tracking,” IEEE Signal Processing Magazine, vol. 27, no. 4, pp. 14–24, 2010.

[55] D. Stoyanov, G. P. Mylonas, F. Deligianni, A. Darzi, and G. Z. Yang, “Soft-tissue motion tracking and structure estimation for robotic assisted mis procedures,” in International Conference on Medical Image Computing and Computer-Assisted Intervention, 2005, pp. 139–146.

[56] D. Stoyanov, M. V. Scarzanella, P. Pratt, and G.-Z. Yang, “Real-time stereo reconstruction in robotically assisted minimally invasive surgery,” in International Conference on Medical Image Computing and Computer-Assisted Intervention, 2010.

[57] P. Pratt, D. Stoyanov, M. Visentini-Scarzanella, and G.-Z. Yang, “Dynamic guidance for robotic surgery using image-constrained biomechanical models,” in International Conference on Medical Image Computing and Computer-Assisted Intervention, 2010, pp. 77–85.

 

 

반응형

댓글