차근차근 한걸음씩 개발 일기

[DL] U-Net 본문

인공지능/딥러닝, 머신러닝

[DL] U-Net

노승희 2023. 2. 13. 16:45

오늘은 U-Net에 대해 알아려보한다.

개요

U-Net은 MICCAI에서  'U-Net: Convolutional Networks for Biomedical Image Segmentation' 이라는 논문으로 처음으로 제안 구조로서 매우 적은 수의 학습 데이터로도 정확한 이미지 세그멘테이션 성능을 보여주었으며 ISBI 세포 추적 챌린지 2015에서 큰 점수 차이로 우승했다고 한다.

 

[그림 1]U-Net 구조

 

U-Net은 오토인코더(autoencoder)와 같은 인코더-디코더(encoder-decoder) 기반 모델에 속한다. 아래의 오토 인코더 모델 구조를 보면 인코딩 단계에서는 입력 이미지의 특징을 파악하기 위해 채널의 수는 늘리면서 차원을 축소한다. 디코딩 단계에서는 저차원으로 인코딩된 정보만 이용하여 채널의 수를 줄이고 차원을 늘려서 고차원의 이미지를 복원한다. 이 구조를 사용했을 경우 아래와 같은 단점을 가진다.

 

단점

- 인코딩 단계: 차원 축소를 거치면서 이미지 객체에 대한 자세한 위치 정보를 잃는다.

- 디코딩 단계: 저차원의 정보만을 이용하기에 위치 정보를 복원하지 못한다.

 

 

[그림 2] Auto Encoder

U-Net은 위의 단점을 보완하기 위해 인코더 레이어와 디코더 레이어의 직접 연결을 스킵 연결(skip connection)을 사용한다. 스킵 연결을 사용할 경우 저차원 뿐만 아니라 고차원 정보도 이용하여 이미지의 특징을 추출함과 동시에 정확한 위치 파악도 가능하게 되는 것이다. 스킵 연결의 경우 [그림 3]의 파란색 실선을 의미한다.

[그림 3]Auto Encoder + Skip Connection

 

U-Net 은 인코더의 축소경로(contracting path)와 디코더의 확장경로(expending path)로 구성되며 두 구조는 서로 대칭적이다. 인코더와 디코더를 연결하는 부분을 브릿지(bridge)라고 한다. 인코더와 디코더에서는 모두 3x3 컨볼루션을 사용한다.

 

- 수축 경로(contracting path): 이미지에 존재하는 넓은 문맥(context) 정보를 처리한다.

- 확장 경로(expanding path): 정밀한 지역화(precise localization)가 가능하도록 한다.

 

수축 경로

 그림에서 세로 방향 숫자는 맵(map)의 차원을 표시하고 가로 방향 숫자는 채널 수를 표시한다. 예를 들면 세로 방향 숫자 284x284 과 가로 방향 숫자 128 은 해당 레이어의 이미지가 284x284x128 임을 의미한다. 입력 이미지는 572x572x1 이므로 1개 채널을 갖고 크기가 572x572 인 이미지를 나타낸다. 화살표의 경우 파란색은 컨볼루션 연산을 의미하고, 빨간색은 풀링을 의미한다.

수축 경로는 아래의 업 샘플링 기법을 사용한다(CNN 관련해서는 아래 블로그에 종류별로 잘 설명되어 있다)

https://tensorflow.blog/a-guide-to-convolution-arithmetic-for-deep-learning/

업 샘플링

 

 

확장 경로

 그림에서 파란색 박스의 구조는는 인코더에 있는 ConvBlock과 동일하다. 화살표는 연두색의 경우 업 샘플링 기법을 사용한 것이고, 회색은 인코더에서 넘어온 채널을 각 디코더에 쌓아준 것이다. 디코더의 업샘플링 직후의 레이어를 보면 흰색 박스가 있는데 이게 단순히 인코더에서 넘어온 채널을 의미한다.

확장 경로에 사용된 다운 샘플링 기법은 아래와 같다.

다운 샘플링

 

 

설명 보강 필요..!

 

 

'인공지능 > 딥러닝, 머신러닝' 카테고리의 다른 글

[DL] Swim Transformer  (0) 2023.02.21
[DL] EfficientDet  (0) 2023.02.13