IT/AI\ML

[python/Tensorflow2.0] U-Net++(A Nested U-Net Architecture for Medical Image Segmentation)

개발자 두더지 2020. 4. 24. 10:41
728x90

1. U-Net++란

 U-Net++는 DenseNet의 Dense block 아이디어를 사용하여 U-Net을 향상시킨 것이다. 기존의 U-Net과 다른 점은 아래의 세 가지이다.

① skip pathways에 convolution 층이 있는 것이다. 이것은 encoder과 decoder 특징 맵 사이의 semantic gap을 연결해준다.

② skip pathways에 dense skip이 있다. 이것은 기울기의 흐름을 향상시킨다.

③ 모델 가지치기 그리고 향상이 가능하게 하거나 최악의 경우 하나의 loss 층만을 사용하것과 유사한 성능을 달성하는 deep supervision이 있다.


2. U-Net++ 구조

- U-Net++는 encoder 서브 네트워크나 decoder 서브 네트워크가 뒤따라 있는 백본(backbone)으로 시작한다.

- 두 개의 서브 네트워크를 이어주고 deep supervision(빨간색 선)이 존재하도록 Re-designed skip pathways(초록색선과 파란색선)이 있다.


3. Re-designed skip pathways

- 위 그림은 어떻게 feature maps가 U-Net++의 상위 skip pathway 어떻게 통과하는지에 대한 하나의 예를 보여준다.

- 다른 예로는, 첫 번째 그림과 같이 nodes X⁰𝄒⁰과 X¹𝄒³ 사이의 skip pathway를 고려할 수 있다.  skip pathway는 세 개의 convolution 층이 있는 dense convolution block으로 구성되어 있다.

- 각 컨볼루션 레이어 앞에는 동일한 Dense 블록의 이전 컨볼루션 레이어의 출력과 해당하는 하위 Dense 블록의 업 샘플링된 출력을 융합하는 연결(concatenation) 레이어가 있다.

- 공식적으로 아래의 식을 따른다:

- H()는 convolution 동작 다음의 활성화 함수이며, U()는 up-sampling layer을 나타낸다. 그리고 []는 concatenation layer을 나타낸다.

-이러한 아이디어는 DenseNet으로부터 온 것이다.

여기에서 주된 아이디어는 융합 전에 인코더와 디토더의 기능 맵 사이의 semantic gap을 연결하는 것이다. 

4. Deep Supervision

- Deep Supervision은 모든 세그먼테이션 브랜치(segmentation branches)들로 부터 출력된 아웃풋의 평균화하는 정확한 모드나 nal 세그먼이션 맵이 세그멘테이션 브랜치 중 한 개를 선택하는 빠른모드로서, 그러한 선택은 모델 pruning정도와 속도 이득(gain)에 영향을 준다. 

- 중첩된 스킵 경로로 인해, U-Net++는 여러 시맨틱 레벨에서 전체 해상도 특성 맵을 생성한다. 따라서 손신을 4개의 시맨틱 레벨로 부터 예측된다.

- 또한 손실 함수로써 binary cross-entropy와 dice coefficient를 결합한 것을 사용한다.

여기서 N은 batch size이다.


5. 실험 결과

 

1) Datasets

 서로 다른 의료 영상 양식(modalities)의 병변(lesions)/ 기관(organs)을 아우르는, 네 개의 메디컬 이미지 데이터셋을 사용하여 모델을 평가하였다. 

 

2) Baseline Models

- 기존의 U-Net과 Wide U-Net을 비교한 것이다.

- Wide U-Net은 U-Net++와 비슷한 파라미터의 숫자를 사용한 더 많은 커넬을 사용하여 U-Net을 수정한 것이다.

 

3)  결과

DS는 Deep Supervision

- Deep Supervision이 없는 U-Net++는 U-Net과Wide U-Net양쪽의 점수보다 더 좋은 성능을 달성하였다. IoU점수에서 평균이 2.8에서 3.3으로 향상되었다.

- Deep Supervision이 있는 U-Net++는 Deep Supervision이 없는 U-Net++보다 0.6점이 향상되었다.

 

4) Model Pruning

mIoU vs Inference Time for Model Pruning

- UNet++ L3은 IoU를 0.6 포인트만 저하시키면서, 평균 32.2%의 추론 시간 단축을 달성합니다.

- 보다 적극적인 pruning은, 추론 시간을 더 줄이지만, 정확도(significant accuracy)는 크게 떨어집니다

 

5) 질적인 결과

Qualitative Results


(cf) U-Net++를 Tensorflow로 구현한 github

https://github.com/CarryHJR/Nested-UNet

 

CarryHJR/Nested-UNet

Contribute to CarryHJR/Nested-UNet development by creating an account on GitHub.

github.com


참고자료

https://medium.com/@sh.tsang/review-unet-a-nested-u-net-architecture-biomedical-image-segmentation-57be56859b20

 
728x90