본문 바로가기
딥러닝 with Python

[개념정리] Dilated Convolution과 Separable Convolution

by CodeCrafter 2024. 2. 5.
반응형

 

1. Dilated Convolution

 

- Atrous convolution이라고도 불리는 Dilated convolution은 우리말로 확장 합성곱이라고 불립니다. 

- 이는 Convolution 커널 내부의 간격을 늘리는 방법으로, 간격을 dilation rate라고 부르며 이를 조절하여 적용합니다.

- 위 그림의 예시를 통해 이해해보면

 * 아래 파란색 이미지가 입력이미지이고, 이때 일반적인 convolution과는 다르게 중간이 비어있는(또는 건너 띄어진) 부분이 있는 것을 볼 수 있습니다. 즉, 입력 이미지의 중간 중간 부분을 건너 띄어서 인식하는 방법을 의미합니다. 

- Dilation convolution을 활용하면, 더 넓은 수용영역(Receptive field)를 가지게 되며 더 많은 Global한 context를 고려할 수 있게 됩니다.

- 이를 통해, Segmentation이나 Detection 분야에서 이미지 내 객체의 경계를 감지하는데 효과적으로 활용됩니다. 

 

- 아래 그림은 동일한 필터(3x3)라도, dilation rate가 달라짐에 따라서 인식할 수 있는 Receptive field의 범위가 달라지는 것을 의미하는 그림입니다.

(가장 왼쪽부터 dilation rate = 1, 2, 4)

 

 

2. Seperable Convolution

- Seperable convolution은 우리 말로 분리 합성곱으로 해석됩니다. 이는 컨볼루션 연산을 두 단계로 분리하여 수행하는 기술로, 모델을 경량화하고 연산 효율성을 향상시키는데 사용되는 방법입니다.

 

- Seperable convolution의 작동방식을 다음과 같습니다.

 a) Depthwise Convolution

   : 입력 데이터의 각 채널에 대해 별도의 필터를 사용하여 2D 컨볼루션 연산을 수행합니다. 이를 통해 각 입력 채널에 대한 별도의 출력 채널이 생성되게 됩니다.

 * 일반적인 Convolution에서는 채널별로 동일한 필터에 의한 element-wise multiplication이 적용되고, 적용된 값들 중 동일한 위치에 있는 값들끼리 더해져 결과를 도출합니다.(1개의 필터와 n개의 채널 연산 => 각 위치별 n개의 연산값 도출 => 동일한 위치의 값들은 서로 더해짐(이때 편향(bias) 추가))

 * Depthwise Convolution은 입력 데이터의 각 채널별로 다른 필터가 적용되며, 적용된 값들은 그대로 출력값으로 존재하게 됩니다. 그러므로, 필터의 개수는 일치해야합니다.

 

b) Pointwise Convolution

  : Depthwise의 출력 채널을 결합하여 최종 출력을 생성해냅니다. 이때, 1x1 크기의 필터를 사용하여 출력 채널을 조합하고 새로운 채널을 생성하게 됩니다. 

 

- Separable Convolution의 장점과 단점은 아래와 같습니다.

 a) 장점 : 계산량이 감소하여 모델의 크기를 줄일 수 있고 이를 통해 모바일기기와 같은 자원 제약적인 환경에서 유용하게 사용할 수 있습니다.

 b) 단점 : 성능 저하 가능성이 있습니다. 기존 컨볼루션 방식보다 적용할 수 있는 필터의 개수에도 제한(Depth wise Convolution의 경우)이 있기에 더 다양한 학습을 하기에 제한되고, 이로 인해 성능 저하를 가져올 수 있습니다. 

 

 

반응형

댓글