The Visionary Researcher

2016/10 1건이 검색되었습니다.

Ransac family

분류없음2016.10.12 12:01

<Ransac의 기본>

Ransac은 least square method나 SVM같은 regression 모델이 아니다. 

일부분의 data를 이용하여 hypothesis를 발생시킨다음, inlier가 최대가 되도록 이를 반복적으로 수행한다.

Inlier가 커질수록, hypothesis를 만족해가는 것이다.


200개의 점이 있을 때, ax+by+c=0이라는 선으로 (a, b, c) 파라미터 추정을 한다면

수학적으로 200C2번의 경우의 수로 확인을 해야 가장 추정이 잘 된 선을 찾을 수 있다.

하지만 inlier ratio r와 실패 확률 a, 그리고 data수 m을 알고 있으면 

t = log(a) / log(1 - r^m) 을 수행하면 가장 추정이 잘 된 선을 찾을 수 있다.

하지만 inlier ratio인 r또한 추정하기위해 알고있는 경우가 드물기 때문에 지정을 해야 한다.


추정된 선이 얼마나 에러가 있는지 평가하기 위해서는 아래와 같은 식을 만족해야 한다.

D는 데이터이고, 모델과 데이터의 loss를 모두 더했을때 최소가 되는 모델을 구하는 것이다.

c는 threshold로써, 지정해야하는 파라미터이다.


<MSAC>

모델에 가까울수록 더 적은 loss, threshold 내부에 있어도 포물선 형태로 loss지정


<MLESAC>

모델을 평가하는 inlier와 outlier의 에러의 확률분포를 이용하는 방법이다.

inlier error는 unbiased gaussian 분포로, outlier는 uniform 분포를 적용한다.

이 확률분포는 에러의 분포이다. 모델에 가까운 에러는 상대적으로 높은 확률을 가지고있고, 멀수록 균일하다.

r은 inlier가 되는 prior probability(inlier ratio)

v는 이용가능한 error space의 크기

sigma는 가우시언 노이즈의 std(노이즈의 크기를 측정)


MLESAC은 주어진 data에서 likelihood를 최대화하는 모델을 추정한다.(inlier쪽에 오기 위해)

계산의 실효성을 위해 negative log likelihood를 사용하여 loss function은 아래와 같이 정의된다.

코드를 분석하면

기존 RANSAC과 동일하게 몇개의 점을 랜덤으로 뽑아서 LSM을 이용하여 파라미터를 추정한다.

추정된 파라미터로 각 점의 에러(e)를 계산한다. v는 최대 최소 파라미터 추정값의 갭이다.

이러한 에러를 보고 inlier인지 outlier인지 (inlier ratio) 알아내기 위해 r을 EM알고리즘으로 추정한다.

(p(inlier)/(p(inlier)+p(outlier))=r을 반복적으로 위의 식에 대입하여 추정한다.

추정된 r에 의하여 negative log likelihood을 이용하여 loss를 구한다. 





















댓글 0

티스토리 툴바