티스토리 뷰
SLAM은 동시적 맵 생성 및 로컬화지만, 요즘 트렌드는 sparse한 맵을 구성함
맵이 dense하지 않는 이상 이를 제대로 사용하기 힘듦,
그렇다고 덴스 맵을 사용하기 위해 lidar를 사용하면 비쌈
다른 방법으로 Stereo camera를 이용한 방법이 있는데, 부정확하고 자원이 많이 소요됨
이는 카메라 하나로 학습을 통해 덴스한 뎁스를 추론함.
스테레오로 비지도 학습 -> 모노로 추론함
또한 왼쪽 시차와 오른쪽 시차의 일관성으로 더 정확한 덴스맵을 구성
인간이 사실 한쪽 눈으로도 뎁스를 추정가능
-> 원근감, 친숙한 물체의 크기 지식, 조명, 음영, 폐색과 같은 학습 기반 지식
기계는 스테레오 매칭 혹은모노 + 모션으로 뎁스를 추정함
카메라가 rectified 됐을 때, 시차를 알면 뎁스를 구하는 것은 쉬움
시차를 얻기 위해 : 타겟 픽셀은 1차원 검색 문제 -> 그러나 연산량이 너무 큼
-> 검색 방식에는 L1을 주로 많이 사용하며, NCC가 정확도가 가장 높긴 함
-> 더 정확히 하려면 비네팅, 밝기 비선형성, 카메라 싱크 등을 고려
-> 칼리브레이션은 기본
-> 이러한것을 해도 부정확
-> 한편, 모두 서치하지 않고 컨벡스로 보고 풀려고 해도 논컨벡시티가 너무 큼
현재는 픽셀을 여러 개로 묶은 다음 좋은 초깃값을 주고 l1으로 컨벡스 문제로 푸는것이 일반적
그래도 모든 픽셀에 대해 최적화를 진행해야 하므로 연산량이 어마무시하고
이미지 그래디언트가 낮은(텍스쳐가 적은곳)은 매칭이 그래도 힘듦 -> 해가 여러 개나 부정확
논문에서는 이미지에 시차를 샘플링하여 다른 뷰의 이미지를 생성함
즉 왼쪽 이미지에, 오른에서 본 시차맵을 적용하면 오른쪽 이미지가 생성되고
오른쪽 이미지에 왼쪽에서 본 시차맵을 적용하면 왼족 이미지가 생성됨
학습은 스테레오 카메라를 사용한 비지도 학습
spatial transformer network을 통해 시차맵 생성
가장 간단한 방법 :
왼쪽 이미지에서 오른쪽 이미지를 얻을 수 있도록 시차맵을 만들게 함 -> 시차맵 만드는 법을 학습
왼쪽 이미지를 신경망에 넣고 왼쪽 이미지와 샘플링하여 오른쪽 이미지가 생성하게끔 신경망을 학습
-> 결과는 오른쪽에서 본 시차맵임
-> 그러나 이걸 원하지 않음 왼쪽 이미지로 추론을 돌릴건데 오른쪽 시차맵이 나오면 좀 그렇기 때문
종전의 방법 :
왼쪽 이미지를 신경망에 넣고 오른쪽 이미지와 샘플링하여 왼쪽 이미지가 생성하게끔 신경망을 학습
-> 결과는 왼쪽에서 본 시차맵임
-> 우리가 원하는 시점임
-> 그러나 단점이 존재
-> texture-copy
따라서 논문은 두 이미지를 타겟으로 두 시점에서 본 디스페리티 맵을 모두 생성
이 두 시차맵을 가지고 앞서 설명한 left-right consistency하게끔 만든다.
스케일을 4개로 나누고, 3개의 주요 텀이 있음
Ap : Appearance Matching Loss, 재구성된 이미지가 해당 훈련 입력과 유사하게 나타나도록 함
Ds : Disparity Smoothness Loss, smooth disparities를 적용
Lr :Left-Right Disparity Consistency Loss, 예측된 왼쪽 및 오른쪽 disparities가 일관성을 유지하도록 함.
Ap :
SSIM : structural similarity, 유사도의 일종, brightness, contrast, structure를 비교하는 함수
타겟과 예측의 비교
이를 오른쪽에 대해서도 적용
ds :
디스패리티 그래디언트 ∂d에 L1 패널티
-> 그래디언트를 줄여 디스패리티가 로컬에서 매끄럽게 함
한편 깊이 불연속성이 이미지 경계에서 자주 생김
위 방식으로 이미지∂I를 사용
즉 이미지 그래디언트가 0이면 = 가장자리가 아니라면 그대로 스무드니스가 적용
그래디언트가 크다면 = exp가 0이라면 스무드니스텀이 0이돼버림
이를 오른쪽에 대해서도 적용
Lr :
왼쪽 뷰 디스패리티 맵을 투영된 오른쪽 뷰 디스패리티 맵과 동일하게 만들려고 함
정확한 디스패리티 맵을 생성하기 위해
이를 오른쪽에 대해서도 적용
훈련하는 동안 네트워크는 좋은 디스페리티 맵을 생성하는 방법을 배움
추론시에는 가장 미세한 스케일에서 추론되고 dr을 예측하지 않음
내가 한 생각들 :
Unsupervised
-> 멀티캠 차로 돌아다니기만 해도 정확도가 증가한다.
monocular?
자율주행 차에 라이다를 달기에는 너무 비싸다 생각
카메라로 해결 가능
근데 정확한 뎁스를 얻기 위해서는 다중카메라 뷰를 신경망에 넣고 추론하는 방식의 네트워크가 낫지 않을까?(end to end)
-> 생각이 바뀜 단일 카메라의 고장이 있을 수 있음
또한 확장이 어려움
반면 모노큘라의 경우 단순 rgbd 카메라처럼 여러 대 달아버릴 수 있음
as Observation model
한편, 더 정확한 뎁스를 얻기 위해
각 픽셀 관측을 가우시안으로 가정한 다음 겹치는 영역에 대해 가우시안 곱을 적용할 수 있을 것
추가적으로 시간의 흐름에 따라서도 가우시안 곱을 적용하여 더 정확한 뎁스를 얻을 수 있을것
+ Stereo Matching
얻은 결과를 초깃값으로 하여 스테레오 매칭을 컨벡스 최적화 할 수 있을 것
세대 이상의 카메라에 대해서는 생각이 필요
'ML' 카테고리의 다른 글
ssd 간단한 리뷰와 구현 (0) | 2023.01.29 |
---|---|
machine learning a probabilistic perspective 리뷰(작성중) (0) | 2023.01.29 |
faster rcnn 리뷰 (0) | 2022.06.14 |
Swin Transformer 리뷰 (0) | 2022.06.14 |
Attention Is All You Need 간단 리뷰 (0) | 2022.06.14 |