JLOG

[Paper Review]UNet 논문 리뷰 - U-Net: Convolutional Networks for BiomedicalImage Segmentation 본문

논문정리/Sementic Segmentation

[Paper Review]UNet 논문 리뷰 - U-Net: Convolutional Networks for BiomedicalImage Segmentation

정정선선 2021. 3. 25. 14:00

PAPER

 

Unet Abstract

  • FCN 구조를 응용한 구조를 사용함으로서 segmentation map을 출력했다.
  • Overlap-tile를 이용해 input image의 resolution이 GPU memory에 구애 받지 않고 사용할 수 있다.
  • data argumentation을 이용해 few labeled data를 가지고도 적절한 학습이 가능하다.

 

 

Introduction

CNN이 classificaiton 분야의 큰 발전을 가져왔다.

biomedical image processing을 위해 localization 정보를 얻기 위해 sliding-window 방법을 사용했다.

출처 :
https://m.blog.naver.com/PostView.nhn?blogId=worb1605&logNo=221333597235&proxyReferer=https:%2F%2Fwww.google.com%2F 출처: https:%2F%2Fmylifemystudy.tistory.com%2F87 [ENCAPSULATION]

 

기존 방식의 문제점 해결

기존에 사용하던 sliding-window 방법은 2가지 단점이 있다.

  1. redundancy of over lapping patch(겹치는 패치의 불필요한 중복성)위의 사진에서 보이는 것과 같이 patch를 옮기면서 중복이 발생하게 된다.
  2. 이 중복된 부분은 이미 학습된(검증된) 부분을 다시 학습하는 것이므로 똑같은 일을 반복하는 것과 같다. 즉, 불필요한 중복에 대한 내용도 학습하기 때문에 속도도 느리고 시간도 오래 걸린다.
  1. trade-off between localization accuracy and use of contextpatch 사이즈가 크면, max pooling이 더 많이 적용 되고 정확한 위치 정보를 알기에는 어렵지만, 더 넓은 범위의 이미지를 보기 때문에 context 인식에는 효과를 가진다.
  2.  

U-net은 중복되지 않은 patch를 검증해, 속도를 개선시켰다.

!!메모 ) 또한, + 여러 layer output을 동시에 검증???? 이건 이해가 안되는데 reference 4, 11 참조하기

 

 

U-net Architecture

구조의 개념적 설명

가운데를 기준으로 activation map 크기가 줄어드는 왼쪽 부분인 Contracting path와

activation map의 크기가 증가하는 오른쪽 부분인 Expansive path로 나누어진다.

 

Contracting Path는 CNN이미지의 context를 포착할 수 있도록 하고,

Expansive path는 작아진 feature map을 Upsampling하여 원본 이미지와 비슷한 크기로 늘려주고,

Contracting Path의 feature map과 결합하여(회색 화살표 부분) 더 정확한 위치 정보를 가진 segmentation map을 얻을 수 있다.

 

Up-sampling하고 skip connection을 이용하는 부분은 FCN와 많이 유사하다. FCN와의 차이점으로는 Up sampling시에도 높은 channel 수를 유지하여 높은 layer 층에도 context 정보를 전파할 수 있다.

(원문 참고 : One important modification in our architecture is that in the upsampling part we have also a large number of feature channels, which allow the network to propagate context information to higher resolution layers.)

 

Unet의 Structure 정보

  • Contracting Path각 층마다 2개의 convolution layer(kernel size : 3x3, non-pad, stride 1)를 사용한 후, maxpooling(kernel size : 2x2, stride 2)를 사용했고,
  • max pooling으로 feature map의 사이즈가 2배씩 작아지는 만큼 채널의 수를 2배로 늘려주었다.
  • Expansive path각 층마다 2개의 convolution layer(kernel size : 3x3, non-pad, stride 1)를 사용한 후, up-convolution를 사용했고,
  • 맨 마지막 classification에는 1x1 convolution을 사용하여 64개의 component feature vector를 desired number of class에 매핑하기 위해서 사용되었다고 한다. 각 픽셀의 class 값을 나타내기 위해서 사용된 것 같다.
  • feature map의 사이즈가 2배씩 커지는 만큼 채널의 수를 2배로 줄어주었다.

 

 

 

각 구조의 skip connection을 사용하여 영상 크기를 줄이기 전의 조밀한 위치 정보들을 깊은 레이어에 넘겨주었다.

 

보통 연구에서 Unet을 활용하였다고 하면, 기본 구조(인코더, 디코더, 스킵커넥션)의 모습은 유지하고 인코더나 디코더의 구성 방식이나 학습 방식을 조정했다고 보면 된다.

 

 

 

Overlap-tile

Unet은 GPU memory 자원에 영향을 받지 않고 높은 image resolution 데이터를 사용하기 위해 Overlap-tile 기법을 이용했다.

전자 현미경 데이터의 특성상 이미지 사이즈 크기가 매우 커 Patch 단위로 잘라서 Input으로 이용한다. 파란색 영역의 데이터를 입력하여 예측한 노란색 부분의 데이터를 출력한다.

Unet Convolution layer는 padding을 사용하지 않기 때문에, 이미지 크기가 줄어들게 되어 파란색의 이미지 크기에서 작아져 노란색이 된다. 전체 이미지에 크기와 같은 출력을 얻기 위해서 가장자리 예측을 위한 빈 부분에는 이미지를 반전하여 사용했다(Replication padding과 유사).

 

 

+참고 : 아래 블로그에 Overlap-tile에 대한 설명이 아주 잘 서술 되어 있다. 참고하길 추천

https://modulabs-biomedical.github.io/U_Net

 

+replication padding

출처 :
https://newsight.tistory.com/301

 

 

Data augmentation

Data augmentation이란?

이미지 데이터를 회전, 잘라내기, 좌우반전 그리고 밝기 조절 등의 방법으로 뻥튀기 하는 방법을 나타낸다.

좌우반전 (왕왕 귀여운 고양이가 서로 바라보고 있다)
이미지 잘라내기 (너무 귀여운 고양이는 잘라도 귀엽다)
밝기 조절 (찌푸린 사랑스러운 고양이가 밝아졌다)

위와 같은 방법들을 이용해 학습 데이터 셋을 늘려줄 수 있다.

(이미지 출처 : https://nittaku.tistory.com/272)

 

 

Unet에서의 Data Augmentation

Unet은 적은 데이터로 충분한 학습을 하기 위해서 data augmentation을 사용했다. Unet은 세포 segmentation에서 사용되는 네트워크이고, 세포 데이터에서 Data augmentation 적용이 괜찮은 효과를 가져오기 때문에 사용되었다고 한다.

 

 

 

 

 

Training

input image와 segmentation map는 SGD 기법과 함께 네트워크를 학습시키기 위해 사용된다.

unpadded convolution을 사용해 input image보다 output image의 size가 더 작다.

 

overhead를 최소화하고 GPU memory 사용을 극대화하기 위해, 큰 batch size 보다 큰 input tiles를 선호한다.

이 논문에서는 학습시에 단일 이미지의 input tiles(patch)를 사용했고 batch size가 작기 때문에 momentum의 값을 0.99로 큰 값을 주어 과거 gradient descent 값을 더 많이 반영하게 해 학습이 더 잘 되도록 하였다.

 

 

(a) HeLa 세포 현미경 raw image

(b) ground truth segmentation

(c) segmentation mask (white : foregraound / black : background)

(d) pixel wise loss를 사용해 경계선을 학습시킴

 

 

cross entropy loss with w(x)

이 논문에서는 cross entropy loss에 w(x)를 곱해서 사용한다.

 

  • Pk(x) : 정답 label의 추정 값(softmax)

pk(x)가 1에 가까울 수록 정답 클래스에 대한 스코어(ak(x))가 높다.

 

w(x)는 x 위치의 픽셀에 가중치를 부여하는 함수이다.

-wc(x) : x위치에 해당하는 클래스의 빈도수에 따라 값이 결정된다.??

 

-d1(x) : 가장 가까운 세포의 거리

-d2(x) : 두번째로 가까운 세포의 거리

 

 

왜 -log를 안쓰고 +log를 사용했는지 → 부호는 크게 관계가 없다고 한다.

 

 

 

 

Experiments

EM segmentation challenge 결과

 

2015 cell tracking challenge에서는 92% / 77.5%로 가장 좋은 성능을 가진 것을 확인할 수 있다.

 

 

결론

Unet은 biomedical segmentation application 분야에서 뛰어난 성능을 가진 것을 확인할 수 있다. 또한, 적은 이미지 셋으로도 합리적인 훈련을 할 수 있다.

또한, 짧은 시간 안에(NVidia Titan GPU(6GB)를 사용해 10시간)학습을 할 수 있다.

 

 

 

참고 블로그

https://mylifemystudy.tistory.com/87

https://modulabs-biomedical.github.io/U_Net

 

 

 

Comments