본문 바로가기
  • 책상 밖 세상을 경험할 수 있는 Playground를 제공하고, 수동적 학습에서 창조의 삶으로의 전환을 위한 새로운 라이프 스타일을 제시합니다.
Computer Vision

[2025-1] 한영웅, 전윤경 - UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation (IEEE 2019)

by Gwacheontech 2025. 1. 8.

Introduction

  • UNet++는 의료 영상 분할에서 널리 사용되는 U-Net 및 FCN(Fully Convolutional Networks)의 한계를 극복하기 위해 제안된 새로운 신경망 구조.
  • 기존 U-Net의 두 가지 주요 문제:
    • 최적 네트워크 깊이의 불확실성:
      • U-Net과 같은 인코더-디코더 구조에서 네트워크의 최적 깊이는 태스크의 난이도와 학습 가능한 데이터 양에 따라 달라질 수 있음.
    • 제한적인 스킵 연결 (skip connection) 설계:
      • 기존 U-Net의 스킵 연결은 동일한 해상도의 인코더와 디코더 특징 맵만 결합하도록 강제.
      • 그러나 이러한 동일 해상도 특징 맵은 의미적으로 유사하지 않을 수 있으며, 이러한 설계가 최적이라는 이론적 근거도 없음.
  • UNet++의 해결 방안:
    • 다양한 깊이를 가진 U-Net 통합:
      • UNet++는 서로 다른 깊이를 가진 여러 U-Net을 하나의 통합된 구조로 포함.
      • 이들 U-Net은 인코더를 부분적으로 공유하며, 디코더는 서로 dense connection되어 있음.
      • 이를 통해 다양한 깊이의 네트워크가 공동 학습하며 성능을 향상.
    • 스킵 연결 재설계:
      • UNet++는 스킵 연결을 재설계하여 디코더 노드에서 다양한 해상도의 특징 맵을 융합.
      • 이러한 설계는 디코더 노드가 다양한 해상도의 특징 맵을 활용하여 학습 가능.
    • 모델 가지치기 (Model Pruning):
      • UNet++는 학습 후 디코더 경로를 선택적으로 제거하여 모델 크기를 줄이고 추론 속도를 높일 수 있음.
      • 이는 성능 저하를 최소화하면서도 효율적인 추론이 가능하도록 함.

Methods

U-Nets of Varying Depths

  • (a)부터 (d)까지는 서로 다른 깊이를 가진 U-Net 구조를 나타냄.
  • (a): 가장 얕은 U-Net (깊이 1).
  • (b–d): 점차 깊어지는 구조로, 더 많은 다운샘플링 및 업샘플링 단계를 포함.
    • 이들 모델은 각각 특정 작업에 적합할 수 있지만, 최적 깊이는 데이터셋과 작업 난이도에 따라 다름.
    • 따라서 다양한 깊이를 가진 U-Net을 독립적으로 학습시키는 접근법이 필요.

U-$Net^e$: 앙상블 아키텍처

  • U-$Net^e$는 서로 다른 깊이의 U-Net을 하나의 통합된 아키텍처로 결합한 형태.
  • 모든 U-Net은 인코더( $X^{i,0}$ )를 공유하지만, 각각 고유한 디코더를 가짐.
  • 문제점:
    • 디코더 간 연결이 없어서 더 깊은 디코더가 얕은 디코더에 학습 신호를 전달하지 못함.
    • 기존 스킵 연결 설계가 동일 해상도의 특징 맵만 결합하도록 강제하여 유연성이 부족.

UNet+: 개선된 연결

  • UNet+는 $U-Net^e$에서 기존 스킵 연결을 제거하고, 대신 인접 노드 간 짧은 스킵 연결을 추가한 구조.
  • 이를 통해 더 깊은 디코더가 얕은 디코더에 학습 신호를 전달할 수 있음.

UNet++: 최종 설계

  • UNet++는 UNet+에서 한 단계 더 나아가, 디코더를 dense connection 방식으로 연결한 최종 아키텍처 (Eq 1).
  • 각 디코더 노드는 동일 해상도의 모든 이전 노드에서 multiscale의 특징 맵을 결합.
    • 수평: 동일 해상도의 이전 모든 노드에서 다중 스케일 특징 융합.
    • 수직: 다른 해상도의 이전 노드에서 다중 스케일 특징 융합.

UNet++의 구조와 Deep Supervision

1. UNet++의 기본 아키텍처

  • UNet++는 인코더와 디코더로 구성된 네트워크로, 이 둘은 중첩된 Nested Dense Skip Connections을 통해 연결.
    • 인코더 경로 (왼쪽):
      • 입력 이미지를 점진적으로 다운샘플링하여 고수준의 특징을 추출.
      • 각 레벨에서 $X^{i,0}$ 노드가 생성됩니다.
    • 디코더 경로 (오른쪽):
      • 인코더에서 전달된 특징 맵을 점진적으로 업샘플링하여 원래 해상도로 복원.
      • 디코더는 중첩된 스킵 연결을 통해 다양한 해상도의 특징 맵을 결합.
      • 중첩 스킵 연결:
        • 기존 U-Net의 단순 스킵 연결 대신, UNet++는 동일 해상도 및 다양한 해상도의 특징 맵을 결합하기 위해 여러 단계의 스킵 연결을 적용.
        • 예를 들어, $X^{0,2}$는 $X^{0,1}$과 $X^{1,1}$를 결합하여 생성.
    • 초록색 연결: 기존 skip pathway에 convolution layer를 추가하여 의미론적 차이를 줄임
    • 파란색 연결: Dense connection을 도입하여 그래디언트 흐름을 개선 
  1. Deep Supervision
  • 빨간색 연결: UNet++가 적용한 Deep Supervision 기법
  • 이는 디코더 경로의 여러 노드에서 직접적인 출력을 생성할 수 있도록 설계된 기법.
  • Deep Supervision이란?
    • 디코더 경로의 중간 노드(예: $X^{0, j}$)에서 추가적인 출력 계층을 배치하여 학습 과정에서 보조 손실 함수를 사용.
      • 보조 손실 함수: $L^1$, $L^2$, $L^3$, $L^4$
      • 각 디코더 노드 $X^{0,j}$에서 계산되는 중간 손실
    • 이를 통해 네트워크가 더 잘 정규화되고, 학습이 안정적이며 빠르게 수렴할 수 있음.
  • 장점:
    • 학습 중에는 각 노드에서 독립적인 세분화 결과를 생성할 수 있어 다중 크기의 객체에 대한 정확도가 향상.
    • 추론 시에는 특정 노드만 선택적으로 사용하여 모델 크기를 줄이고 추론 속도를 높일 수 있음.

3. Model Pruning

  • Deep Supervision 덕분에 UNet++는 추론 시 모델 가지치기가 가능.
    • (예: $X^{0,1}$, $X^{0, 2}$, $X^{0, 3}$, $X^{0, 4}$)에서 출력을 하지만, 추론 시에는 가장 성능이 좋은 특정 노드(예: $X^{0,J}$)만 선택적으로 사용하여 네트워크의 복잡도를 줄임.
  • 장점:
    • 효율성 향상: 불필요한 계산을 줄이고 추론 속도를 높임.
    • 유연성 제공: 정확도와 속도 간의 균형을 사용자 요구에 맞게 조정 가능.

 


Loss

디코더 노드 계산

  • $x^{i,j}$ :
    • i: 네트워크의 레벨(해상도 수준)을 나타냄.
    • j: 해당 레벨에서의 단계(깊이)를 나타냄.
    • 예를 들어, $x^{0,2}$는 가장 상위 레벨(i=0)의 세 번째 단계(j=2)에서 생성된 디코더 노드.
  • $H(⋅)$:
    • 입력 특징 맵을 결합하고 합성곱(convolution)을 적용하는 함수.
    • 일반적으로 합성곱 연산과 비선형 활성화 함수(ReLU 등)를 포함.
  • $D(x^{i−1, j})$:
    • 인코더 경로에서 전달된 특징 맵을 나타냄.
    • i−1은 한 레벨 아래의 인코더 노드를 의미.
  • $U(x^{i+1,j−1})$:
    • 업샘플링 연산으로, 한 레벨 아래(i+1)의 디코더 노드를 업샘플링하여 동일한 해상도로 변환.
  • $[x^{i,k}]_{k=0}^{j−1}$:
    • 동일 레벨(i)에서 이전 단계(k=0…j−1)의 모든 디코더 노드들의 집합.
    • dense connection을 통해 이전 단계의 모든 정보를 결합하는 것을 의미.

혼합 손실 함수

  • Y: 실제 레이블(ground truth)로, 각 픽셀의 클래스 레이블을 나타냄.
  • P: 모델의 예측값으로, 각 픽셀에 대해 클래스 확률을 나타냄.
  • N: 총 픽셀 수. 즉, 입력 이미지에서 모든 픽셀에 대해 손실을 계산.
  • C: 클래스의 수(다중 클래스 세분화 작업의 경우).
  • $y_{n,c}$: n번째 픽셀에 대해 실제 레이블이 클래스 c에 속하는지 여부(바이너리 값: 0 또는 1).
  • $p_{n,c}$ : n번째 픽셀에 대해 모델이 클래스 c로 예측한 확률값.
  • 첫 번째 항: Cross-Entropy Loss: 
    • Cross-Entropy는 실제 레이블과 예측 확률 간의 차이를 측정.
    • 각 픽셀에 대해 모델이 올바른 클래스를 얼마나 정확히 예측했는지를 평가.
    • 픽셀 단위 정확도를 높이는 것에 영향.
  • 두 번째 항: Dice Loss 기반 항목:
    • Dice 계수를 기반으로 한 손실 항목으로, 실제 레이블과 예측값 간의 겹치는 정도를 측정.
    • Dice 계수는 클래스 불균형 문제를 완화하고, 작은 객체나 희소한 클래스의 세분화 성능을 향상.
    • 구조적 유사성을 반영하며, 전체적인 세분화 품질을 높이는 것에 영향.

Results

  • 성능 지표
    • IoU: 예측된 분할 영역과 실제 레이블 간의 겹치는 정도를 측정.
    • Dice: 두 집합 간의 유사성을 평가하는 지표로, 특히 클래스 불균형 문제를 해결하는 데 유용.

UNet++의 성능 비교
다양한 백본 아키텍처에서 UNet++, UNet+, U-Net의 성능 비교