- Unet 계열 - 2편 Unet ++, Unet3+2023년 06월 15일
- Cat_Code
- 작성자
- 2023.06.15.: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 다음글이전글이전 글이 없습니다.댓글