RANSAC

Fischler와 Bolles가 1981년에 도입한 **RANSAC (Random Sample Consensus)**은 SLAM과 다중 뷰 기하학에서 지배적인 강건 추정 방법이다. 이는 거짓 특징 매칭, 가림, 움직이는 물체 같은 이상치로 오염된 데이터에 파라메트릭 모델(본질 행렬, 호모그래피, 카메라 자세, 평면 등)을 적합시키는데, 작은 무작위 샘플로부터 모델을 반복적으로 가정하고 이를 합의(consensus)로 평가하는 방식을 사용한다.

알고리즘

  1. ss개의 대응점으로 이루어진 최소 샘플 SS를 균일한 무작위로 뽑는다(ss는 모델을 결정하는 데 필요한 최소 개수: 본질 행렬은 5점, 호모그래피는 4점, P3P는 3점, 선형 8점 알고리즘을 사용하는 기본 행렬은 8점).
  2. 샘플에 모델 θS\theta_S를 적합시킨다.
  3. 인라이어를 센다: 오차 임계값 ϵ\epsilon 이내에서 θS\theta_S와 일치하는 데이터 점들(예: 샘슨 거리 또는 몇 픽셀의 재투영 오차).
  4. NN번 반복하며, 가장 큰 인라이어 집합을 갖는 모델을 유지한다.
  5. 선택적으로, 모든 인라이어에 대해 최소제곱법으로 모델을 재적합한다(그리고 종종 재적합을 반복한다).

핵심 통찰: 이상치가 50%라 해도, 충분히 여러 번 시도하면 상당한 확률로 전부 인라이어인 작은 샘플이 뽑히며, 올바른 모델은 오염된 샘플에 적합된 모델보다 훨씬 더 많은 합의를 모은다.

몇 번 반복해야 하는가?

인라이어 비율을 ww라 하자. ss개의 점으로 이루어진 하나의 샘플이 전부 인라이어일 확률은 wsw^s이므로, NN개의 샘플 중 적어도 하나가 전부 인라이어일 확률은

P(success)=1(1ws)NP(\text{success}) = 1 - (1 - w^s)^N

P(success)1ηP(\text{success}) \geq 1 - \eta(예: 99% 신뢰도를 위한 η=0.01\eta = 0.01)를 요구하면 다음이 얻어진다

N=logηlog(1ws)N = \frac{\log \eta}{\log(1 - w^s)}

w=0.5w = 0.5, η=0.01\eta = 0.01에서의 예:

솔버ssNN
5점 본질 행렬5145\approx 145
8점 기본 행렬81177\approx 1177

반복 횟수는 샘플 크기에 대해 지수적으로 증가한다 — 이것이 바로 최소 솔버(5점 E, P3P)가 RANSAC 안에서 더 큰 선형 솔버보다 선호되는 이유다.

적응형 RANSACNN을 미리 고정하지 않는다: 지금까지 발견된 최적 인라이어 집합으로부터 ww를 다시 추정하고, NN을 재계산하며, 현재 추정치에 충분한 샘플이 뽑히면 조기에 종료한다 — 보통 쉬운 장면에서는 훨씬 적은 반복으로 끝난다.

실용적 노트

SLAM에서의 의미

실습

관련 문서