U-Net 논문리뷰_Convolutional Networks for Biomedical Image Segmentation
논문 출처 : U-Net: Convolutional Networks for Biomedical Image Segmentation
U-Net은 Image segmentation 혹은 Semantic Segmentation라고 불리는 분야의 대표적인 논문이다.
❓ Semantic Segmentation 이란? 원본 이미지를 받아 객체의 class 벼로 구분을 하는 것을 의미한다. Semantic Segmentation은 아이폰의 인물사진 모드 드에 사용되는 작업이다. 인물사진 몯는 사람을 강조하기 위해 나머지 객체를 흐릿하게 처리하여 Semantic Segmentation을 학습한 모델로 카메라에 담긴 사진 중 어떤 것이 사람인지 파악한다.
이러한 Semantic Segmentation을 의료용 Biomedical image 분석에 사용한 모델이 U-Net이다.
❓ Convolutional Neural Networks(CNN, 합성곱신경망)이란? CNN은 Convolutional Layer + Pooling Layer + Fully Connected Layer로 구성되어 있으며 Convolutional Layer와 Pooling Layer는 이미지의 특징들을 뽑아서 축약시키는 역할을 하고 Fully Connected Layer는 이를 활용하여 입력에 속하는 범주를 분류하는 역할을 한다.
하지만 U-Net의 경우 Fully Connected Layer가 없기 때문에 Convolutional Layer, Pooling Layer만 알고 가면 된다.
❓ Convolutional Layer (3x3 filter) 컨볼루션의 경우 필터를 이용하여 각각의 특성들을 추출하게 되는데, 필터가 이미지를 지나가게 되면서 합성곱 연산을 하게 도니다. 위의 짤을 보면 3x3 필터가 한칸씩 이동하면서 각각에 대한 합성곱을 다음단계로 넘어가며 추출하는 것을 알 수 있다. 이때 값을 activation map 혹은 convolved feature라고도 한다.
❓ Pooling Layer (2x2 filter) 일반적으로 convolutional layer를 한 다음 pooling layer를 많이 사용한다. pooling layer에서는 feature map을 다운 샘플링하여 feature map의 크기를 줄여주는 pooling 연산이 이루어짐. pooling 연산에는 max pooling과 average pooling이 주로 사용된다.
- max pooling: 각각의 필터 안의 최대값을 반환
- average pooling: 각각의 필터 안의 평균값을 반환
❓ Slidinig Window 윈도욱 사진 위를 이동하며 자른이미지들의 입력값을 모델로 통과한 결과값을 얻는 방법이다. 윈도우가 이동하면서 감지된 이미지들이 CNN에 들어가고 연산을 수행하게 된다.
1 Introduction
U-Net은 “완전 컨볼루션 네트워크(Fully Convolutional Network)” 라 불리는 구조를 기반으로 한다. 이 논문의 저자들은 Fully Convolutional Network를 수정하고 확장하여 매우 적은 수의 학습 이미지로도 동작하며, 더 정밀한 분할 결과를 얻을 수 있도록 했다.

❓ Contraction Path(수축경로)
❓ Expansive Path(확장경로)
주요 아이디어는 일반적인 수축 네트워크에 연속적인 레이어를 추가하는 것인데, 이때 풀링 연산자는 업샘플링 연산자로 대체된다. 따라서 이러한 레이어는 출력의 해상도를 증가시킨다. 위치를 정확히 지정하기 위해서는 수축경로에서 얻은 고해상도 특징을 업샘플된 출력과 결합한다. 이후 연속적인 컨볼루션 레이어는 이 정보를 바탕으로 추력을 조합할 수 있게 학습된다.
이 구조에서 중요한 수정사항 중 하나는 업샘플링 부분에 많은 수의 특징 채널을 추가한 것이다. 이를 통해 네트워크는 컨텍스트 정보를 고해상도 레이어로 전달할 수 있다. 그 결과, Expansive Path(확장 경로)는 Contraction Path(수축 경로)와 대칭적인 U자형 구조를 형성하게 된다. 이 네트워크는 Fully Connected Layer를 사용하지 않으며, 각 컨볼루션의 유효한 부분만 사용하여 세그멘테이션 맵에는 입력 이미지에서 전체 컨텍스트가 사용가능한 픽셀만 포함된다. 이러한 전략은 오버랩 타일 전략(Overlap-tile strategy, fig2 참조)을 통해 임의의 크기를 가진 이미지를 원활하게 분할할 수 있게 한다. 이미지 경계 영역의 픽셀을 예측하기 위해, 부족한 컨텍스트는 입력 이미지를 반전시켜 보완한다. 이러한 타일링 전략은 큰 이미지에 네트워크를 적용할때 매우 중요한데, 그렇지 않으면 GPU 메모리에 의해 해상도가 제한될 수 있기 때문이다.

작업에서 사용할 수 있는 학습 데이터가 매우 적기 때문에, 학습 이미지에 탄성 변형을 적용하여 광범위한 데이터 증강을 사용했다. 이를 통해 네트워크는 주석이 달린 이미지 집합에서 이러한 변형을 직접보지 않고도 변형에 대한 불변성을 학습할 수 있다. 이것은 생의학 세분화에서 특히 중요한데, 조직에서 변형이 가장 흔한 변형 중 하나이기 때문이며, 이러한 현실적인 변형을 효율적으로 시뮬레이션 할 수 있기 때문이다.
또한 많은 세포 분할 작업에서 동일한 클래스에 속하는 서로 접촉하는 객체를 분리하는 것이 도전과제이다. (fig3 참조) 이를 해결하기 위해 서로 접촉하는 세포 사이의 분리 배경 레이블에 큰 가중치를 부여하는 가중 손실(weighted loss)을 사용할 것을 제안한다.

이 네트워크는 다양한 생의학 세분화 문제에 적용될 수 있다. 본 논문에서는 전자현미경 스택에서 신경구조를 분할한 결과를 제시한다.
2 Network Architecture
네트워크 아키텍처는 그림1에 나타나있다. 이 네트워크는 수축경로(왼쪽)와 확장경로(오른쪽)으로 구성되어있다. 수축경로는 전형적인 convolution network architecture를 따른다. 여기에는 3X3 컨볼루션(패딩 없음) 을 두번 반복 적용하여, 각 컨볼루션 후에는 ReLU가 뒤따르고, 2X2 맥스 풀링 연산이 stride 2로 적용되어 다운 샘플링이 이루어진다. 다운샘플링 단계마다 특징채널(feature map)의 수를 두배로 늘린다.
확장경로(오른쪽)의 각 단계는 feature map을 업샘플링한 후, 2X2 컨볼루션(업 컨볼루션)이 적용되어 특징 채널의 수를 절반으로 줄인다. 그 후, 수축경로(왼쪽)에서 해당 단계와 일치하는 크기로 잘린 feature map과 연결되고, 두번의 3x3 컨볼루션과 각각의 ReLU가 뒤따른다. 컨볼루션 과정에서 경계 픽셀이 손실되기 때문에 이러한 잘라내기가 필요하다. 마지막 레이어에서는 1x1 컨볼루션을 사용하여 각 64 컴포넌트 특징 벡터를 원하는 클래스 수로 매핑한다. 전체적으로 이 네트워크는 23개의 컨볼루션 레이어를 가지고 있다.
출력 세분화 맵이 원활하게 타일링 되도록 하려면(fig2 참조) 모든 2x2 맥스 풀링 연산이 x 및 y 크기가 짝수인 레이어에 적용되도록 입력 타일 크기를 선택하는 것이 중요하다.
3. Training
입력 이미지와 해당하는 세분화 맵을 사용하여 네트워크를 학습시키며 확률적 경사 하강법(SGD) 구현을 사용한다. 패딩이 없는 컨볼루션 때문에 출력 이미지는 입력 이미지보다 일정한 경계 폭만큼 작아진다. 오버헤드를 최소화하고 GPU 메모리를 최대한 활용하기 위해, 저자들은 큰 입력 타일을 사용하는 것을 선호했으며, 이에 따라 배치 크기를 단일 이미지로 줄였다. 이에 따라 높은 모멘텀(0.99)을 사용하여 이전에 학습된 많은 샘플이 현재 최적화 단계에서 업데이트를 결정하게 된다.
에너지 함수는 마지막 feature map위에서 픽셀 단위의 softmax와 교차 엔트로피 손실 함수를 결합하여 계산된다. softmax는 다음과 같이 정의된다.
각 실제 세분화 맵에 대해 가중치 맵을 미리 계산하여, 특정 클래스 픽셀의 빈도 차이를 보상하고, 서로 접촉하는 세포 사이의 작은 경계를 네트워크가 학습하도록 강제한다.
분리 경계는 형태학적 연산(morphological operations)을 사용하여 계산한다. 그 후 가중치 맵은 다음과 같이 계산된다.
많은 컨볼루션 레이어와 네트워크를 통과하는 다양한 경로를 가진 딥 네트워크에서는 가중치 초기화가 매우 중요하다. 그렇지 않으면, 네트워크의 일부가 과도한 활성화를 초래하고 다른 부분은 전혀 기여하지 않을 수도 있다. 이상적으로 초기 가중치는 각 feature map이 근사적으로 균일한 분산을 가지도록 조정되어야 한다.
3.1 Data Augmentation
데이터 증강은 적은 수의 학습 샘플이 있을 때, 네트워크에 원하는 불변성 및 강인성 특성을 가르치는데 필수적이다. 현미경 이미지의 경우, 주로 이동 및 회전 불변성과 변형 및 회색 값 변화에 대한 강인성이 필요하다. 특히, 학습 샘플에 대한 랜덤 탄성 변형(random elastic deformations)은 주석이 달린 이미지가 매우 적을 때 세분화 네트워크를 학습시키는 핵심 개념이다.
이 논문에서는 거친 3X3 그리드에서 랜덤 변위 벡터를 사용하여 부드러운 변형을 생성한다. 변위는 10픽셀 표준편차를 가진 가우시안 분포에서 샘플링된다. 그 다음, 각 픽셀에 대한 변위는 bicubic 보간법을 사용하여 계산된다. 수축 경로의 끝에 위치한 드롭아웃 레이어는 추가적인 암묵적 데이터 증강을 수행한다.