[네이버 AI 부스트캠프 5기] DeepLab
[네이버 AI 부스트캠프 5기] DeepLab
Segmentation 대회를 하면서 팀원들끼리 각자 맡은 모델에 대해 소개하자는 이야기가 나와 잡고 있던 DeepLab에 대해 조금 더 파고들게 되었다. 전반적으로 강의에서 다 나오는 내용이긴 했지만, 따로 공부하면서 더 확실하게 머리에 박힌 느낌이 든다. 구조 자체에 집중하기보다는 중요한 개념을 위주로 정리하였다.
DeepLab
DCNN은 Image Classification, Object Detection에서 좋은 성능을 보여줬으나 Semantic Segmentation에 적용하기에는 두가지 한계가 있었음
Signal Downsampling : DCNN의 계층(Max Pooling, Downsampling)을 지나며 Resolution 감소 → Object의 디테일한 모습이 사라지는 문제
Spatial Invariance : 추상적인 정보를 필요로 하는 Image Classification에서는 잘 동작했으나 정확한 Localization을 요하는 Semantic Segmentation에서는 Accuracy를 제한함. 너무 크거나 작은, 일정 범위의 크기를 벗어난 Object를 읽지 못하는 등의 문제점 존재
→ DeepLab V1 (2015)
Input → DCNN(with VGG-16, Dilated Convolution) → 1/8 size of score map → Bilinear Interpolation → Dense CRF → Output
1. Dilated Convolution = Atrous Convolution → Signal Downsampling 해결
일반적으로 Receptive Field를 늘리면 연산량과 Parameter의 수가 증가하는 문제점 존재. Signal Downsampling 문제를 해결하기 위해 Dilated Convolution 도입. Dilation = 확장. Dilation rate를 도입하여 기존의 Convolution 연산량과 Parameter 수를 유지하면서 receptive field를 늘림.
기존의 Downsampling-Convolution-Upsampling에 비해 정보의 손실이 최소화.
2. Bilinear Interpolation
Upsampling 방법으로 Bilinear Interpolation 사용.
3. Dense CRF = Fully-Connected CRF(Conditional Random Field) → Signal Downsampling 해결
Bilinear Interpolation만으로는 물체를 정확히 Segmentation 할 수 없음. → 후처리 수행 필요
기존에 사용하던 short-range CRF는 local connection 정보만을 사용하여 자세한 정보를 얻을 수 없음.
→ DeepLab V2 : Multi-Scale Context 적용을 위한 Atrous Spatial Pyramid Pooling(ASPP) 제안 (2016)
Backbone으로 ResNet-101 사용
1. Atrous Spatial Pyramid Pooling → Spatial Invariance 해결
a = DeepLab V1, b = DeepLab V2
기존의 DeepLab V1에서는 dilation rate가 12로 고정되어 있었으나 V2에서는 6, 12, 18, 24의 다양한 Dilation Rate을 적용한 후 다시 합치는 방식을 사용함. 작은 Dilation Rate를 가지는 부분은 작은 Object를 포착하고, Dilation Rate를 가지는 부분은 큰 Object를 포착함.
→ DeepLab V3 (2017)
Dilation Rate 변경
Global Average Pooling 적용
ResNet에 Dilation Convolution 적용
→ DeepLab V3+ (2018) : Depthwise Separable Convolution과 Atrous Convolution을 결합한 Atrous Separable Convolution 제안
Modified Xception을 Backbone으로 사용 - Atrous Seperable Convolution
Depthwise Separable Convolution = Depthwise Convolution + Pointwise Convolution(1x1 Convolution) → 연산량 감소로 효율성 개선에 도움
Atrous Depthwise Convolution + Pointwise Convolution → Atrous Seperable Convolution 도입
2. Encoder-Decoder 구조 도입
DeepLab V3를 Encoder로 사용
단순히 Encoder 결과로 나온 Feature Map을 Upsampling 하는 것은 해상도가 떨어짐 → Skip-Connection 도입 → Low Level Feature를 이용하여 더욱 높은 해상도로 Decoding 가능
참고자료