AI/의료영상

[ 의료영상 ] Medical Image Segmentation (5.Graph Cut Optimization)

hae-koos 2021. 9. 22. 22:01
728x90
반응형

MOOC 강좌 '컴퓨터비전, 머신러닝, 딥러닝을 이용한 의료영상분석' 강의를 리뷰 및 정리한 게시물입니다.

 

Graph Model을 어떻게 정의하고, 정의된 Model로부터 어떻게 최적화를 해서 Label을 얻는지에 관한 이야기다. 그전에 리뷰를 해보자.

위 그림처럼 노드가 N=9일 때는 각각 확률을 구해서 곱해주면 쉽지만 100x100 이미지만 생각해봐도 노드가 N=10,000이 되고, 0 ~ 1 사이의 확률값을 10,000번 곱하면 0에 가까운 값이 그 결과로 도출될 것이다. 이러한 경우가 발생하는 것을 예방하기 위해 Likelihood Probability와 Prior Probability의 곱에 - log 를 씌워준다. log 성질을 이용하면 진수의 곱은 로그의 덧셈으로 나누어지고, 결국 두 Probability에 마이너스가 붙어 더해주는 꼴이 된다. 

-log의 확률값이 Summation 되면서 위 식을 gibbs distribution에 의해 에너지라 정의한다.

확률이 1에 가까울 때면 에너지 값은 0이 되고, 확률값이 작으면 에너지는 무한히 커진다.

기존에 곱셈으로 표현되었던 식이 덧셈으로 표현되기에 노드수가 늘어나도 계산이 가능하다.

이를 식으로 정리하면 아래와 같다.

https://dgist.edwith.org/medical-20200327/lecture/63154?isDesc=false

위 에너지를 minimization 하는 x1 ~ x9 (노드가 9개라면) 를 구하는 것이 목표다.

 

Likelihood Term은 xi가 0일때와 1일때 각각 확률을 계산하는데 

zi가 푸른색에 가까우면 첫번째 계산 결과가 커지고 에너지는 작아진다.

zi가 푸른색에 가까우면 두번째 계산 결과는 작아지고 에너지는 커진다.

즉, 에너지를 줄이는 x가 0일지, 1일지를 계산한다. (이 예시에서는 푸른색 0)

 

Prior Term은 xi와 xj가 다를 때만 값을 더해준다.

그 값은 exp의 역수에 (zi-zj)^2 으로

이 의미는 주변이 서로 다른 값 즉, Boundary에서 zi와 zj의 차이를 계산해서

그 차이가 크면 exp의 역수이므로 에너지가 0에 가까워지고,

그 차이가 작으면 exp의 역수가 커지니 에너지도 커진다.

즉, Boundary에서 비슷한 색이 나오면 에너지를 늘린다는 것이다.

 

정리하면 Likelihood Term과 Prior Term을 모두 낮추는 Label x들을 찾아야 한다.

이는 그림으로 예를 들어가며 이해하는 것이 좋다.


https://dgist.edwith.org/medical-20200327/lecture/63154?isDesc=false

Image에서 사용자가 background와 foreground를 지정하면 graph로 전환하고 각 노드마다 다양한 조합의 Likelihood Term과 Prior Term의 계산이 진행된다. Source로부터 물을 흘려 흘러나간 정도의 차이로 Segmentation이 진행된다는 것이 Max Flow Algorithm인데 이를 자세히 알아보자.

더이상 flow가 흐를 길이 없을때 최종적으로 나뉘어진 형태를 각 Segment로 인식하는 방식이다.

 

728x90
반응형