상세 컨텐츠

본문 제목

[논문 리뷰] Pyramid Stereo Matching Network

논문 리뷰

by jii 2025. 5. 3. 03:36

본문

Paper

[1803.08669] Pyramid Stereo Matching Network

 

Pyramid Stereo Matching Network

Recent work has shown that depth estimation from a stereo pair of images can be formulated as a supervised learning task to be resolved with convolutional neural networks (CNNs). However, current architectures rely on patch-based Siamese networks, lacking

arxiv.org

 


 

 

1. Intro

-stereo img에서 깊이(d)를 추정한다는 것의 의미?

하나의 물체를 각각 다른 위치에서 촬영하면 (사람의 눈과 비슷), 두개의 이미지가 생성되고 여기서 d를 계산하는 것이 가능해진다. 즉, d(x-x') 카메라 사이의 거리(baseline)을 알고 있으면 깊이(물체~카메라 거리) 추정이 가능하다. 

 

결국, 우리가 왼쪽/오른쪽 눈을 각각 감고 같은 장면을 보았을 때 물리적으로 가까이 있는 물체의 위치 차이가 더 커보이는 것처럼 d Z(깊이) inversely related 관계이다. (=가까이 있는 것이 변위(d)가 크다)

 

-stereo matching에서

기본 구조 : matching cost 기반 대응점 찾기+post processing

최근 : 대응점(유사한 픽셀) 찾기에 CNN 이용, 유사도 기반

문제점 : ill posed region (가려지거나, 반복 패턴, 텍스처가 없거나 반사 영역) 에서 어려움

해결 : 즉, 단순히 동일한 강도로 유사 픽셀을 찾는건 불충분 하니, 전역 정보를 활용하자!

 

-이 논문에서는

전역 정보를 활용하기 위해 PSMNet을 제안한다. 

1. SPP와 dilated conv로 receptive field를 확장한다.(전역+지역 정보 확보)

2. 이 전역+지역 특징을 이용해 정확한 d 예측을 위한 cost volume을 생성한다.

3. Stacked Hourglass 구조의 3D CNN을 사용해 cost volume을 정제한다.

4. 이 3D CNN은 top-down / bottom-up 방식으로 반복적으로 문맥 정보를 활용함으로써
d 추정의 정확도를 향상시킨다.

 

2. Related Work

-전형적인 stereo matching의 단계는

matching cost computation, cost aggregation, optimization, and disparity refinement의 4단계이다.

 

-matching cost 계산에 중점을 두는 연구는

1. Siamese network 구조의 CNN을 이용해 두 이미지 패치의 유사도를 학습한다.

2. 더 빠른 Siamese CNN : matching cost 계산을 multi label 분류 문제로 변환한다. 

3. Highway network로 matching cost를 계산하고, d confidence network로 시차 신뢰도를 예측한다.

 

-d map의 후처리에 중점을 두는 연구는

1. Displets : 대부분의 객체는 임의적인 구조가 아니라 regular 하므로 3D 모델을 통해 대응점의 모호성을 해결한다.

2. DRR : Detect - 잘못된 라벨(시차 값) 탐지, Replace - 잘못된 라벨을 새로운 값으로 대체, Refine - 대체된 값을 더 정밀하게 다듬음 (이 3개의 단계적 후처리 전략 사용)

3. SGM-Net : 기존 SGM(Semi-Global Matching)의 penalty 값을 학습 기반으로 예측

 

-후처리 없이 d map을 추정하는 e2e 방식은

1. DispNet - d 추정, Flownet - optical flow 추정

2. CRL : DispNet 확장, 먼저 d map과 multi scale residual 계산하고 결과를 더해서 최종 d map 생성

3. GC-Net : 3D CNN으로 cost volume 정규화

=> 결국, 모호한 영역에서 발생하는 문제점을 해결하기 위해 문맥적 정보를 활용한다.

 

-문맥적 정보 (global context info) 를 활용하는 방법은

1. encoder-decoder 구조 = hourglass

: top-down 정보와 bottom-up 정보를 skip connection으로 통합한다.

2. Pyramid pooling

: 실제 경험되는 수용 영역은 이론적인 것에 비해 작다는 문제점을 해결

 

3. Pyramid Stereo Matching Network

3.1. Network Architecture = PSMNet 구조

 

전체 구조는 아래 구조도에서도 볼 수 있듯이, 다음과 같다.

1. CNN

2. SPP(3.2)

3. cost volume(3.3)

4. 3D CNN(3.4)

5. regression(3.5)

 

 

1. CNN(특징맵 추출)

좌우 이미지에 conv1~4를 적용해(+dilated conv - 수용 영역 늘리기 위해) feature map을 생성한다. 

이 feature map은 SPP의 입력으로 사용된다. 

 

3.2 Spatial Pyramid Pooling Module

아까도 언급했듯 단순히 intensity 정보를 활용하는 것은 불충분하니, 문맥적 정보를 활용하면 ill posed 영역에서의 문제점이 해결 가능하다. 계층적 문맥 정보를 포함하기 위해, SPP는 객체 전체와 하위 구조의 관계를 학습한다. 

 

2. SPP

SPPNet  CNN의 입력 크기 제한 문제 해결 위해 SPP 제안. classification에 활용
ParseNet  Global Average Pooling을 도입하여 전역 문맥 정보 통합
PSPNet  ParseNet을 확장하여 계층적 전역 정보 추출. Adaptive pooling + 1×1 conv + upsampling + concat 구조

 

결국 SPP는 PSPNet를 기반으로 설계되었다. 과정을 정리해보면, 여러 스케일의 average pooling (64×64, 32×32, 16×16, 8×8)을 적용하고 각 풀링 결과를 1×1 conv로 처리 후 upsampling(보간) 최종적으로 입력 feature map과 함께 concat한다. 즉, 전역 정보와 지역 정보를 통합한다는 것이다.

 

여기서 생성된 SPP 거친 좌우 특징 맵이 3.3의 입력으로 사용된다.

 

3.3. Cost Volume

3. Cost Volume

여기서는 matching cost를 계산하는데, 거리 기반 계산 대신 MC-CNN, GC-Net좌우 이미지의 feature를 concat하여 deep network가 비용을 학습하게 하는 방식을 사용한다.

 

어떻게? : 모든 d에 대하 좌측은 고정, 우측을 d 만큼 옮겨서 concat한다. 그러면 결과적으로 4D volume (height × width × disparity × feature size)이 생성된다. 

 

이 cost volume은 3D CNN에서 활용된다.

 

3.4. 3D CNN

4. 3D CNN

여기서 목적은 cost volume을 정규화해서 더 정확한 d map을 만들자는 것이다. 3D CNN으로 공간(H, W) + 시차(D) 방향의 문맥 정보를 통합한다. 

 

(1) Basic

residual block만으로 단순하게 구성된다. 3D conv layer (3×3×3)를 12개를 사용하고, 마지막에 bilinear 보간으로 cost volume을 원래 크기로 복원한다. 결과적으로 회귀를 적용해 H*W의 d map을 계산한다. 

 

(2) Stacked Hourglass Architecture

아까 언급되었던 인코더 디코더 구조이다. 인코더(다운샘플링) & 디코더(업샘플링)여러 번 반복해 중간 출력에 대해 intermediate supervision (Loss1, Loss2, Loss3)을 적용한다. 결과적으로 총 3개의 Hourglass, 각각이 disparity map을 하나씩 생성해 총 3개의 예측값 + 3개의 손실 함수가 나온다. 학습에는 Loss1 + Loss2 + Loss3의 가중합을 사용하고 테스트에는 마지막 결과만 사용한다.

 

3.5. Disparity Regression

5. Regression

여기서는 연속적인 d를 예측한다. d를 클래스처럼 보지 말고, 확률적으로 접근해서 불연속 값이 야기하는 문제점을 해결한다. 식은 다음과 같다:

 

3.6. Loss

앞선 단계의 예측 d와 정답 gt간 loss를 학습한다. 연속적인 d를 예측했기 때문에 학습을 위해서는 부드러운 L1 loss를 사용한다. 식은 다음과 같다:

 


관련글 더보기

댓글 영역