딥러닝 Segmentation(4) - U-Net

미남로그·2021년 10월 19일
0

Segmentation

목록 보기
4/7

Segmentation 시리즈

0️⃣ 딥러닝 Segmentation(1) - 개념, 용어, 종류(Semantic, Instance segmentation)
1️⃣ 딥러닝 Segmentation(2) - Semantic/Instance Segmentation
2️⃣ 딥러닝 Segmentation(3) - FCN(Fully Convolution Network)
3️⃣ 딥러닝 Segmentation(4) - U-Net
4️⃣ 딥러닝 Segmentation(5) - DeepLab 계열
5️⃣ 딥러닝 Segmentation(6) - segmentation 평가(Pixel Accuracy, Mask IOU)
6️⃣ 딥러닝 Segmentation(7) - Upsampling의 다양한 방법

Segmentation을 위한 대표적인 방법이 있다고 합니다.

이렇게 크게 세 가지가 있는 것 같은데 이번 게시글은 U-Net의 내용을 다뤄볼 예정이며

주요 참고 자료

0️⃣ 해당 논문📃: U-Net: Convolutional Networks for Biomedical
Image Segmentation

1️⃣ 논문 리뷰📃: U-Net 논문 리뷰 — U-Net: Convolutional Networks for Biomedical Image Segmentation

을 참고할 예정입니다.



U-Net

U-Net은 Biomedical 분야에서 Image Segmentation을 목적으로 제안된 End-to-End 방식의 Fully-Convolutional Network 기반 모델입니다.

이름에서 볼 수 있듯이 네트워크 구조가 'U'자 형태를 띠어 이름이 'U-Net'으로 지어졌습니다.

FCN에서 upsampling을 통해서 feature map을 키운 것을 입력값과 대칭적으로 만들어 준 모델인데요. Coarse Map to Dense Map의 개념과 Skip Architecture의 개념도 활용하였습니다.

그래서 U-Net은 이미지의 전반적인 context 정보를 얻기 위한 network와 정확한 Localization를 위한 network가 대칭 형태로 구성되어 있습니다.

특이한 점은 U-Net이 Segmentation 뿐만 아니라 여러 가지 이미지 태스크에서 사용되는 유명한 네트워크가 되었지만, 본래 의학 관련 논문으로 시작되었습니다.

논문 제목에서도 biomedical image segmentation을 위한 네트워크라는 점을 알 수 있습니다.

아래 Fig.2. 그림과 같이 세포의 영역을 세그멘테이션 하기 위해 개발된 방법입니다.



전체 구조

논문에서는 네트워크 구조를 좌측의 Contracting path와 우측의 Expansive path 두 가지로 구분합니다.

1) Contracting path

일반적으로 사용해왔던 Convolution network와 유사한 구조를 가집니다.

  • 3x3 convolutions 2번 반복(패딩 없음)
  • activation function: ReLU
  • 2x2 Kernel max pooling(2 stride)
  • Downsampling 후, convolution의 channel size는 2배

2) Expansive path

  • 2x2 convolutions layer(up-convolution)
  • 3x3 convolutions 2번 반복(패딩 없음)
  • up-conv를 통한 Up-sampling마다 channel의 수가 1/2이 되고, feature map의 size는 늘어남
  • Up-Conv 된 특징맵은 Contracting path의 테두리가 Cropped된 특징맵과 concatenation 함
  • 2x2 Kernel max pooling(2 stride)
  • 마지막 layer에 1x1 convolution 연산

두 Path에서 크기가 같은 블록의 출력과 입력은 skip connection처럼 연결해 주어 low-level의 feature를 활용할 수 있도록 하였습니다.

마지막에는 1x1 convolution으로 원하는 시맨틱 segmentation map을 얻을 수 있습니다.

또한, 최종 출력인 Segmentation map의 크기는 Input Image 크기보다 작습니다. Convolution 연산에서 패딩을 사용하지 않았기 때문입니다.

Quiz

U-Net의 구조는 대칭이지만 (원 논문의 구현을 기준으로 하면) 모델의 입력값과 출력값의 크기가 다릅니다. 그 이유가 뭘까요?

  • Convolution은 padding을 통해서 크기를 같게 유지할 수 있으나, U-Net에선 padding을 하지않아서 deconvolution으로 확대하더라도 원래 이미지 크기가 될 수 없습니다.


타일(Tile) 기법

U-Net은 downsampling과 upsampling(또는 인코딩과 디코딩)을 대칭으로 하는 점은 구조에서 한눈에 파악이 됩니다.

다른 차이는 뭘까요?

얻을 수 있는 Segmentation map의 해상도입니다. FCN은 입력 이미지의 크기를 조정하여 Segmentation map을 얻어냈습니다.

반면 U-Net은 타일(tile) 방식을 사용해서 어느 정도 서로 겹치는 구간으로 타일을 나누어 네트워크를 추론합니다. 따라서 큰 이미지에서도 높은 해상도의 Segmentation map을 얻을 수 있습니다.

Fc-layer의 구조 특성상 이미지 크기에 제약이 없기 때문인데요. U-Net은 이미지 크기가 큰 경우, 이미지 전체를 사용하는 대신 overlap-tile 전략을 사용하였고, 이미지 경계 부분에서 0이나 임의의 패딩 값을 사용하는 대신 미러링을 이용하여 Extrapolation 기법을 사용하였습니다.

Expanding Path의 경우 Contracting Path의 최종 feature map으로부터 보다 높은 해상도의 Segmentation 결과를 얻기 위해서, 몇 차례의 Up-sampling을 진행합니다. Coarse Map에서 Dense Prediction을 얻기 위한 구조입니다.



Data Imbalance

앞서 U-Net은 의료 연구를 위해 개발된 모델이라 소개되었습니다. 위 이미지는 세포를 검출해내는 작업인데요.

세포 검출을 위해 세포들의 영역 뿐만 아니라 경계도 예측을 해야합니다.

이때 pixel 단위로 label을 매기면 데이터셋에 세포나 배경보다는 절대적으로 세포 간 경계의 면적이 작을 수밖에 없습니다.

이러한 class 간의 데이터 양의 불균형을 해결하기 위해 분포를 고려한 weight map을 학습 때 사용하였습니다.

weight map이란 weight를 신경망의 학습 파라미터를 가리키는 weight가 아니고, loss function에 적용되는 가중치를 의미합니다.

의료 영상에서는 세포 내부나 배경보다는 작은 세포 경계를 더 명확히 추론하는 것이 중요하기 때문에 세포 경계의 loss에 더 많은 패널티를 부과하는 방식입니다.

정리

  • U-Net은 FCNs보다 더 확장된 개념의 Up-sampling과 Skip Architecture를 사용한 모델입니다.

  • 결과적으로 U-Net의 구조는 아주 작은 학습 데이터만으로 Data Augmentation을 활용하여 여러 의료 영상 문제에서 우수한 성능을 보여주고 있다고 합니다.

profile
미남이 귀엽죠

0개의 댓글