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

Unet 계열 - 1편 Unet

Dobby98 2023. 6. 14. 15:49

오늘은 Sementic Segmentation을 위해 등장한 모델인 

Unet 계열의 모델에 대해서 알아보려고 한다

 

먼저 Unet을 살펴보고 이를 발전 시킨 Unet++, Unet3+ 모델에 대해서 자세히 알아보자

 

목차

1. Unet

2. Unet++

3. Unet3+


1. Unet

Paper : https://arxiv.org/abs/1505.04597

 

U-Net: Convolutional Networks for Biomedical Image Segmentation

There is large consent that successful training of deep networks requires many thousand annotated training samples. In this paper, we present a network and training strategy that relies on the strong use of data augmentation to use the available annotated

arxiv.org

Unet은 2015년 Biomedical 분야에서 이미지 분할(Image Segmentation)을 목적으로 만들어진 모델이자

모델의 이름에서 알 수 있듯이 모델의 구조를 U자 형태로 구성하여서 좋은 성능의 모델을 만들어 냈다

Unet

Unet은 크게 3가지의 구성단계로 이루어져 있다

1. 수축 단계 Contracting Path

2. 팽창 단계 Expanding Path

3. Skip Connection

 

차근차근 살펴보자

 

우선 위 3단계를 이해하기 위해서는 FCN을 이해하고 있어야한다

 

FCN 논문 리뷰 — Fully Convolutional Networks for Semantic Segmentation

딥러닝 기반 OCR 스터디 — FCN 논문 리뷰

medium.com

 

Sementic Segmentation에서는 우선 Input의 이미지를 활용해서 이미지의 전체적인 Context을 추출하는 수축단계가 있다

또한 이렇게 수축된 Feature Map을 다시 Up sampling 하면서 Pixel의 위치 정보를 추출하는 Localization 단계인 팽창 단계가 있다

 

 

1. Contracting Path

수축단계는 각 단계 마다 3x3 conv를 수행하고

이때 padding을 사용하지 않기 때문에 feature map의 크기가 조금씩 줄어든다

그리고 각 conv 연산 마다 ReLU 활성화 함수를 사용하다

 

그리고 다음 수축 단계로 넘어 갈때에는 2x2 max pooling을 사용해서 - stride 2 feature map의 크기를 절반으로 줄여준다

또한 이 단계에서 feature map의 채널의 수가 2배씩 증가하게 된다

 

논문에서는 VGG 구조를 활용해서 해당 단계가 진행된다


 

2. Expanding Path

이렇게 만들어진 feature map을 이용해서 다시 원본 사진의 크기만큼 Up sampling 해주는 단계가 

Expanding Path 단계가 있다

단계를 넘어갈때 Up conv를 활용해서 feature map의 크기를 늘려주고

채널을 2배씩 감소시켜 준다

 

그리고 각 단계에서는 3x3 conv를 2번씩 실행해주고 똑같이 ReLU 활성화 함수를 사용해준다


3. Skip connection

Contracting Path과 Expanding Path 사이에 Skip connection 구조가 추가되어 있다

 

즉, Contracting path의 정보와 Expanding path의 정보를 합쳐주는 역할을 한다

방법은 간단하다

 

Contracting에서 만들어진 단계별 feature map을 Expanding 각 단계의 첫 번째 feature map과 사이즈를 맞춰서 (padding) 

Concat을 해준다 (add가 아니다)


 

추가적인 학습 방법

Unet에서는 뿐만 아니라 다양한 학습 방법을 활용해서 모델의 성능을 항샹시켰다

Overlap-Tite Input

Fully Convolutional Network 구조의 특성상 입력 이미지의 크기에 제약이 없다.

하지만 이러한 크기 제약의 부재는 오히려 학습을 어렵게 만든다

따라서 본 논문에서는 이를 Overlap-tite전략으로 보완하였다

쉽게 말해서 위의 사진의 파란영역을 입력으로 넣으면

노란 영역을 segmentation 결과가 나온다

다음 tile에 대한 Segmentation을 얻기 위해서는 이전 입력의 일부분이 포함되어야 한다.

이미지의 경계 부분 픽셀에 대한 세그멘테이션을 위해 0이나 임의의 패딩값을 사용하는 대신 이미지 경계 부분의 미러링을 이용한 Extrapolation 기법을 사용하였다.

Touching cells separation

또한 해당데이터의 경우 동일한 세포가 겹쳐져 있는 경우가 있는데 이런경우

경계가 매우 어려워진다

따라서 이를 구별하는 방법이 필요했다

즉, 각 세포 사이의 경계를 잘 파악해야한다

이를 위해 학습 데이터에서 각 픽셀마다 클래스 분포가 다른 점을 고려하여

사전에 Ground-Truth에 대한 Weight map을 구해 학습에 반영하였다

 

 

 

 

U-Net 논문 리뷰 — U-Net: Convolutional Networks for Biomedical Image Segmentation

딥러닝 기반 OCR 스터디 — U-Net 논문 리뷰

medium.com

 

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

Unet 계열 - 2편 Unet ++, Unet3+  (0) 2023.06.15
EfficientDet  (0) 2023.05.10
1 Stage Detectors  (0) 2023.05.09
Neck  (0) 2023.05.08
2 Stage Detectors  (0) 2023.05.03