[논문리뷰] U-Net: Convolutional Networks for Biomedical Image Segmentation (MICCAI 2015)
논문 선정 이유
- U-Net의 구조가 작은 부품에 대해서 일괄적으로 'Image Segmentation'을 진행하여 이를 양품을 판별해 내는 과정에 유용하게 사용 될 수 있을 것이라는 생각
- 적은 학습 데이터를 가지고 'Data Augmentation'을 활용하여 좋은 성능을 낼 수 있는 구조에 대한 호기심
Semantic Segmantation
정의 : 이미지 내에 있는 물체(Object)들의 의미 있는 (Semantic)단위로 분활(Segmentation)하는 작업을 의미
일반적인 분류(Classification) 에서는 단일 이미지를 하나의 클래스로 분류했었다. 분할(Segmentation) 에서는 각 픽셀마다 하나의 클래스로 분류한다.
Figure : 이미지에 존재하는 각각의 픽셀마다 Class labels를 예측하는 것으로 이해할 수 있다.
즉, 이미지의 전체를 인식하는 것이 아니라 각각의 픽셀마다 클래스를 예측하는 것이다.
Semantic Segmentation의 목표
이미지가 주어졌을 때, (높이 X 너비 X 1) 크기를 가지는 한 장의 분할 맵(Segmentation map)을 생성한다.
결과적으로, 한장의 Input Image가 들어왔을 때, 각각의 픽셀들 마다 Class의 번호가 담길 수 있도록 하는 것이 목표인 것이다. 실제로 이미지와 같은 해상도를 가지지만, 각각의 픽셀에 번호가 입력되는 방식으로 모델의 출력(Output)이 되는 것이 일반적이다.
또한, 각 픽셀마다 N개의 클래스에 대한 확률(Probability) 을 뱉어야 하므로, 정답(Output)은 (높이 X 너비 X N) 형태를 갖는다. 정답 데이터는 각 픽셀마다 원-핫 인코딩(One-hot encoding) 형식을 따르게 된다.
위 그림을 보면, 실제 이미지의 가장 왼쪽위에 해당하는 픽셀이 식물에 해당했다면 해당 값은 식물 Class 에 대해서 1이라는 값을 갖도록 만들고, 나머지 Class에 대해서는 0이라는 값을 갖도록 하는 원-핫 인코딩(One-Hot Encoding)을 할 수 있다.
Segmantic Segmentation 모델 학습
장점
- 일반적인 CNN분류 모델의 형식을 크게 바꾸지 않고 학습할 수 있다.
- 일반적으로 딥러닝 네트워크의 구조가 크게 어렵지 않은 편이다.
(객체 탐지(Object detection)분야의 네트워크 구조는 상대적으로 더 복잡한 편)
단점
- 분할(Segmentation)작업을 위한 데이터 세트 생성 비용은 매우 비싸다.
(각 픽셀마다 어떤 Class로 분류되는지 일일이 지정해야 하기 때문이다.)
U-Net
: 본 논문에서는 U자형으로 생긴 네트워크인 U-Net 아키텍처를 제안한다.
또한, 레이블 정보가 잇는(Annotated)데이터가 적을 때 효율적인 데이터 증긴(Data Augmentation)기법을 제안했다. 일반적으로, 의료 영상쪽에서는 이미지에 레이블을 붙이기 위해서는 매우 높은 수준의 의료 교육을 받은 전문의 들이 레이블을 붙여야하기 때문에 그 비용이 매우 높다.
따라서, 본 논문은 레이블 정보가 적은 상태의 데이터가 있을 때 효과적으로 사용할 수 있는 방법을 연구했음을 볼 수 있다.
U-Net Architecture
일반적인 분류 모델 같은 경우 끝으로 갈 수록 해상도가 줄어들고, 마지막에는 Class의 개수와 같은 Dimension을 갖도록 만드는 것이 일반적이다. 위에서 설명했던 "Semantic Segmentation" 분야에서는 단순히 분류 결과를 구하는 것이 아니라, 입력(Input Image)이미지와 같은 해상도를 가지는 출력(Output Image)이미지를 가져와야하기 때문에 Contracting path와 Expanding path가 대칭을 이루고 있다.
U-Net의 구조 큰 2가지
- 수축 경로(Contracting path) : 이미지에 존재하는 넓은 문맥(Context) 정보를 처리한다.
- 확장 경로(Expanding path): 정밀한 지역화(Precise localization)가 가능하도록 한다.
즉, U-Net 모델은 Contracting path와 Expanding path로 이루어져있으며, Input Image의 고해상도를 유지하기 위해서 Contracing path에서의 Feature Map을 Expanding path에서도 사용될 수 있도록 해주었다(위 구조에서 회색 화살표). 추가적으로 Contracting path에서는 'Max Pooling'을 사용했지만, Expanding path에서는 'Max Pooling'을 대신하여 'Up Sampling Convolution'을 사용하여 네트워크를 보완했다.
U-Net Architecture: 수축 경로(Contracting Path)
수축 경로(Contracting path) 에서는 2X2 Max Pooling을 사용하여 해상도(너비와 높이)를 2배씩 감소 했고, Conv연산으로 채널 크기는 2배증가했다. 일반적인 CNN모델처럼 Conv연산 -> ReLU -> Max pooling을 사용한다.
이렇게 수축 경로(Contracting path)만 보게 된다면, 일반적은 분류모델과 크게 다르지 않지만, 아래의 확장 경로(Expanding path) 경로를 보게되면, 다른점을 확실히 알 수 있다.
U-Net Architecture: 확장 경로(Expanding path)
확장 경로(Expanding path) 에서는 2x2 Convolution(Up-Convolution)을 사용하여 해상도(너비와 높이)를 2배 증가시켜주고, Conv 연산을 통해서 채널의 크기는 2배 감소하는 것을 볼 수 있다. 또한, 수축 경로(Contracting path)에서 처리된 Feature Channel Level에서 연결(Concatenation) Map을 잘라내어(Cropping) 동일한 Level로 가져와 수행하므로서 학습 난이도가 낮아지며 좋은결과를 얻을 수 있도록 한것을 볼 수 있다.
U-Net의 Overlap-tile 전략(Strategy)
본 논문은 FCN 구조의 특성상 입력 이미지의 크기에 제약이 없는 부분을 이용하여, 크기가 큰 이미지의 경우 이미지 전체를 사용하는 대신 Overlap-tite 전략을 사용했다. 위와 같이 파란색 영역의 이미지를 입력하면 노란 영역의 Segmentation 결과를 얻는다.
Overlap-Tile은 다음 tile에 대한 Segmentation을 얻기 위해서는 이전 입력의 일부분이 포함되어야 하고, 위 그림 처럼 patch끼리 겹치는 것이 아닌 tite끼리의 겹치는 형태로 'Overlap-Tite' 전략 이라고한다.
Overlap-Tite 전략을 사용하면 가상자리의 이미지가 손실되는 경우가 발생하는데 이를 'mirroring을 이용한 Extrapolation' 기법을 사용했다.
원본 이미지의 경계 부분이 거울에 반사된 것 처럼 확장되어 있다.
Training
<U-Net은 Segmentation을 위한 네트워크이므로, 픽셀 단위(Pixel-wise)로 소프트맥스(Softmax)를 사용한다.>
'a' 라는 함수를 네트워크의 결과라고 생각한다면, 그 자체를 feature값으로 볼 수 있고, 각각의 픽셀(Pixel)마다 Class를 예측해야하기 때문에 X는 픽셀의 위치(이차원 형태)가 되는 것이다.
'k' 같은 경우는 특징의 개수 -> Class의 개수
즉, a를 네트워크의 출력(Output) activate 값이라고 했을 때, 이는 일반적으로 사용되는 Softmax와 동일하다. 다만, 이때 각각의 픽셀(Pixel)마다 확률 값을 계산할 수 있도록 모든 픽셀(Pixel)마다 확률 값을 구하는 형태로 Softmax를 사용하는 것을 볼 수 있다.
<학습을 위해 다음의 'Cross-entropy손실을 사용한다.>
위에서 구한 확률 값에 log를 씌워줌으로서, 확률이 증가하는 형태로 바꿔주는 것이다. w(x)를 붙여줌으로써 각각의 픽셀(Plxel)마다 추가적인 가중치(weight)를 주어서 학습이 더 잘될 수 있도록 혹은 덜 학습될 수 있도록 했다.
Touching cells separation
세포(cell)를 명확히 구분하기 위해 작은 분리 경계(Small separation border) 를 학습한다.
즉, 동일한 클래스의 접촉 개체를 분리하는 것이다.
- w(c) : 학습 데이터에서 각각의 클래스마다 등장하는 빈도가 다를 수 있는 점을 고려하여 사전에 이를 조율하는 값을 반영
- d(1) : 가장 가까운 세포(cell)의 경계까지의 거리를 의미
- d(2) : 두번째로 가까운 세포(cell)의 경계까지의 거리를 의미
식을 보게 되면, exp안에 -가 붙게되는데 이렇게 되면, 세포(cell)와의 거리가 가까우면 가중치(weight)가 증가하게 된다.
즉, 세포(cell)거리가 가까우면 가까울 수록 큰 가중치(weight)를 주어 경계가 명확히 분리 될 수 있도록 하는 것이다. 이는, 본 논문의 (C)처럼 인접한 세포(cell)끼리의 경계가 배경으로 명확히 잘 분리된 것을 볼 수 있다.
정리
U-Net은 FCN보다 확장된 개념의 Up-sampling과 Skip Architecture를 적용한 모델을 제안했다.
이는 결과적으로, 적은 학습 데이터의 양만으로 Data Augmentation을 활용해 여러 Bio Image Segmentation 문제에서 좋은 성능을 보였다.
[Reference]
동빈나-꼼꼼한 논문 리뷰
https://blog.kubwa.co.kr/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-unet-convolutional-networks-for-biomedical-image-segmentation-2015-unet%EA%B5%AC%ED%98%84-%EC%8B%A4%EC%8A%B5-w-pytorch-40f9e54890d3
https://kimdoing.medium.com/u-net-convolutional-networks-for-biomedical-image-segmentation-bd9604d826b6
https://medium.com/@msmapark2/u-net-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-u-net-convolutional-networks-for-biomedical-image-segmentation-456d6901b28a
https://velog.io/@aprkfrmrgua/U-Net(구조 이미지 사용)