책상 밖 세상을 경험할 수 있는 Playground를 제공하고, 수동적 학습에서 창조의 삶으로의 전환을 위한 새로운 라이프 스타일을 제시합니다.
Computer Vision
[2025-1] 박지원-Encoder-Decoder with Atrous SeparableConvolution for Semantic Image Segmentation
by jellydell_y2025. 5. 8.
1. Introduction
: Semantic Segmentation의 발전과 DeepLabv3+의 등장
방법론
장점
단점
Spatial Pyramid Pooling
다양한 스케일의 문맥 정보 인코딩
객체 경계 세부 정보 부족
Encoder-Decoder
날카로운 객체 경계 포착
다양한 스케일 정보 인코딩 부족
Semantic Segmentation이란 이미지의 모든 픽셀에 의미론적 레이블을 할당하는 방법론으로, FCN(Fully Convolutional Network)모델이 현저한 성능 향상을 보인 바 있다. 이 FCNs은 spatial pyramid pooling(다양한 비율과 유효 수용 영역을 가진 필터나 풀링 연산을 통해 들어오는 특징을 조사하여 멀티 스케일 문맥 정보를 인코딩하는 방식)과 encoder-decoder 구조( 공간 정보를 점진적으로 복구하여 더 날카로운 객체 경계를 포착하는 방식) 2가지 방향으로 발전했다.
DeepLABV3+은 이 두 방향을 결합하는 새로운 모델로, 객체 경계를 특히 세밀하게 개선하는 간단하지만 효과적인 decoder 모듈을 추가한 버전이다. 또한, Xception 모델과 depthwise separable convolution을 Atrous spatial pyramid pooling 및 decoder 모듈에 적용하여 더 빠르고 강력한 encoder-decoder 네트워크를 구현한다. 실험 결과, pascal voc 2012 및 Cityscapes 데이터셋에서 각각 89.0%와 82.1%의 SOTA 성능을 달성한 바 있다.
2. 관련 연구
Semantic segmentation 분야는 FCN(Fully Convolutional Networks) 기반 모델을 중심으로 다양한 컨텍스트 정보를 활용하기 위한 여러 모델 변형들이 제안되었었다. 이러한 변형에는 멀티 스케일 입력을 활용하는 모델이나 확률적 그래픽 모델을 채택하는 모델 등이 포함된다. 본 논문은 주로 spatial pyramid pooling과 encoder-decoder 구조를 사용하는 모델에 대해 논의하며 spatial pyramid pooling 모델로는 PSPNet 또는 DeepLab이 있다.
위 모델들은 여러 그리드 스케일 또는 다양한 비율의 병렬 atrous convolution(Atrous spatial pyramid pooling, ASPP)을 통해 공간 피라미드 풀링을 수행하게 되는데 이를 통해 멀티 스케일 정보를 활용하여 여러 세그멘테이션 벤치마크에서 유망한 결과를 보여주었다.encoder-decoder 네트워크는 인간 자세 추정, 객체 감지, semantic segmentation 등 다양한 CV 태스크에 적용되었다.
일반적으로 encoder-decoder 네트워크는 두 부분으로 구성된다. 첫 번째는 특징 맵을 점진적으로 줄이고 더 높은 수준의 semantic 정보를 포착하는 encoder 모듈이다. 두 번째는 공간 정보를 점진적으로 복구하는 decoder 모듈이다. 본 논문은 이 아이디어를 바탕으로 deeplabv3를 encoder 모듈로 사용하고 간단하지만 효과적인 decoder 모듈을 추가하여 더 날카로운 세그멘테이션 결과를 얻는 것을 제안한다.
3. 제안 모델: DeepLabv3+의 구조
deeplabv3+ 모델은 encoder-decoder 구조를 사용한다 . encoder 모듈은 다양한 스케일에서 atrous convolution을 적용하여 멀티 스케일 컨텍스트 정보를 인코딩하고, decoder 모듈은 객체 경계를 따라 세그멘테이션 결과를 개선한다 .
atrous convolution은 심층 컨볼루션 신경망에 의해 계산된 특징의 해상도를 명시적으로 제어하고 필터의 수용 영역을 조정하여 멀티 스케일 정보를 포착할 수 있는 도구이자 표준 컨볼루션의 일반화된 형태로, 입력 신호를 샘플링하는 stride인 atrous rate을 결정한다 .
depthwise separable convolution은 표준 컨볼루션을 depthwise convolution과 pointwise convolution (1×1 convolution)으로 분해하여 계산 복잡성을 크게 줄이는 연산이다 . Depthwise convolution은 각 입력 채널에 대해 독립적으로 공간 컨볼루션을 수행하고, pointwise convolution은 depthwise convolution의 출력을 결합한다 .
텐서플로우 구현에서는 depthwise convolution에 atrous convolution이 지원된다. 이를 atrous separable convolution이라고 부르며, 이는 모델의 계산 복잡성을 크게 줄이면서도 비슷한 또는 더 나은 성능을 유지하는 것이 밝혀졌다.
인코더로는 deeplabv3를 사용한다 . deeplabv3는 atrous convolution을 사용하여 심층 컨볼루션 신경망이 계산한 특징을 임의의 해상도로 추출하는 모델이다 . 출력 stride는 입력 이미지 해상도와 최종 출력 해상도의 비율로 정의되며, semantic segmentation 작업에서는 일반적으로 출력 stride를 16 또는 8로 설정하여 더 밀집된 특징 추출이 가능하다. deeplabv3는 ASPP 모듈과 이미지 수준 특징을 결합하여 여러 스케일에서 컨볼루션 피처를 탐색한다. deeplabv3의 마지막 특징 맵을 encoder 출력으로 사용하며, 이는 256개 채널과 풍부한 semantic 정보를 포함한다. atrous convolution을 적용하여 임의의 해상도로 특징을 추출할 수 있다.
제안하는 decoder는 deeplabv3의 encoder 특징을 사용한다 . Encoder 특징은 일반적으로 출력 stride 16으로 계산된다 . 단순한 bilinear upsampling은 객체 세그멘테이션 세부 정보를 성공적으로 복구하지 못할 수 있다 . 따라서 그림 2에 설명된 것처럼 간단하지만 효과적인 decoder 모듈을 제안한다 . Encoder 특징은 먼저 4배 bilinearly upsample된 다음, 동일한 공간 해상도를 가진 네트워크 backbone의 corresponding low-level features와 연결된다 . low-level features의 채널 수를 줄이기 위해 1×1 convolution을 적용한다 . 연결 후, 특징을 개선하기 위해 몇 개의 3×3 convolution을 적용하고, 다시 4배 bilinear upsampling을 수행한다 . 출력 stride 16이 속도와 정확도 간의 최상의 절충안임을 실험을 통해 보여준다 .
Modified Aligned Xception 모델도 제안한다 . Xception 모델은 빠른 계산 속도로 imagenet에서 유망한 이미지 분류 결과를 보여주었다 . MSRA 팀은 Aligned Xception을 수정하여 객체 감지 작업의 성능을 더욱 향상시켰다 . semantic image segmentation 작업을 위해 Xception 모델을 수정한다 . MSRA 수정 외에 몇 가지 변경 사항을 추가한다 . (1) Entry flow 네트워크 구조를 수정하지 않고 [31]과 동일하게 더 깊은 Xception을 사용한다 . (2) 모든 max pooling 연산을 stride가 있는 depthwise separable convolution으로 대체하여 임의의 해상도로 특징 맵을 추출할 수 있도록 한다 . (3) MobileNet 디자인과 유사하게 각 3×3 depthwise convolution 후에 추가 batch normalization과 ReLU 활성화 함수를 추가한다 .
4. 실험 결과: PASCAL VOC 2012 및 Cityscapes 데이터셋 평가
본 논문은 pascal voc 2012 및 Cityscapes 데이터셋에서 제안하는 deeplabv3+ 모델의 효과를 검증하였다.
구성 요소
설정
PASCAL VOC 2012 Val mIOU
Multiply-Adds
ResNet-101 Backbone
DeepLabv3 (Naive Decoder)
77.21%
81.02B
ResNet-101 Backbone
DeepLabv3+ (Proposed Decoder)
78.85%
101.28B
ResNet-101 Backbone
DeepLabv3+ (eval OS=8)
79.35%
297.92B
ResNet-101 Backbone
DeepLabv3+ (train OS=32, eval OS=32)
75.43%
52.43B
ResNet-101 Backbone
DeepLabv3+ (train OS=32, eval OS=16)
77.37%
74.20B
ResNet-101 Backbone
DeepLabv3+ (train OS=32, eval OS=8)
77.92%
297.92B
Xception Backbone
DeepLabv3 (Naive Decoder)
79.17%
68.00B
Xception Backbone
DeepLabv3+ (Proposed Decoder)
79.93%
89.76B
Xception Backbone
DeepLabv3+ (eval OS=8)
80.22%
262.59B
Xception Backbone
DeepLabv3+ (SC)
79.79%
54.17B
Xception Backbone
DeepLabv3+ (COCO Pretraining)
82.20%
54.17B
Xception Backbone
DeepLabv3+ (JFT Pretraining)
83.03%
54.17B
pascal voc 2012 데이터셋은 20개의 전경 객체 클래스와 하나의 배경 클래스를 포함하며, 픽셀 수준 주석이 있는 10,582개의 훈련 이미지를 사용한다 . 성능은 21개 클래스에 대한 평균 픽셀 IoU(mIOU)로 측정된다 .
Decoder 디자인 선택에 대한 분석 결과, low-level feature map의 채널을 48 또는 32로 줄이는 것이 더 나은 성능을 가져왔다 . Decoder 모듈의 3×3 convolution 구조에서는 Conv2 feature map과 deeplabv3 feature map을 연결한 후 2개의 3×3 convolution을 사용하는 것이 가장 효과적이었다 . Conv2와 Conv3 feature map을 모두 활용하는 경우는 큰 성능 향상을 보이지 않았다 . 최종적으로는 deeplabv3 feature map과 채널 축소된 Conv2 feature map을 2개의 3×3 convolution으로 개선하는 간단한 decoder 모듈을 채택했다 .
ResNet-101을 backbone으로 사용했을 때, 제안하는 decoder를 추가함으로써 성능이 향상되었다 . 예를 들어 eval output stride=16일 때 성능이 77.21%에서 78.85%로 향상되었다 . train output stride = 32를 사용하면 계산 속도는 빨라지지만 성능은 train output stride = 16을 사용하는 경우보다 낮았다 .
Xception을 backbone으로 사용했을 때, ResNet-101보다 약 2% 더 나은 성능을 보였다 . 제안하는 decoder를 추가하면 eval output stride=16에서 약 0.8%의 성능 향상이 있었다 . depthwise separable convolution을 ASPP 및 decoder 모듈에 적용하면 Multiply-Adds 측면에서 계산 복잡성이 33%에서 41%까지 크게 줄어들면서도 비슷한 mIOU 성능을 유지했다 . MS-COCO 데이터셋 사전 학습은 약 2%의 성능 향상을 가져왔으며 , JFT-300M 데이터셋 사전 학습은 추가로 0.8%에서 1%의 성능 향상을 가져왔다 . 최종 모델은 pascal voc 2012 테스트 세트에서 89.0%의 성능을 달성했다 .
Object 경계에서의 성능 개선을 평가하기 위해 trimap 실험을 수행했다 . 제안하는 decoder를 사용하면 naive bilinear upsampling에 비해 객체 경계 근처의 정확도가 향상됨을 확인했다 . 특히 dilated band가 좁을수록 개선 효과가 더 두드러졌으며, ResNet-101과 Xception에서 각각 4.8% 및 5.4% mIOU 향상을 관찰했다 .
Cityscapes 데이터셋에서도 실험을 진행했다 . Xception-65를 backbone으로 사용한 deeplabv3 모델은 77.33%의 성능을 보였고, 제안하는 decoder 모듈을 추가하자 78.79%로 성능이 크게 향상되었다 . 더 깊은 네트워크 backbone인 Xception-71을 사용했을 때 79.55%의 최고 성능을 달성했다. 최종적으로 제안하는deeplabv3+ 모델은 Cityscapes 테스트 세트에서 82.1%의 성능을 달성하여 새로운 최첨단 성능을 기록했. 정성적 결과는 모델이 객체를 잘 분할함을 보여주지만, 소파 대 의자, 심하게 가려진 객체, 드물게 보이는 객체 분할에 대해선 어려움이 있었다.
5. 결론: DeepLabv3+의 기여 및 향후 연구 방향
제안하는 모델인deeplabv3+는encoder-decoder구조를 활용하여semantic image segmentation작업을 수행한다.deeplabv3는 풍부한 문맥 정보를 인코딩하는 데 사용되며, 간단하지만 효과적인 decoder 모듈은 객체 경계를 복구하는 데 사용된다. 가용한 계산 자원에 따라atrous convolution을 사용하여 encoder 특징을 임의의 해상도로 추출할 수 있다는 장점이 있다. 또한,Xception 모델과atrous separable convolution을 도입하여 제안하는 모델을 더 빠르고 강력하게 만들었다. 실험 결과, 제안하는 모델은pascal voc 2012및 Cityscapes 데이터셋에서 새로운 최첨단 성능을 달성했음을 보여준다.