네이버 부스트캠프 🔗/⭐주간 학습 정리

Unet 계열 - 2편 Unet ++, Unet3+

Dobby98 2023. 6. 15. 11:02

오늘은 어제 알아본 Unet의 확장 모델인 Unet ++와 Unet3+에 대해서 알아보려고 한다

Unet 모델의 한계를 극복하고 발전시킨 모델들이라고 할 수 있다

 

그럼 먼저 Unet ++에 대해서 알아보자


 

목차

1. Unet ++

2. Unet 3+


1. Unet ++

Unet ++는 2018년도에 나온 모델이다

 

UNet++: A Nested U-Net Architecture for Medical Image Segmentation

In this paper, we present UNet++, a new, more powerful architecture for medical image segmentation. Our architecture is essentially a deeply-supervised encoder-decoder network where the encoder and decoder sub-networks are connected through a series of nes

arxiv.org

Unet ++가 기존 Unet과 다른점은 Skip 구조를 새롭게 설계했다는 것이다

 

어제 살펴본 Unet의 경우 수축과 확장 단계를 같은 단계끼리 concate 해주는 Skip 구조가 있었다

하지만 이러한 방법에는 한계점이 있다

이를 해결하기 위해서 Unet ++는 Re-designed skip pathways라는 구조를 만들었다

 

이는 DenseNet의 아이디어에서 영감을 받아서  만든 구조로 

아래의 이미지에서 확인할 수 있듯이 기존 Unet의 경우 같은 단계의 feature map만 수축과 확장끼리 합쳐주었다면

Unet ++는 각 단계도 계속적으로 연결을 하여서 합쳐주는 방법을 활용한다

Deep Supervision -  그리고 이를 빨간색 부분을 평균해서 최종 출력을 결정하게 된다

 

위의 사진을 통해서 Unet과 Unet ++ 를 비교하려면 검은색 선과 파란색 선을 비교해보면되는데

검은색 선의 경우 기존 Unet의 구조이고 파란색은 Unet ++에서 추가된 구조이다

 

쉽게 말해서 기존 Unet의 경우 X 0,0 에서 만들어진 feature map은 X0,4에만 합쳐졌다

그러나 이사이에 수축의 다음 단계인 X1,0에서 만들어진 X0,1 등 다음 단계에서 만들어진

Feature map도 추가적으로 합쳐지면서 

각 단계의 Segmentic 정보의 Gap을 줄인다고 할 수 있다

 

따라서 각 단계에서 생성된 모든 정보가 모든 단계에서 포함된다고 할 수 있고

이렇게 줄어든 Gap을 통해서 조금더 좋은 성능의 sementic map을 만들어 낼 수 있는 것이다 

 

아이디어 적인 측면에서 크게 어렵지 않다

 

 

코드 구현

 

GitHub - ZJUGiveLab/UNet-Version

Contribute to ZJUGiveLab/UNet-Version development by creating an account on GitHub.

github.com

 

[논문 리뷰 및 코드구현] UNet++ (Nested UNet)

[Review] UNet++: A Nested U-Net Architecture for Medical Image Segmentation, DLMIA(Deep Learning Medical Image Analysis) 2018 이번 포스팅은 객체를 인식하는 방법 중 하나인 U-Net의 업그레이드 버전인 U-Net++ (Nested U-Net) 논문

wsshin.tistory.com


2. Unet 3+

이번에 살펴볼 모델은 Unet3+이다

Unet과 Unet ++를 발전시킨 모델로 

 

2020년에 나온 모델이다

 

Unet ++의 경우 Semantic gap을 줄여서 모델의 성능을 향상 시킨 것을 확인할 수 있었다

 

 

하지만 이러한 Unet ++의 단점은 명확하다

위의 사진에서도 확인할 수 있듯이 여러 정보를 활용해야 하기 때문에

메모리의 소비가 크며 parameter의 수도 증가한다

 

그리고 Unet 3+가 등장하게 된 Unet ++의 한계는 

full scale의 정보를 갖고 있지 않다는 점이다

 

이게 무슨 말이냐면

Unet ++의 경우 같은 동일한 크기의 feature map 끼리만 concate 해준다

물론 이는 다른 층에서 온 정보를 포함하고 있지만

무조건 같은 사이즈로 변환하여 합쳐주기 때문에 여러 Scale의 정보를 포함하지 못하게 된다

 

따라서 이를 해결해주기 위해서 Unet 3+에서는 

Full Scale Skip Connection을 활용한다

쉽게 말해서 여러 단계의 다양한 scale의 feature map을 합쳐주는 방법을 활용한 것이다

쉽게 설명하기 위해서 X3 층을 예시로 들면

X3 보다 큰 Encoder 부분의 X1, X2,X3 feature map을 합쳐주고

Decoder 부분에서는 X3보다 높은 계층인 X5, X4의 정보를 합쳐준다

 

또한 Decoder 부분의 모든 채널은 320으로  고정해줌으로써 parameter의 수도 줄여주었다

 

 

 

'네이버 부스트캠프 🔗 > ⭐주간 학습 정리' 카테고리의 다른 글

Unet 계열 - 1편 Unet  (0) 2023.06.14
EfficientDet  (0) 2023.05.10
1 Stage Detectors  (0) 2023.05.09
Neck  (0) 2023.05.08
2 Stage Detectors  (0) 2023.05.03