오늘은 최근에 나온 Stereo matching관련 논문에 대해서 review를 하려고 합니다. 오늘도 논문의 핵심 내용만을 간추려서 설명 드리도록 하겠습니다. 그럼 시작하도록 하겠습니다!
해당 논문은 network가 더 잘 일반화 될 수 있도록 scene geometry에 대한 사전 지식을 end to end stereo network에 통합 할 것을 제안합니다.
주어진 network의 경우, inference 중에 구조가 변경되지 않은 상태로 유지되는 동안 gradient-domain-smoothness prior 및 occlusion reasoning을 네트워크 훈련에 명시 적으로 추가합니다.
해당 논문에서는 이렇게 gradient-domain-smoothness prior과 occlusion reasoning을 추가해 성능 향상을 이루는데,,
그렇다면 이 두가지가 무엇인가...???에 대해서 아래에서 좀 더 자세히 설명을 시작하도록 하겠습니다.
Architecture Overview
먼저, 해당 논문의 Architecture Overview이다. 해당 논문에서는 Loss가 3가지 Gradient Loss, Disparity Loss, Occlusion Loss가 사용된다. Disparity Loss는 기존의 stereo 방식에도 있는 loss이고, 해당 논문에서는 Gradient loss와 occlusion loss를 추가하였다.
그림2는 해당 논문에서 제안하는 geometric prior를 사용해서 결과가 향상 된것을 보여주는 결과 이미지 그림이다.
Gradient-domain smoothness prior
전형적인 stereo network에서의 loss function은 정답과 예측치 사이의 L1 loss이다. 이 loss는 이미지의 모든 영역을 동일하게 다루며, 가끔 disparity의 특성을 모델링하는데 실패한다.
해당 논문에서는 많은 장면의 표면은 대략 평면이라는 통찰력을 사용하여, disparity gradient Dx(x, y) 및 Dy(x, y)를 Pixel Adaptive Convolution layer (PAC layer)로 구성된 gradient-domain-smoothness module을 사용해 처리하여서 gradient를 필터링해 정제된 gradient
를 생성함으로써 gradient-domain-smoothness을 강화한다.
직관적으로 PAC layer는 해당 픽셀의 guidance feature이 유사 할 때 인접한 두 픽셀에 대해 유사한 값을 출력하는 반면, feature가 극적으로 변경될 경우(ex, object boundary) 해당 픽셀에서 불연속성을 유지한다.
PAC module을 직접적으로 disparity map D(x,y) 자체에 직접적으로 적용하는 경우(유사한 feature를 가진 표면에 동일한 disaprity 값을 할당하는 경향이 있음)와 다르게 PAC module을 Dx(x,y)와 Dy(x,y)에 적용하면 자연스럽게 경사면을 모델링하고, 2차 표면을 허용한다. 또한, 이전 연구들은 2차 gradient domain이 world를 더 잘 모델링 할 수 있다고 하였다.
따라서 해당 논문에서는 PAC module에 disparity map 자체를 넣는 것이 아닌, disparity를 2차 미분 한 값을 넣어서 더 잘 모델링 할 수 있도록 하였다.
그림3은 PAC module을 gradient 단에서 사용했을 때의 효과를 나타낸 그림이다. initial gradients와 refined gradients를 보면 굉장히 개선이 많이 된 것을 볼 수가 있고, 이 개선이 된 gradient를 이용해서 PAC layer로 finetuning을 해 최종 disparity도 개선이 많이 됨을 확인 할 수 있다.
(참고로, PAC layer에 대한 자세한 것은 openaccess.thecvf.com/content_CVPR_2019/papers/Su_Pixel-Adaptive_Convolutional_Neural_Networks_CVPR_2019_paper.pdf
논문이 따로 있습니다. 대충 설명하자면, Pixel별로 알맞게 convolution을 적용한다는 내용 )
Occlusion reasoning
먼저 disparity와 occlusion 사이의 관계에 대해서 설명을 하고자 한다.
주어진 disparity map d가 있다고 할 때 우리는 rectified camera geometry를 이용해서 occlusion map O를 추정할 수 있다.
Rectified geometry와 이미지 중앙에 위치한 두 주요 포인트를 가정하면, disparity 정의에 의해 foreground의 occlusion boundary 점 A에서 D(XA,YA) = X'L - XR이고, background의 첫번째 보이는 pixel B에서 D(XB,YB) = XL- XR이다.
이 두 side를 빼면 D(XA,YA) - D(XB,YB) = X'L - XL이다. 그러므로, occluded된 pixel 즉 가려진 pixel의 수는 disparity difference와 같다.
해당 논문에서는 식을 사용해서 결정론적으로 occlusion map을 추정한다. "soft" occlusion map O를 각 pixel마다 backpropagation을 하기 위해서 대략적인 step function인 "steep" Sigmoid function을 사용한다.
∆d = D(x',y) - D(x,y)이고, ∆x = x' - x이다. parameter alpha는 slope을 통제한다. 오프셋 d0은 ∆x가 항상 양수이므로 왜곡 된 분포가 발생하기 때문에 필요하다. 여기서는 alpha와 d0을 최적화 된 값으로 찾아주었다. alpha는 3, d0sms 0.5로 놓았다. 따라서 이 식을 통해서 각 pixel 별로 Occlusion인 영역을 찾아주고, occlusion 예측값과 GT를 비교하여 성능을 개선한다.
따라서 해당 논문에서의 Total loss function은 다음과 같다.
LD = disparity loss,
LG = gradient domain smoothness loss
LO = the occlusion loss.
해당 논문에서 LD, LG and LO에 smooth L1 loss를 사용했다.
해당 논문에서는 PSMNet과 HSMNet을 baseline으로 사용해서 실험하였다.
위의 그림6은 PSM과 HSM은 기존의 논문의 성능 결과를 나타낸 것이고, PSM-smooth, HSM-smooth는 gradient smoothness를 적용한 것의 결과, HSM-smooth-Occ, PSM-smooth-Occ는 gradient smoothness와 occlusion을 모두다 적용한 것의 결과 이미지이다.
위의 Table은 마찬가지로 해당 논문에서 제안한 방법을 사용했을 때의 결과를 수치적으로 보여주는 결과 Table이다.
실험 결과가 더 있지만, 여기까지 설명하고 마치도록 하겠습니다
혹시 질문이 있거나 잘못된 내용, 설명이 있을 경우 댓글로 남겨주시면 감사하겠습니다.