3D U-Net: Learning Dense Volumetric Segmentation from Sparse Annotation
1.1 3D U-Net의 등장 배경
의료데이터(H,W,S,1)와 같은 3차원 데이터를 segmentation 하기 위해 3D U-Net이 등장
기존 이미지 구조(2D) vs 3차원 데이터(3D) 차이
기존 2D 이미지 데이터 형식은 (H,W,3(채널수)) 이면, 의료데이터와 같은 3차원 데이터는 (H,W,Slice, 1)의 형식을 가짐.
→ Slice는 3D 데이터의 깊이(depth)를 나타내는 차원을 의미함. (1은 채널 수)
→ 3D 구조의 데이터는 pixel(1x1)이 아닌 voxel(1x1x1)을 기본 unit으로 가짐.
1.2 3D U-Net 모델 구조
U-Net은 image segmentation을 위해 input dimension과 output dimenstion이 일치해야하는 구조를 가짐(same dimension)
→ 하지만 CNN 기반의 U-Net은 CNN을 통과하면서 feature map의 크기가 줄어들기 때문에 이것을 다시 원래 input 이미지 크기로 변환해주어야 함(Upsampling 필요)
[U-Net의 단계]
1.
Input data에 convolution 연산, batch Normalization, RELU를 적용(→)
→ 이 과정에서 feature map의 크기는 줄지 않고 채널의 개수만 늘어남
2.
Max pooling을 적용해 feature map의 사이즈를 줄임(→)
3.
1,2번 과정을 N번 반복
4.
N번 반복한 최종 결과를 Up-convolution 시킴(→)
→ Upsampling 기법으로 ConvTranspose(Deconvolution) 사용
→ UNET에서 ConvTranspose 연산을 통해 이미지의 해상도 복원, Segmentation 작업에서 필요한 정밀한 세부 정보 재구성.
5.
Upsampling을 거친 결과는 N-1번째의 결과의 dimension과 일치하게 됨
6.
N-1번째 결과와 Upsampling과정의 channel을 서로 연결시킨다음, conv+BN+ReLU+Upsampling 연산을 반복하여 dimension 크기를 원상복귀 시킴.
→ 여기에서 n-1번째 결과와 Upsampling과정의 채널을 연결시키는 것을 skip-connection이라고 함
7.
dimension이 원상복귀되면 channel을 동일하게 만들어 최종 결과물을 얻음.
[ConvTranspose 연산]
•
기존의 feature map에 패딩을 씌운 후, CNN 연산처럼 계산하여 dimension이 높은 feature map을 만들어내는 방식.
•
입력 feature map에 padding을 추가하고, 합성곱 필터를 적용해서 output feature map의 차원을 늘림
[Skip Connection 도입 및 효과]
•
UNet에서는 Encoder에서 feature 추출을 위해 down-sampling 작업을 하게 되고, 이 과정에서 feature map의 크기가 점점 작아지면서 공간적인 정보(Spatial information)가 손실됨
◦
보통 max-pooling이나 stride가 있는 convolution 과정에서 발생
•
Down-sampling 과정에서 발생하는 정보 손실을 보완하기 위해 UNet에서는 skip connection을 통해 encoder의 feature map을 직접 decoder의 convolution block으로 전달해 고해상도의 공간적 정보를 복구함
•
각 해상도의 feature 맵을 직접 디코더에 전달하기 때문에 다양한 해상도의 정보가 최대한 보존되고 재사용될 수 있어 정보 손실문제를 해결할 수 있음