2

제6회 2024 연구개발특구 AI SPARK 챌린지

SPACE-S

DeepLabV3란?

인디
2024.03.19 03:03
3802

DeepLabV3란?

DeepLabV3는 PyTorch에서 제공하는 강력한 이미지 분할(image segmentation) 딥러닝 모델입니다. 이미지 분할이란 이미지를 구성하는 픽셀들을 분류하여 각 객체의 위치, 모양, 크기 등을 정확하게 파악하는 작업을 말합니다. DeepLabV3는 이러한 세밀한 영역 분할 작업에 특화되어 있죠.

DeepLabV3의 핵심 기능들을 살펴보면, 먼저 Atrous Convolution(홀 공간 컨볼루션)을 사용해 입력 이미지의 다양한 스케일에서 특징을 추출합니다. 이를 통해 객체 크기에 관계없이 효과적으로 대응할 수 있습니다. 또한 Atrous Spatial Pyramid Pooling(ASPP)을 구현하여 다양한 스케일의 특징을 동시에 포착하죠.

DeepLabV3+에서는 encoder-decoder 구조를 채택해 더욱 정밀한 세그멘테이션 결과를 제공합니다. Encoder가 입력 이미지에서 특징을 추출하면, Decoder가 이를 바탕으로 각 픽셀의 클래스를 예측하여 세밀한 분할 결과를 도출하는 방식입니다.

PASCAL VOC, Cityscapes 등 여러 데이터셋에서 DeepLabV3의 뛰어난 성능이 입증되었는데, 특히 복잡한 도시 풍경 이미지에서 강력한 모습을 보였습니다.

PyTorch에서는 torchvision.models.segmentation 모듈을 통해 DeepLabV3에 쉽게 접근할 수 있습니다. 이 모듈에는 사전 훈련된 모델도 포함되어 있어 복잡한 이미지 분할 작업을 간편하게 수행할 수 있죠. 물론 추가 훈련을 통해 모델 성능을 개선할 수도 있습니다.

 

Deeplabv3-ResNet은 ResNet-50 또는 ResNet-101 백본을 사용하는 Deeplabv3 모델로 구성됩니다. Deeplabv3-MobileNetV3-Large는 MobileNetV3 large 백본을 사용하는 Deeplabv3 모델로 구성됩니다. 사전 훈련된 모델은 Pascal VOC 데이터셋에 있는 20개 범주의 일부분인 COCO train2017에서 훈련되었습니다.

사전 훈련된 모델의 COCO val2017 데이터셋에 대한 정확도는 아래와 같습니다.

모델 구조평균 IoU전역 픽셀 정확도
deeplabv3_resnet5066.492.4
deeplabv3_resnet10167.492.4
deeplabv3_mobilenet_v3_large60.391.2

공식 홈페이지에서도 간단한 예제 코드를 제공하고 있습니다.

코랩에서 실습을 할 수 있고, 깃허브에서 모델 구조를 알 수 있습니다.

Rethinking Atrous Convolution for Semantic Image Segmentation

위 논문에서, DeepLabV3를 자세히 설명하고 있습니다. 초록을 요약하면 아래와 같습니다.

이 연구에서는 심층 컨볼루션 신경망에서 계산된 특징 응답의 해상도를 명시적으로 조정하고 필터의 receptive field를 조절할 수 있는 강력한 기술인 atrous convolution(홀 컨볼루션)을 의미론적 이미지 분할 분야에 재검토하였습니다. 다중 스케일의 객체를 분할하는 문제를 해결하기 위해, 다양한 atrous rate(홀 비율)를 사용하여 다중 스케일 컨텍스트를 캡처하는 cascaded 또는 parallel 형태의 atrous convolution 모듈을 설계했습니다. 또한 이전에 제안한 Atrous Spatial Pyramid Pooling(ASPP) 모듈에 전역 컨텍스트를 인코딩하는 이미지 수준 특징을 추가하여 성능을 더욱 향상시켰습니다. 구현 세부사항과 시스템 훈련 경험도 공유했습니다. 제안된 DeepLabv3 시스템은 DenseCRF 후처리 없이도 이전 DeepLab 버전보다 크게 향상되었고, PASCAL VOC 2012 의미론적 이미지 분할 벤치마크에서 다른 최신 모델과 비슷한 성능을 달성했습니다.

DeepLabv3+

DeepLabv3는 의미론적 이미지 분할 분야에서 상당한 성과를 올렸지만, 아직 개선의 여지가 있었습니다. 이에 개발자들은 새로운 방법론을 모색했고, 그 결과물이 바로 DeepLabv3+입니다.

가장 큰 변화는 Encoder-Decoder 구조의 도입이었죠. 이전 DeepLabv3에서는 Encoder만 있어 낮은 해상도의 특징맵을 그대로 사용했습니다. 하지만 DeepLabv3+에서는 Decoder를 추가해 고해상도 분할맵을 생성할 수 있게 되었습니다. 이를 통해 보다 정교한 세그멘테이션이 가능해진 것이죠.

또한 Encoder의 저수준 특징맵과 Decoder의 출력을 결합하는 방식을 사용했습니다. 이렇게 함으로써 물체의 경계 부분에 대한 정보가 개선되어 더욱 정확한 분할을 수행할 수 있었습니다.

한편 Encoder 모델로 Xception을 사용하면서 Depthwise Separable Convolution 기법을 적용했는데, 이를 통해 모델 크기를 줄이고 계산 효율성을 높일 수 있었습니다. 또 Batch Normalization 레이어의 위치를 바꾸는 등 정규화 과정도 개선했습니다.

이렇듯 DeepLabv3+는 DeepLabv3에 비해 다양한 측면에서 발전을 이뤘습니다. Encoder-Decoder 구조, 다중 수준 특징 융합, 모델 효율성 향상 등을 통해 보다 진화된 성능을 선보이고 있는 것이죠. 의미론적 이미지 분할 분야에서 DeepLabv3+는 진화를 거듭하며 그 역량을 인정받고 있습니다.

링크되어있는 깃허브에서 발전된 코드를 살펴보세요.

 

DeepLabv3+라는 최신(비교적) 세그멘테이션 모델을 활용해보면 어떨까요? 이 모델은 아시다시피 Encoder-Decoder 구조를 채택해 고해상도 분할이 가능하고, 경계 정확도도 상당히 높습니다. 위성 영상에서 연기나 불꽃, 타버린 지역 등을 놓치지 않고 정확히 탐지할 수 있을 겁니다. 게다가 DeepLabv3+는 다중 스케일 특징도 활용하고 있어서, 작은 연기 흔적부터 큰 화재 지역까지 다양한 크기의 산불 상황을 잡아낼 수 있을 거예요. 진화 상황 모니터링에도 엄청난 도움이 될 거라 생각합니다.

물론 모델 튜닝 작업은 필수일 겁니다. DeepLabv3+를 실제 산불 데이터셋으로 transfer learning하면 성능이 더욱 좋아질 테니까요. 이렇게 하면 기존 모델보다 월등히 정확한 분할 결과를 얻을 수 있을 지도 모릅니다.

UNet은 이미 많은 분들이 활용하고 계신 베이스라인 모델이죠. 대표적인 Encoder-Decoder 구조로 의미론적 분할에 강점을 가지고 있습니다. 특히 작고 복잡한 객체도 잘 인식한다는 평가를 받고 있어요. 우리가 다루는 산불 데이터셋에서 작은 연기 덩어리를 잡아내는 데 유리할 수 있겠네요.

하지만 UNet에 비해 DeepLabv3+가 장점이 있는 부분도 있습니다. 다중 스케일 처리가 가능한 ASPP(Atrous Spatial Pyramid Pooling)모듈을 사용해서 크기가 다양한 산불 현상을 더 잘 포착할 수 있습니다. 또한 Encoder 특징과 Decoder 출력을 결합하는 구조로 물체 경계 분할 성능도 좋다고 알려져 있죠.

사실 DeepLabv3+는 표준 데이터셋에서 UNet보다 조금 더 높은 정확도를 기록한 바 있습니다. 따라서 우리도 DeepLabv3+를 적용하면 기존 UNet 모델보다 향상된 성능을 기대해볼 수 있을 것 같네요.

2
0개의 댓글
로그인 후 이용해주세요!