[Euron] 자율주행 Segmentation 프로젝트

Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation 논문 리뷰

yejjji 2025. 7. 6. 14:22

 

UNet, Deeplabv3+, Segformer 이 3가지의 모델이 Segmentation 분야에서 가장 많이 사용되고, 중요한 모델이다.

우리 3명이 각각 1개씩 모델을 맡아서 논문을 읽고 서로 설명해주기로 하였다.

내가 맡은 논문은 Deeplabv3+ 모델로 UNet과 Segformer 사이에서 발행된 논문이지만, 나름 무시할 수 없는 중요한 모델이다.

오늘은 이 Deeplabv3+ 모델에 대해 살펴보려고 한다.

 

논문 제목 : Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation

https://arxiv.org/pdf/1802.02611

저자 : Liang-Chieh Chen, Yukun Zhu, George Papandreou, Florian Schroff, and Hartwig Adam Google Inc.


 

0. 개요 (Abstract)

  • 문제점
    • 기존 semantic segmentation 모델은 object boundary가 흐릿하거나 손상됨.
    • Global context 와 Local boundary 정보를 동시에 다루기 어려움
  • 해결책
    • DeepLabv3의 encoder 성능 + 간단한 decoder →경계 정보 복원 강화.
    • 연산량을 줄이기 위해 Depthwise Separable Convolution 사용.
  • 핵심 구성
    • DeepLabv3 기반 Encoder (ASPP 포함)
    • 간단하지만 효과적인 Decoder 모듈 → 경계 복원
    • Xception 백본 + Depthwise Separable Convolution으로 연산 최적화

1. 연구 배경 및 목적

 

✅ Semantic Segmentation이란?

  • 이미지 내 모든 픽셀 단위의미 있는 클래스를 할당하는 작업으로, 의미 분할(Meaningful labeling)이라고도 말함
  • 기존 방식은 hand-crafted feature → 현재는 CNN 기반.

✅ 기존 접근 방식

  • Spatial Pyramid Pooling (ASPP) :
    • 다양한 필터/크기로 문맥 정보 수집 → 다양한 스케일의 문맥 포착이 가능
    • 경계 정보 손실
  • Encoder-Decoder
    • 계층적 구조로 경계 복원에 유리함
    • 문맥 정보가 부족

✅ DeepLabv3+의 목표

  • 두 방식의 장점 서로 결합: → 다중 스케일 문맥 정보 + 세밀한 경계 복원하여 정확도랑 효율성 모두 개선 가능함

2. Deeplabv3+ 모델 구조 요약

 

1. Encoder ( 기존의 DeepLabv3 기반)

  • Atrous Convolution : feature map 해상도 유지 + receptive field 확대
  • ASPP : 다양한 dilation rate 사용하여 병렬 convolution → 다중 스케일 문맥 정보 추출

2. Decoder (Deeplabv3+에 새로 추가 모듈)

  • DeepLabv3의 Encoder 출력 feature → bilinear upsampling (x4)
  • Low-level feature (예: ResNet Conv2 출력) 와 concat
  • 채널 수가 높은 low-level feature → 1x1 Conv로 채널 수 감소
  • 3x3 Conv 2번으로 refinement
  • 다시 upsample (x4) → 원본 해상도로 복원

→ 즉 저수준 정보랑 고수준 문맥 정보 합침 → 경계 복원 강화

 

Encoder-decoder 기반의 Deeplabv3+

 

3. Backbone: Aligned Xception

  • 기존 ImageNet용 Xception 구조를 강화한 형태로, 기존 모델보다 더 깊은 구조 ( Entry, Middle, Exit flow로 구성됨)

Xception

: 기본적으로 Depthwise Separable Convolution을 이용한 구조로, 효율적으로 깊고 넓은 네트워크를 만들 수 있도록 설계된 모델


 

🔷  Entry Flow ( 입력 단계 )

- 목적 : 이미지로부터 저수준의 feature을 추출 -> 다운샘플링 수행

< 구성 >

Conv32, Conv 64 : 일반적인 convolution

이후에 각 블록이 1x1 conv → 3x3 Separable Conv ×2 → stride 2의 3x3 Sep Conv 라는 일종의 다운샘플링 수행

 

- MaxPooling 제거 → 모두 Depthwise Separable Convolution으로 대체 

=> Atrous Convolution 자유롭게 적용 가능하다 

 

🔷  Middle Flow ( 중간 반복되는 블록 )

- 목적 : 고차원의 feature 특히, context-aware한 표현 학습

< 구성 >

SepConv 728 X 3 블록을 16번 반복함

 

- 블록 구성은 간단한데 그 대신에 반복을 16번이나 해서 깊이 있는 학습이 가능함

=> ResNet의 Residual block처럼 skip connection 통해 gradient 흐름을 돕고, 성능 향상시킴

 

🔷 Exit Flow ( 출력 단계 )

- 목적 : 추상적인 고차원의 feature 최종 추출

< 구성 >

1x1 conv (1024) → 3x3 SepConv ×3: 채널 수를 728 → 1024 → 1536 → 2048로 점진적으로 증가시킴

=> 이 출력값을 Segmentation Decoder 또는 Classifier로 전달함

 

⭐ 각각의 Depthwise Convolution 후에 배치 정규화, RELU 추가 : MobileNet에서 아이디어 가져온 경량 구조 적용

 

Aligned Xception 모델


3. 주요 기술 설명

 

1. Atrous Convolution

  • 필터 사이사이의 간격을 늘려서(필터의 시야를 조정하면서) 필터의 receptive field를 넓히는 기법
  • 정보 손실( 해상도 손실 ) 없이 다중 스케일 정보 포착이 가능함

Output feature map(y값) 구하기

 

이때, x : Input feature map / w : convolution filter / i : 현재 position / r : atrous rate

 

2. ASPP (Atrous Spatial Pyramid Pooling)

  • 다양한 rate(dilation rate를 6, 12, 18 등등)로 여러 병렬 적용함 → 다양한 스케일 정보를 수집
  • Global image pooling도 포함됨 → 전체 문맥 정보 강화함

💡 Semantic Segmentation에서 더 깊은 특징 추출 위해 output stride를 16 또는 8로 설정

-> 마지막 1~2개의 블록들에서 각각 rate가 2, 4인 Atrous Convolution 적용함

 

3. Depthwise separable convolution

 

💡Depthwise Separable Convolution + Atrous Convolution = Atrous Separable convolution

  • 기존의 1개의 Conv를 Depthwise + Pointwise Conv 구조로 분리함
  • 연산량(9배 이상) 줄이면서 정확도 성능은 유지
  • Decoder, Aspp 모두에 적용하여 효율성도 확보

 


4. 실험 설정

  • PASCAL VOC 2012: 20개 클래스 + background
  • Cityscapes: 19개 도시 객체 클래스
  • Output Stride: 16 이랑 8짜리 비교
  • 평가 요소
    • MS (Multi-scale), Flip
    • COCO / JFT Pretraining 실험

5. 실험 결과

 

📊 PASCAL VOC 2012 (val/test)

설정 mIOU
Deeplabv3 85.7%
Deeplabv3+ 89.0% ( JFT pretraining 포함한 경우)

 

 

📊 Cityscapes

설정 mIOU
Deeplabv3 81.3%
Deeplabv3+ 82.1%

 

 

 

+ 성능 향상 요인

 

1. Decoder 도입 -> 좁은 Trimap 구간에서 mIOU +5.4% 성능 향상

2. COCO pretraining : +2%의 성능 향상

3. JFT pretraining : +1%의 성능 향상

4. ASPP + Separable Conv : 연산량 30~40%나 감소함

 

PASCAL VOC 2012 데이터셋 대상 성능 평가

 


6. 시각화 및 분석(Trimap 실험)

 

경계 근처의 void label을 확대하여 정확도 측정

3행 : 실패 예시

 

  • Decoder 없음 → Bilinear unsampling만으로 경계 흐림
  • Decoder 적용 → 경계 복원 개선, 성능 향상
  • 실패 예시: 가려진 객체, 유사한 클래스(소파 vs. 의자)

7. 결론

  • 간단한 Decoder 구조로도 성능 향상 가능함
  • 문맥 정보 + 경계 정보 → SOTA 정확도 달성
  • 효율적인 구조 설계로 모바일/임베디드 환경에도 적용 가능
  • TensorFlow 구현 코드

🔗 GitHub: tensorflow/models/deeplab