딥러닝과 모델 아키텍처(7/7)
딥러닝

모델: UPerNet - 다중 스케일 시맨틱 세그멘테이션

Pyramid Pooling Module과 Multi-Loss로 픽셀 단위 분류를 수행하는 UPerNet의 구조를 정리한다.

2025-02-10
5 min read
#UPerNet#세그멘테이션#PPM

기본 정보

항목내용
명칭UPerNet (Unified Perceptual Parsing Network)
발표2018년, MIT CSAIL
작업시맨틱 세그멘테이션
출력픽셀별 클래스 분류 맵

세그멘테이션이란?

이미지의 모든 픽셀을 클래스 중 하나로 분류하는 작업이다.

탐지: "건물이 (100,50)에 있다"           → 박스
세그멘테이션: "이 픽셀은 건물, 저 픽셀은 도로" → 전체 색칠

전체 구조

입력 이미지
  ↓
[Backbone] ConvNeXt → C1, C2, C3, C4
  ↓
[Neck] 내장 FPN + PPM
  ↓
[UPerHead] 메인 예측 (N 클래스)
[FCNHead]  보조 예측 (학습 시에만)
  ↓
출력: H × W 클래스 분류 맵

핵심: PPM (Pyramid Pooling Module)

UPerNet의 가장 중요한 모듈이다.

입력 특징맵
  ↓
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
│1x1  │ │2x2  │ │3x3  │ │6x6  │  ← 다양한 크기로 풀링
│Pool │ │Pool │ │Pool │ │Pool │
└──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘
   ↓       ↓       ↓       ↓
 [Conv]  [Conv]  [Conv]  [Conv]   ← 1x1 Conv
   ↓       ↓       ↓       ↓
 [Up]    [Up]    [Up]    [Up]     ← 원래 크기로 업샘플
   └───┬───┴───┬───┴───┬───┘
       ↓ Concatenate + Conv
    전역 맥락이 포함된 특징맵

왜 다양한 크기로 풀링하는가?

풀링 크기파악하는 맥락
1x1이미지 전체 ("전체적으로 도시 지역")
2x24등분 ("왼쪽 위는 주거지, 오른쪽 아래는 상업지")
3x39등분
6x636등분 (세밀한 영역별 맥락)

모든 스케일의 맥락을 합치면 "전체적으로는 도시(1x1), 이 구역은 주거지(2x2), 이 블록은 아파트 단지(6x6)"를 동시에 파악한다.


특징 융합

C1 ──→ [Conv] ──→ ┐
C2 ──→ [Conv] ──→ ┤
C3 ──→ [Conv] ──→ ┤ → Concat → [Conv] → 융합 특징
C4 ──→ [PPM]  ──→ ┘
              ↑
       C4에만 PPM 적용 (전역 맥락 추가)

Auxiliary Head (보조 Head)

학습할 때만 사용한다. 중간 레이어에서 분기해서 추가 supervision을 제공한다.

문제: 깊은 네트워크에서 초기 층의 gradient가 약해짐
해결: 중간에서도 분류 시도 → 중간 층도 강한 학습 신호 받음

Backbone
  ├─ Stage 1, 2
  ├─ Stage 3 ──→ [FCNHead]   ← 보조 (학습만)
  └─ Stage 4 ──→ [UPerHead]  ← 메인

추론 시 보조 Head 미사용 → 추가 비용 없이 학습만 개선

손실 함수

3가지 손실을 동시에 사용한다.

손실역할메인 가중치보조 가중치
CrossEntropyLoss기본 분류1.00.4
TverskyLoss소수 클래스 강조1.00.4
LovaszLossIoU 직접 최적화1.00.4

TverskyLoss: "건물을 놓치는 것"을 더 심하게 처벌 → 작은 영역 탐지율 향상

LovaszLoss: 평가 지표(mIoU)와 직접 연결 → 최종 성능 향상에 효과적


학습 설정 포인트

Backbone 학습률 차등

Backbone: 낮은 학습률 (이미 ImageNet에서 학습됨 → 미세 조정)
Head:     높은 학습률 (처음부터 새로 학습)

FP16 (반정밀도 연산)

세그멘테이션은 모든 픽셀을 처리해서 메모리가 많이 필요하다. FP16으로 메모리 절반, 속도 약 2배 향상이 가능하다.


장단점

장점단점
PPM으로 다중 스케일 맥락 파악모든 픽셀 처리 → 연산량 많음
Multi-Loss로 균형 잡힌 학습경계 부분이 부정확할 수 있음
Auxiliary Head로 안정적 학습메모리 사용량 큼
다양한 Backbone과 호환-

시리즈: 딥러닝과 모델 아키텍처

  1. 딥러닝 기초
  2. 모델 구조: Backbone - Neck - Head
  3. Backbone: SwinTransformer
  4. Backbone: ConvNeXt
  5. Neck: FPN, ChannelMapper, FarSegNeck
  6. 모델: RINO
  7. 모델: UPerNet ← 현재 글