오늘은 어제 알아본 Unet의 확장 모델인 Unet ++와 Unet3+에 대해서 알아보려고 한다
Unet 모델의 한계를 극복하고 발전시킨 모델들이라고 할 수 있다
그럼 먼저 Unet ++에 대해서 알아보자
목차
1. Unet ++
2. Unet 3+
1. Unet ++
Unet ++는 2018년도에 나온 모델이다
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을 만들어 낼 수 있는 것이다
아이디어 적인 측면에서 크게 어렵지 않다
코드 구현
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 |