Computer Vision/Semantic Segmentation

Atrous Convolution, Atrous Spatial Pyramid Pooling(ASPP) (for DeepLab V3+)

진성01 2022. 8. 1. 10:49

DeepLab v1~v3는 대표적인 segmentation 모델이다. 이번 글에서는 가장 최신 segmentation model 중 하나인 DeepLab V3+를 이해하기 위해 필요한 Atrous Convolution, Atrous Spatial Pyramid Pooling(ASPP)를 설명한다.

 

Atrous Convolution

 

Atrous Convolution은 기존 covolution과 동일한 parameter, 연산량을 유지하면서 receptive field(convolution kernel이 인지하는 영역)는 크게 만드는 covolution이다. 중심 pixel의 최근접 이웃 pixel이 아닌 더 먼 거리의 이웃 pixel을 이용하여 convolution을 진행하면 더 큰 영역을 인식하는 feature map을 형성할 수 있다. 

 

기존 방식: kernel의 크기는 동일하지만 feature map의 크기에 따라 receptive field의 크기가 달라진다

 

여러 크기의 객체를 인식하기 위해 receptive field를 다양하게 조정하는 과정이 필요하다. 기존의 convolution은 receptive field를 크게 만들기 위하여 convolution의 크기는 그대로 하고, feature map의 크기를 pooling을 통해 줄이는 방식을 채택하였다. 예를 들어, 250 * 250의 feature map을 3*3 kernel로 convolution 연산을 진행하였다고 하자. 여기서 receptive field를 크게 만들기 위해서 사용했던 기존 방식은 feature map을 pooling하여 125 * 125의 feature map을 형성하는 것이다. 이러한 경우 kernel의 size를 그대로 3*3으로 이용해도 feature map의 크기는 1/4로 축소되었기 때문에 상대적으로 receptive field가 커지는 효과가 나타나게 된다.

이러한 기존 방식에는 한가지 문제점이 있다. pooling을 통해 작은 크기의 feature map을 형성하였다면 마지막에 이를 다시 up sampling을 통해 원본 input의 크기로 변경하여야 한다. 이렇게 upsampling하는 과정에서 정보의 손실이 발생하게 된다. 낮은 해상도의 feature map을 이용해 높은 해상도의 feature map을 생성하는 과정에서 세부적인 pixel의 정보를 잃게 되고 그 결과 위의 그림과 같은 결과가 나타나게 된다. Object Detection과 같이 객체가 존재하는 영역을 탐지하는 문제에서 세부적인 pixel의 정보를 잃는 것은 큰 문제가 아닐 수 있으나, pixel 하나 하나를 전부 예측해 내야 하는 Semantic Segmentation에서 이러한 정보의 손실은 심각한 문제이다. 

 

Atrous Convolution은 receptive field를 크게 만들기 위해 feature map의 size를 줄이는 것이 아니라 convolution의 형태를 변경하는 방식을 제안한다. 위의 그림과 같이 중심 pixel에서 바로 이웃한 pixel을 이용하지 않고, 멀리 떨어진 pixel을 이용하여 convolution을 진행하면 receptive field의 크기를 크게 만들 수 있다. 그냥 kernel size를 5 * 5, 7 * 7로 변경할 수도 있겠지만 이런 경우 parameter의 수가 많아져 연산량이 몇 배가 늘어날 수 있다. Atrous Convolution은 3 * 3 kernel을 사용하기 때문에 parameter수는 기존과 동일하다. 결론적으로 기존방식에 비해 Atrous Convolution은 pooling - upsampling의 과정이 없으므로 정보의 손실은 최소화하면서 receptive field를 조정할 수 있다.

 

Atrous Spatial Pyramid Pooling(ASPP)

 

 

Atrous Spatial Pyramid Pooling(ASPP)는 서로 다른 확장 비율(dilation rate)을 가진 Atrous Convolution을 병렬로 적용한 뒤 다시 합쳐주는 방법이다. 위의 그림과 같이 dilation이 다른 여러 Atrous Convolution을 특정 feature map에 동시에 적용하여 concatnation 시킨다. 

 

DeepLab에서는 다음과 같이 특정 위치에서 한 번 ASPP를 진행한다. 여러 dilation의 Atrous Convolution 후 concatnation하고, 이를 다시 1 * 1 convolution을 통해 하나의 feature map으로 형성한다. ASPP를 이용하면 여러 receptive field를 이용하여 feature map을 형성하기 때문에 다양한 크기의 객체에 대해서 잘 반응할 수 있게 된다.