목차
- Dilated Convolution 이란
- Dilated Convolution 적용 이유
- Dilated Residual Network와 Pytorch 코드
Dilated Convolution 이란
- 위 이미지를 보면 왼쪽이 일반적인 convolution 연산이고 오른쪽이 dilated convolution 연산입니다.
- 위 이미지의 파란색이 입력이고 초록색이 출력인데 오른쪽의 dilated convolution을 보면 왼쪽의 일반적인 convolution과 비교하였을 때, 필터간의 간격이 있는 것을 확인할 수 있습니다.
- dilation 상수를 통해서 표현하면 왼쪽의 일반적인 convolution은 dilation이 1이고 오른쪽의 dilated convolution은 dilation이 2가 됩니다. 즉, 필터에서 픽셀 간의 간격이
dilation
에 해당합니다.
- dilated convolution의 개념은 wavelet decomposition 알고리즘에서
atrous algorithm
이라는 이름으로도 사용되었습니다. 따라서 dilated convolution, atrous convolution 이라고 불립니다. 이 글에서는 dilated convolution 이라고 칭하겠습니다.
- 참고로 dilated convolution이라고 시작하게된 계기는 FCN을 발전시킨 Fisher Yu의 Multi-Scale Context Aggregation by Dilated Convolutions에서 시작되었고 atrous convolution은 deeplab 논문에서 사용되었습니다.
- atrous는 프랑스어로 구멍이라는 뜻입니다.
- dilated convolution을 적용하면 소위 말하는
receptive field
가 넓어지게 됩니다.
receptive field
는 convolution filter가 커버하는 영역이라고 생각하면 됩니다. 따라서 receptive field
가 넓어진다는 것은 필터가 받아들이는 영역이 넓어진다는 것이고 필터가 넓은 범위를 본다고 생각하시면 됩니다.
- 위 그림에서 빨간색 점이 있는 위치에서만 필터의 파라미터가 존재한다고 생각하시면 됩니다.
- 앞에서 설명한 바와 같이 가장 왼쪽의 그림은
dilation이 1
인 convolution filter 입니다. (input : 3 x 3 영역 → output : 3 x 3 영역)
- 가운데 그림은
dilation이 2
가 적용되었습니다. 여기서도 빨간색 점이 연산에 사용되는 필터의 파라미터 입니다. 따라서 가운데 그림의 경우 output으로 3 x 3 을 만들었을 때 input의 receptive field는 7 x 7이 됩니다. (input : 7 x 7 영역 → output : 3 x 3 영역)
- 가장 오른쪽 그림의 경우
dilation이 4
가 적용되었습니다. 가운데 그림과 동일한 원리로 receptive field가 15 x 15로 아주 넓습니다. (input : 15 x 15 영역 → output : 3 x 3 영역)
- 따라서 위 그림과 같이 dilation rate가 서로 다른 3 x 3 convolution을 한 지점에서 여러 개 사용함으로써 receptive field를 늘릴 수 있습니다.