U-Net: Semantic Segmentation의 핵심 모델

JJang-404·2025년 11월 26일

U-Net: Semantic Segmentation의 핵심 모델

학습 목표

  • U-Net의 구조와 작동 원리 이해
  • Skip Connection의 역할과 효과 파악
  • FCN과 U-Net의 차이점 비교
  • Loss 함수와 Weight Map의 수학적 원리 이해
  • 의료 영상 분석에서의 U-Net 활용 이해

1. U-Net 소개

U-Net이란?

정의

  • 2015년 Ronneberger et al.이 제안한 Semantic Segmentation 모델
  • 특히 의료 영상 분석(Biomedical Image Segmentation)에 특화된 모델
  • FCN(Fully Convolutional Network)의 발전된 형태
  • 대칭적인 U자형 구조를 가진 깊은 신경망

주요 논문

  • Ronneberger et al., "U-Net: Convolutional Networks for Biomedical Image Segmentation," 2015

개발 배경

  • 의료 영상에서 자잘한 점이 암이 될 수 있어 세밀한 세그멘테이션이 필요
  • 고해상도 공간 정보를 보존하며 경계를 명확하게 복원해야 함
  • 제한된 데이터셋에서도 높은 성능이 요구됨

2. U-Net의 필요성 및 배경

기존 FCN의 한계

FCN의 문제점

  • 업샘플링 과정에서 정보 손실이 발생
  • 세부적인 경계 복원이 어려움
  • 경계가 흐려지는(blurry) 현상 발생
  • Encoder 단계에서 추출한 고해상도 정보를 Decoder에서 효과적으로 활용하지 못함
  • 복원 과정에서 이미지 손상률이 높음

예시: 바둑판 이미지 세그멘테이션

  • 세그멘테이션은 각각의 위치값에 색상(마스크값)을 얼마나 명확하게 맞추는가의 문제
  • 원본 이미지의 마스크값을 정확히 복원하는 능력이 필요
  • 복원 과정에서 발생하는 이미지 손상률을 최소화해야 함

U-Net의 목표

핵심 아이디어

  • FCN의 단점을 보완하며 세부적인 경계까지 복원 가능한 모델 제안
  • Skip Connection을 활용하여 고해상도와 저해상도 특징을 결합
  • 원본 이미지의 경계를 충실하게 복원
  • 인코더에서 발생한 값들을 디코더에 연결하면서 복원력을 향상

3. U-Net의 구조 및 작동 원리

대칭적인 Encoder-Decoder 구조

전체 구조 개요

Input (572×572×1) → Encoder → Bottleneck → Decoder → Output (388×388×2)
                        ↓         ↓         ↑
                    고해상도 정보를 Skip Connection으로 전달

주요 구성 요소

  1. Encoder (Contracting Path): 특징 추출 및 공간 축소

    • 컨볼루션 및 Max Pooling으로 특징 추출
    • 공간 해상도를 줄이면서 특징을 학습
  2. Bottleneck: 추상화된 고수준 특징 학습

    • 네트워크의 가장 깊고 좁은 부분
    • 고수준의 의미론적 특징을 학습
  3. Decoder (Expanding Path): 원래 크기 복원

    • Transposed Convolution과 Skip Connection으로 복원
    • 고해상도 정보를 결합하여 세밀한 복원 수행
  4. Skip Connection: 동일한 단계의 Encoder와 Decoder 연결

    • 고해상도 정보를 Decoder로 직접 전달
    • 정보 손실 방지 및 경계 복원 성능 향상

구체적인 구조

1. Encoder 단계

구조

  • 두 개의 3×3 Convolution + ReLU 활성화 함수
  • 2×2 Max Pooling (stride=2)로 다운샘플링

특징 변화

  • 특징 맵의 크기를 절반으로 축소 (572→280→140→70→35)
  • 채널 수는 두 배로 증가 (64→128→256→512→1024)

Encoder 과정 예시

572×572×64 → (Max Pool) → 280×280×64
280×280×128 → (Max Pool) → 140×140×128
140×140×256 → (Max Pool) → 70×70×256
70×70×512 → (Max Pool) → 35×35×512

2. Bottleneck 단계

역할

  • 네트워크의 가장 깊은 부분 (28×28×1024)
  • 고수준의 추상화된 특징을 학습
  • 의미론적으로 중요한 정보를 압축하여 표현

3. Decoder 단계

구조

  • Transposed Convolution (Up-convolution)으로 업샘플링
  • Encoder에서 넘어온 Skip Connection과 Concatenation
  • 두 개의 3×3 Convolution + ReLU 활성화

채널 결합 방식 (Concatenation)

  • 인코더의 64채널 + 디코더의 64채널 = 128채널로 입력
  • 이후 Convolution을 통해 채널 수 조정
  • 핵심: Concatenation으로 채널을 연결하여 원본 데이터 보존

Decoder 과정 예시

35×35×512 → (Up-conv) → 70×70×512
70×70×512 + 70×70×512 (from Encoder) → 70×70×1024 (Concatenate)
70×70×1024 → (Conv 3×3) → 70×70×256

4. 최종 출력

출력 레이어

  • 1×1 Convolution으로 각 픽셀에 클래스 확률 할당
  • Softmax 또는 Sigmoid를 사용하여 최종 세그멘테이션 맵 생성

출력 형식

  • Softmax: 두 개의 픽셀값으로 출력 (예: [0.3, 0.7])
  • Sigmoid: 단일 확률값 출력 (예: 0.7)

입출력 크기 차이

  • 입력: 572×572
  • 출력: 388×388
  • 이유: Valid Convolution 사용으로 가장자리 픽셀 손실
  • 중앙 영역 (388×388)만을 사용하여 정확한 예측 수행

U-Net 네트워크 흐름도

                    64    64
                   ┌──┐  ┌──┐
input              │  │→→│  │                               output
image    ─────────→│  │  │  │──────────────────────────→   segmentation
tile     572×572   └──┘  └──┘                          388  map
         ↓         ↓                                    ↓
         ↓    128  128                            256  128
         ↓    ┌──┐ ┌──┐                         ┌──┐ ┌──┐
         ↓    │  │→│  │────────────────────────→│  │→│  │
         ↓    └──┘ └──┘                         └──┘ └──┘
         ↓     ↓                                  ↑
         ↓    256  256                       512  256
         ↓    ┌──┐ ┌──┐                    ┌──┐ ┌──┐
         └───→│  │→│  │───────────────────→│  │→│  │
              └──┘ └──┘                    └──┘ └──┘
               ↓                             ↑
              512  512              1024    512
              ┌──┐ ┌──┐            ┌──┐   ┌──┐
              │  │→│  │───────────→│  │──→│  │
              └──┘ └──┘            └──┘   └──┘
               ↓                     ↑
              1024                 1024
              ┌────┐              ┌────┐
              │    │─────────────→│    │
              └────┘              └────┘

범례:
→ : conv 3×3, ReLU
→→ : copy and crop (Skip Connection)
↓ : max pool 2×2
↑ : up-conv 2×2 (Transposed Convolution)
→ : conv 1×1 (최종 출력)

4. U-Net의 주요 아이디어

4.1. Skip Connection

역할 및 효과

  • Encoder에서 학습한 고해상도 정보를 Decoder로 직접 전달
  • 정보 손실을 방지하고 세밀한 경계를 복원
  • 원본 데이터의 공간 정보를 보존

작동 방식

  • 동일한 해상도 레벨의 Encoder 특징 맵을 Decoder로 복사
  • Concatenation을 통해 채널 차원으로 결합
  • Decoder의 업샘플링된 특징과 함께 사용

FCN과의 차이

  • FCN: 일부 계층에서만 Skip Connection 사용 (단순 덧셈)
  • U-Net: 모든 단계에서 Skip Connection 활용 (Concatenation)
  • U-Net은 다중 Skip Connection을 활용하여 다양한 해상도의 정보를 결합

Skip Connection의 효과

  • Skip이 적용된 경우: 원본과 매우 근접한 복원
  • Skip이 적용되지 않은 경우: 경계가 흐려지고 디테일 손실

코드에서의 구현

# Encoder 단계
e1 = encoder_block_1(input)
e2 = encoder_block_2(e1)
e3 = encoder_block_3(e2)
e4 = encoder_block_4(e3)

# Bottleneck
b = bottleneck(e4)

# Decoder 단계 (Skip Connection 적용)
d4 = decoder_block_4(b, e4)  # e4를 Concatenate
d3 = decoder_block_3(d4, e3)  # e3를 Concatenate
d2 = decoder_block_2(d3, e2)  # e2를 Concatenate
d1 = decoder_block_1(d2, e1)  # e1를 Concatenate

output = final_conv(d1)

4.2. Effective Upsampling (Transposed Convolution)

Transposed Convolution이란?

  • 컨볼루션 연산의 역과정
  • 작은 특징 맵을 큰 크기로 복원하는 학습 가능한 업샘플링 방법
  • Deconvolution, Up-convolution이라고도 불림

U-Net의 업샘플링 차별점

  • Skip Connection으로 보완된 고해상도 정보를 추가
  • 업샘플링 과정에서 발생하는 정보 손실을 최소화
  • 학습 가능한 파라미터를 통해 최적의 복원 방법 학습

업샘플링 과정

입력: 28×28×1024
↓ (Transposed Conv 2×2, stride=2)
출력: 56×56×512
↓ (Concatenate with Encoder feature 56×56×512)
결합: 56×56×1024
↓ (Conv 3×3, ReLU)
최종: 56×56×512

5. Loss 함수와 학습

Loss 함수 정의

기본 개념

  • 픽셀 단위로 Cross-Entropy를 계산
  • 각 픽셀의 Loss에 가중치(Weight Map) w(x)를 곱하여 학습
  • 경계선 픽셀에서 더 높은 가중치를 부여하여 경계 복원 성능 향상

Loss 함수 수식

E = ∑ w(x) · log(p(x))
   x∈Ω

수식 설명

  • E: 전체 손실(Error)
  • Ω: 이미지의 모든 픽셀 집합
  • x: 개별 픽셀의 위치
  • w(x): 픽셀 x의 가중치 (Weight Map)
  • p(x): 픽셀 x의 예측 확률 (모델의 출력)
  • log(p(x)): Cross-Entropy의 로그 확률

단계별 계산 과정

  1. 예측 확률 계산: 모델이 각 픽셀 x에 대해 클래스 확률 p(x) 출력
  2. 로그 확률 계산: log(p(x))로 Cross-Entropy 손실 계산
  3. 가중치 적용: w(x)를 곱하여 중요한 픽셀에 더 큰 페널티 부여
  4. 총합 계산: 모든 픽셀에 대해 합산하여 최종 손실 E 계산

Weight Map 계산 방법

목적

  • 경계선 픽셀을 강조하기 위해 가우시안 분포 기반의 가중치 사용
  • 클래스 불균형(class imbalance) 보정
  • 객체 간 경계를 더욱 명확하게 학습

Weight Map 수식

w(x) ∝ exp(−(d₁(x)² + d₂(x)²))

또는 더 정확한 형태:

w(x) = w_c(x) + w₀ · exp(−((d₁(x) + d₂(x))² / (2σ²)))

수식 구성 요소

  1. d₁(x): 픽셀 x와 가장 가까운 객체 경계까지의 거리
  2. d₂(x): 픽셀 x와 두 번째로 가까운 객체 경계까지의 거리
  3. w_c(x): 클래스 불균형 보정을 위한 기본 가중치
  4. w₀: 경계 가중치의 중요도를 조절하는 파라미터 (논문에서는 10 사용)
  5. σ: 가우시안 분포의 표준편차 (논문에서는 5픽셀 사용)

거리 계산 방법

  • 각 픽셀에서 가장 가까운 두 객체 경계까지의 유클리드 거리 계산
  • 경계에 가까울수록 d₁(x) + d₂(x) 값이 작아짐
  • exp 함수에 의해 경계 근처에서 가중치가 크게 증가

Weight Map의 효과

픽셀 위치    d₁(x)    d₂(x)    w(x)    의미
─────────────────────────────────────────────
객체 중심     10       15      낮음    일반 픽셀
객체 가장자리  2        8      중간    경계 근처
두 객체 사이   1        1      높음    경계선 강조

클래스 불균형 보정

w_c(x) = 1 / freq(l(x))
  • l(x): 픽셀 x의 실제 레이블(클래스)
  • freq(l(x)): 해당 클래스의 빈도
  • 드문 클래스일수록 높은 가중치 부여

경계선 강조의 효과

Why 경계선 강조?

  • FCN의 가장 큰 단점: 경계가 흐려지는(blurry) 현상
  • 의료 영상에서 세포 경계의 정확한 구분이 중요
  • 작은 객체나 좁은 간격의 객체를 명확히 분리

학습 효과

  • 경계선 픽셀에서의 예측 정확도를 높임
  • 세밀한 세그멘테이션 결과 생성
  • 인접한 객체를 명확하게 분리

예시: 세포 분리

상황: 두 개의 인접한 세포
─────────────────────────
일반 Loss:    세포1 ≈≈≈ 세포2  (경계 불명확)
Weight Map 적용: 세포1 │││ 세포2  (경계 명확)

6. U-Net과 FCN의 비교

구조 비교

특징FCNU-Net
Skip Connection일부 계층에서만 연결 (덧셈)모든 단계에서 연결 (Concatenation)
Decoder 구조단순 업샘플링업샘플링 + Skip Connection 결합
복원 성능경계 복원이 제한적, 흐려짐경계 복원이 우수, 명확함
응용 분야일반적인 세그멘테이션세밀한 세그멘테이션 (의료 영상)
파라미터 수상대적으로 적음상대적으로 많음
메모리 사용량적음높음

장단점 비교

FCN의 특징

장점

  • 간단한 구조로 효율적 학습 가능
  • 다양한 네트워크(VGG, ResNet 등)와 결합 용이
  • 메모리 사용량이 상대적으로 적음
  • 빠른 추론 속도

단점

  • 업샘플링 과정에서 정보 손실
  • 경계가 흐려지는 현상
  • 고해상도 정보를 효과적으로 활용하지 못함

U-Net의 특징

장점

  • 세밀한 복원이 필요한 응용에서 탁월한 성능
  • Skip Connection을 통해 높은 해상도의 세그멘테이션 가능
  • 원본 데이터의 공간 정보를 효과적으로 보존
  • 제한된 데이터셋에서도 높은 성능 발휘

단점

  • 연산량과 메모리 사용량이 많음
  • 복잡한 장면에서 모든 객체를 정확히 구분하기 어려움
  • 학습 시간이 상대적으로 길음

성능 비교 예시

바둑판 이미지 복원 테스트

원본 이미지: 명확한 바둑판 패턴
─────────────────────────────────
FCN 결과:
- 경계가 흐려짐
- 색상 복원이 부정확
- 마스크값 정확도: 약 85%

U-Net (Skip False):
- 경계가 약간 흐려짐
- 색상 복원이 개선됨
- 마스크값 정확도: 약 92%

U-Net (Skip True):
- 경계가 명확함
- 색상 복원이 정확함
- 원본과 매우 근접
- 마스크값 정확도: 약 97%

7. U-Net의 장점과 단점

장점

1. 고해상도 세그멘테이션

  • Skip Connection을 통해 세부적인 경계 복원
  • 원본 이미지의 공간 정보를 효과적으로 보존
  • 픽셀 단위의 정확한 분류 가능

2. 데이터 효율성

  • 제한된 데이터셋에서도 높은 성능 발휘
  • Data Augmentation과 함께 사용하면 더욱 효과적
  • 의료 영상처럼 데이터 수집이 어려운 분야에 적합

3. 다양한 확장 가능성

  • 여러 변형 모델로 발전 (3D U-Net, Attention U-Net, U-Net++ 등)
  • 다른 아키텍처와의 결합 용이 (ResNet, DenseNet 백본 사용)
  • 다양한 도메인에 적용 가능

4. End-to-End 학습

  • 입력 이미지에서 세그멘테이션 맵까지 한 번에 학습
  • 별도의 후처리 과정 불필요
  • 최적화가 용이

단점

1. 높은 계산 비용

  • 연산량과 메모리 사용량이 많음
  • 깊은 네트워크 구조로 인한 학습 시간 증가
  • 고해상도 이미지 처리 시 메모리 부족 문제 발생 가능

2. 복잡한 장면에서의 한계

  • 모든 객체를 정확히 구분하기 어려움
  • 매우 작은 객체나 겹친 객체의 분리가 어려울 수 있음
  • 클래스가 많을 경우 성능 저하 가능

3. 입출력 크기 차이

  • Valid Convolution 사용으로 출력 크기가 입력보다 작음
  • 전체 이미지를 세그멘테이션하려면 Overlap-tile 전략 필요
  • 추가적인 처리 과정 필요

8. Semantic Segmentation 유형 비교

Semantic Segmentation

  • 정의: 같은 클래스의 객체는 같은 색상(레이블)로 표시
  • 예시: 모든 사람은 빨간색, 모든 자동차는 파란색
  • 용도: 장면 이해, 도로 분할

Instance Segmentation

  • 정의: 같은 클래스의 객체도 개별적으로 다른 색상 부여
  • 예시: 사람1은 빨간색, 사람2는 초록색
  • 용도: 객체 추적, 개별 객체 분석

Panoptic Segmentation

  • 정의: Semantic + Instance의 결합, 모든 픽셀을 분류하고 개별 객체도 구분
  • 예시: 배경(하늘, 도로)은 클래스별 색상, 객체(사람, 자동차)는 개별 색상
  • 용도: 완전한 장면 이해

9. U-Net의 실무 활용

의료 영상 분석

  • 세포 분할: 현미경 이미지에서 개별 세포 구분
  • 종양 검출: CT, MRI 영상에서 종양 영역 식별
  • 장기 분할: 해부학적 구조 자동 분할

위성 영상 분석

  • 건물, 도로, 식생 분할
  • 토지 이용 분류
  • 변화 감지

자율주행

  • 도로 영역 분할
  • 차선 검출
  • 보행자 및 차량 영역 식별

핵심 정리

  1. U-Net은 대칭적인 U자형 구조를 가진 Semantic Segmentation 모델이다.

  2. Skip Connection은 Encoder의 고해상도 정보를 Decoder로 직접 전달하여 세밀한 경계 복원을 가능하게 한다.

  3. Concatenation 방식으로 채널을 결합하여 원본 데이터를 보존한다.

  4. Transposed Convolution을 사용하여 학습 가능한 업샘플링을 수행한다.

  5. Weight Map을 활용한 Loss 함수로 경계선 픽셀을 강조하여 학습한다.

  6. FCN 대비 모든 단계에서 Skip Connection을 적용하여 우수한 복원 성능을 보인다.

  7. 의료 영상 분석에 특화되어 있으며, 제한된 데이터셋에서도 높은 성능을 발휘한다.

  8. 메모리 사용량이 많다는 단점이 있지만, 세밀한 세그멘테이션이 필요한 분야에서 탁월한 성능을 보인다.

  9. 경계 복원력이 뛰어나 자잘한 점(암 세포 등)을 정확히 구분할 수 있다.

  10. 다양한 변형 모델로 발전하여 여러 도메인에 적용 가능하다.


추가 학습 권장 사항

심화 주제

  1. U-Net 변형 모델

    • 3D U-Net: 3차원 의료 영상 분석
    • Attention U-Net: Attention 메커니즘 추가
    • U-Net++: Nested Skip Connection
    • ResU-Net: Residual Connection 추가
  2. 고급 세그멘테이션 기법

    • DeepLab: Atrous Convolution 활용
    • Mask R-CNN: Instance Segmentation
    • SegFormer: Transformer 기반 세그멘테이션
  3. Loss 함수 변형

    • Dice Loss: 영역 중첩도 기반
    • Focal Loss: 어려운 샘플에 집중
    • Tversky Loss: False Positive/Negative 균형
  4. 데이터 증강 기법

    • Elastic Deformation: 의료 영상에 효과적
    • MixUp, CutMix: 데이터 부족 문제 해결
    • Spatial Transformation: 회전, 이동, 확대/축소

구현 관련

  1. PyTorch/TensorFlow 구현 연습

    • U-Net 직접 구현해보기
    • Skip Connection 구현 방법 이해
    • Weight Map 생성 코드 작성
  2. 최적화 기법

    • Batch Normalization 적용
    • Learning Rate Scheduling
    • Mixed Precision Training (메모리 절약)
  3. 평가 지표

    • IoU (Intersection over Union)
    • Dice Coefficient
    • Pixel Accuracy
    • Boundary F1 Score

참고 자료

  1. 논문

    • 원본 논문: "U-Net: Convolutional Networks for Biomedical Image Segmentation" (2015)
    • FCN 논문: "Fully Convolutional Networks for Semantic Segmentation" (2015)
  2. 온라인 자료

    • PyTorch 공식 튜토리얼
    • Papers with Code (구현 코드 및 성능 비교)
    • Medical Segmentation Decathlon (의료 영상 데이터셋)
  3. 실습 데이터셋

    • Kaggle: Data Science Bowl (세포 핵 분할)
    • ISBI Challenge: 신경 구조 세그멘테이션
    • Cityscapes: 도시 장면 세그멘테이션
profile
V I S I O N _ E N G I N E E R

0개의 댓글