Medical Image Segmentation - Advanced CNNs

Gyuha Park·2021년 8월 25일
0

Medical Image Analysis

목록 보기
14/21
post-thumbnail

1. Fully Convolution Network(2015)

Input image가 들어오면 convolution과 feature size를 줄이는 pooling 과정을 반복하며 feature size는 줄이고 depth는 늘린다. 그리고 bilinear interpolation으로 upsampling을 거친 feature와 이전 layer의 feature를 더하는 skip connection과정을 계속 반복해 input image와 feature가 같은 shape이 되도록 맞춰준다.

2. U-net(2015)

Encoder 부분은 FCN과 방식이 매우 유사하다. Decoder 부분에서 차이가 있는데, Upconvolution을 거친 feature와 encoder의 feature를 concatenation해준다. 그리고 convolution을 두 번 적용하는 과정을 반복한다.

3. DeepLab V3+(2017)

DeepLab V3와 다른 점은 U-net의 encoder-decoder 구조를 따른다는 점이다.

Encoder에서 low level features는 atrous convolution을 적용하였다. 그리고 low level features의 output에 parameter를 줄이고 좋은 성능을 보여주는 depth-wise separable convolution, spatial pyramid pooling을 적용하고 마지막으로 1x1 convolution을 거쳐 encoder의 output을 얻었다.

Decoder에서는 encoder의 output feature를 4배 upsampling하고 encoder의 low level feature에 1x1 convolution을 적용해 서로 concatenation을 수행한다. 그리고 3x3 convolution을 거치고 다시 4배 upsampling을 수행해 input image와 shape을 맞춰줘 prediction result를 얻는다.

4. PASCAL VOC 2012 Leader board

Leader board를 보면 Encoder / Decoder, Dilated convolution, Spatial Pyramid Pooling(SPP) 순으로 적용함에 따라 성능이 올라가는 경향을 보이고 있다.

5. Loss function

  • Cross entropy loss

    아래 식은 기본적인 cross entropy loss이다. pp가 ground truth이고 p^\hat{p}가 prediction이다. segmentation에 cross entropy loss를 사용할 경우에는 pixel 단위로 loss를 계산한다.

    CE(p,p^)=(plog(p^)+(1p)log(1p^))CE(p,\hat{p})=-(p\log(\hat{p})+(1-p)\log(1-\hat{p}))

    Cross entropy loss를 그대로 segmentation에 사용하면 class imbalance 문제에 취약할 수 있다.

    이를 해결하기 위해 weighted cross entropy loss를 적용할 수 있다. β\beta가 1보다 크면 foreground에 더 집중하게 되며 1보다 작으면 background에 더 집중하게 된다.

    WCE(p,p^)=(βplog(p^)+(1p)log(1p^))WCE(p,\hat{p})=-(\beta p\log(\hat{p})+(1-p)\log(1-\hat{p}))

    Weighted cross entropy와 아이디어는 유사하다. 식은 다음과 같다.

    BCE(p,p^)=(βplog(p^)+(1β)(1p)log(1p^))BCE(p,\hat{p})=-(\beta p\log(\hat{p})+(1-\beta)(1-p)\log(1-\hat{p}))

  • Dice loss

    Dice loss는 dice coefficient에서 아이디어를 얻은 loss이다. Loss 계산 시 background는 고려하지 않기 때문에 foreground를 cross entropy loss에 비해 더 잘 학습할 수 있다는 장점이 있다. 식은 다음과 같다.

    Dice coefficient=SgSpSg+SpDice\ coefficient=\cfrac{S_g\cap S_p}{|S_g|+|S_p|}

    아래 식은 pixel 기준으로 loss를 계산하는 방법이다.

    DL(p,p^)=12pp^+1p+p^+1DL(p,\hat{p})=1-\cfrac{2p\hat{p}+1}{p+\hat{p}+1}

    아래 식은 image를 기준으로 loss를 계산하는 방법이다.

    DL(p,p^)=12ph,wp^h,wph,w+p^h,wDL(p,\hat{p})=1-\cfrac{2\sum p_{h,w}\hat{p}_{h,w}}{\sum p_{h,w}+\sum\hat{p}_{h,w}}

6. Metric

  • Pixel accuracy

    Accuracy=TP+TNTP+TN+FP+FNAccuracy=\cfrac{TP+TN}{TP+TN+FP+FN}

  • Intersection over Union

    IoU=SgSpSgSp=TPTP+FP+FNIoU=\cfrac{|S_g\cap S_p|}{|S_g\cup S_p|}=\cfrac{TP}{TP+FP+FN}

  • Dice coefficient

    DICE=2SgSpSg+Sp=2TP2TP+FP+FNDICE=\cfrac{2|S_g\cap S_p|}{|S_g|+|S_p|}=\cfrac{2TP}{2TP+FP+FN}

  • Hausdorff distance

    H(A,B)=maxaAminbBabH(A,B)=\max\limits_{a\in A}\min\limits_{b\in B}||a-b||

    HD(A,B)=max(H(A,B),H(B,A))HD(A,B)=\max(H(A,B),H(B,A))

  • Average distance

    d(A,B)=1NaAminbBabd(A,B)=\frac{1}{N}\sum\limits_{a\in A}\min\limits_{b\in B}||a-b||

    AVD(A,B)=max(d(A,B),d(b,a))AVD(A,B)=\max(d(A,B),d(b,a))

profile
Live on mission ✞

0개의 댓글