오늘은 Mono Depth Estimation에 대해서 간략히 설명을 해보려고 합니다.
Depth Estimation이란????! Depth Estimation이란 말 그대로 영상에서 깊이를 추정하는 것입니다.
위의 그림을 예로 설명을 해보도록 하겠습니다.
위의 그림에서 왼쪽에 차가 가까이 있고, 가운데와 오른쪽 사이의 노란색 표지판은 왼쪽의 차보다는 멀리 있습니다. 이와 같이 사람은 사진을 보고, 어떤 물체가 가까이 있고, 어떤 물체가 멀리 있는지를 대략적으로 알 수 있습니다.
하지만, 컴퓨터는 사진만 보고 깊이를 추정하기 어려워 합니다. 따라서 깊이를 알 수 있도록 Train을 하는 것입니다.
위의 그림에서 원본 이미지 아래에 있는 그림을 보시면, 가까이 있는 부분은 밝은색, 멀리 있는 부분은 어두운 보라색으로 추정된 것을 보실 수 있습니다.
Depth Estimation에는 Stereo와 Mono가 있는데요
Mono Depth Estimation이라는 것은 말 그대로 하나의 Image만을 가지고 Depth를 추정하는 작업입니다.
근데 여기서 궁금한 점이 있는데 그럼 하나의 Image만을 가지고 Depth를 추정하는 것이 당연한 것이 아닌가라고 생각하시는 분들이 있을 것 같은데요,
Depth를 추정하는데는 Stereo Camera로 찍은 Left Image와 Right Image가 필요합니다.
Depth는 Stereo Camera로 찍은 Left Image와 Right Image에서 동일 점을 찍었을 때 얼마만큼의 차이가 나는지의 Disparity를 통해서 구할 수 있습니다. 아래 그림을 보면 이해가 좀더 될 것 같습니다.
그림에서 보면 분명 같은 이미지 인 것 같은데 위치가 조금씩 다르죠. 이것이 바로 Stereo Camera로 촬영해 얻은 Left Right image입니다. 그렇다면 궁극적으로 Depth를 추정하기 위해서는 Disparity를 알아야 하고, Disparity를 알려면 Left Image와 Right Image가 모두 필요하며 이 두 Image의 차이인 disparity(시차)를 구해야 하는 것입니다.
그럼 간단하게 Stereo Depth Estimation은 Left Image와 Right Image의 disparity를 구해서 그값을 이용해 Depth를 구하면 되겠구나라고 생각하실수 있겠죠.
그렇다면 Mono Depth Estimation은 어떻게 Depth를 추정할까요?
논문 리뷰에서 Godard의 Left-right consistency에 설명이 되어있지만 여기서도 설명을 드리자면,
Mono Depth를 추정하기 위해서 네트워크에는 하나의 Image 즉, Left Image만을 넣습니다.
그리고 나서 Left image를 통해서 2개의 Disparity를 뽑아냅니다(임의로 네트워크를 통과한 값이 나오겠죠).
그리고 나서, Loss에 Reconstruction Loss를 사용해
1. 현재 추정한 Left disparity와 Right Image를 이용해 Left image를 Reconstruct하여 기존의 left image와 비교
2. Right disparity와 Left Image를 이용해 right image를 Reconstruct하여서 기존의 right image와 비교해
이상한 disparity를 구했을 경우에는 Loss를 크게 주어 정답에 가까운 disparity를 찾아나가는 방식으로 진행이 됩니다.
근데 여기서 Left disparity와 Right Image를 이용해 Left Image를 Reconstruct한다는 게 무슨 말인지 잘 모르시는 분들도 있을 것 같습니다.
위의 그림과 같이 disparity를 통해서 Right image 또는 Left image의 pixel값 위치를 알 수 있는데요, 즉 Right disparity, Left disparity를 이용해서 Left image, Right image를 추정한다고 생각하시면 됩니다.
오늘 간단히 MonoDepth 에 대한 설명을 해보았습니다!
궁금한 점이 있으시거나, 잘못된 설명이 있으시면 언제든 댓글로!
'딥러닝 > MonoDepth estimation' 카테고리의 다른 글
KITTI DataLoader 구현하기! (5) | 2021.01.02 |
---|---|
Image Reconstruction은 어떻게?? 코드 분석 및 예시 결과 (0) | 2020.04.03 |