본문 바로가기
카테고리 없음

U-Net: Convolutional Networks for BiomedicalImage Segmentation

by y.j 2020. 7. 18.
728x90

1. 아이디어

U-Net은 bio에서 segmentation할 때 많이 쓰이는 Network이다. 이전에 Network는 2가지 결점이 있었다고 얘기한다. 첫 번째, 각각의 patch들을 분리해서 학습하기 때문에 느리다. 두 번째, localization의 정확성과 context의 사용에 trade-off관계가 있다고 한다. 큰 patch들은 더 많은 max pooling이 필요하고 localization의 정확성을 줄이며, 작은 patch들은 사용 할 수 있는 context들이 너무 적다.
하지만, U-Net은 이러한 trade-off를 개선하여 localization의 정확성과 context사용을 모두 잡을 수 있다고 한다.

2. 알고 넘어가야 할 용어 및 구조

그림을 보고 왼쪽 Network와 오른쪽 Network를 분리해서 이해하면 좋다. 용어들도 왼쪽 Network와 오른쪽 Netowrk에 따라 구분되어져 있다.

1. Patch

Patch란 아래 그림에서 파란색 박스로 된 부분을 이야기 한다. 노란색 부분이 U-net에서 오른쪽 Network에서 파란색 박스의 부분이다. 미리 알고 가면 좋을 것은 CNN이 깊어지면 범위 내에서 feature라고 인식되지 부분은 소실된다. 그래서 segmentation에 필요한 feature들까지 소실 되어 정확도가 낮아질 수 있는데 그것을 왼쪽 network의 output을 인식해서 복구해준다. 왼쪽 Network의 파란색 박스가 오른쪽 Network의 노란색 타일과 겹쳐져 있다고 해서 Overlap-tile strategy이라고 한다.

2. A contracting path

A contracting path란 왼쪽 Network의 down sampling,max-pooling 등 모든 과정을 의미한다. down sampling이전의 크기를 보면 network를 통과 할 수록 2씩 작아지는 것을 볼 수 있는데 padding이 없기 때문이다.

3. A expansive path

오른쪽 Network의 모든 과정을 의미한다.

실제로 Network는 기본 unpadded convolution이므로 크게 어려울건 없다.

Loss function의 정의

$$ E = \sum_{k \in \Omega} \omega(x)\log_{p_{\iota(x)}}(x) $$
위의 수식은 전체 loss function이다. 이제 천천히 하나하나 뜯어보자!

$$ p_{k}(x) $$ 이 식은 pixel-wise softmax이다. 그래서 label data와 맞는 pixel은 1로 수렴할 것이고 나머지는 0으로 수렴하게 될 것이다. 이 것을 로그로 취하고 weight를 곱해주어 정확도를 높이고 있다고 말한다. weight는 weight map을 정의하여 pre compute한다. 이 weight map은 training data set에 있는 픽셀의 빈번도에 따라 보상을 하고 아래 사진에서 세포들이 서로 붙어 있는 부분이 있는데, 기존에는 인접한 cell에 대해서 하나로 인식하여 segmentation을 했었던거 같다. 그래서 weight를 곱해줌으로써 인접한 경계선을 잘 학습할 수 있도록 도와준다. weight는 training동안 계산이 되어지는게 아니라 미리 계산해 놓아야 하는 것 같다.

weight map을 계산하는 공식은 아래와 같다. 이 저자는 $ w_{0} = 10, \sigma \approx 5 $으로 놓고 시작 하였다.
$$ w(x) = w_{c}(x) + w_{0} \cdot \exp (\frac {-(d_{1}(x)+d_{2}(x))^2} {2\sigma^2}) $$
$ d_{1} $ 은 가장 가까운 cell의 경계선까지의 거리이고, $ d_{2} $ 2번째로 가까운 cell의 경계선의 거리이다.
사실 어떻게 구현해야 할지 잘 모르겠다. 코드 보고 파악해봐야 겠다.

느낀점

사실 구현하거나 읽기 어려운 논문은 아니었던거 같다. weight map의 구현 방식을 좀 더 공부하면 이해가 더 깊어질 듯 싶다.

728x90

댓글