CNN 에서 연산의 효율성을 높이기 위해 분석 대상의 크기를 축소하는 것을 pooling 이라고 한다.
이러한 pooling 작업은 feature 의 특징을 추출한 데이터의 사이즈를 줄여 연산량을 줄이고 효율성을 높이기 위한 작업이다.
그러나 분석의 대상이 3차원 데이터라면 해당 feature는 Channel 값을 갖게 된다.
Channel 값이 많아지는 경우 연산에 걸리는 속도도 그만큼 증가할 수 밖에 없는데, 이때 Channel 의 차원을 축소하는 개념이 Bottleneck layer 이다.
기본적인 Convolution 파라미터는 아래와 같은 사이즈를 갖는다.
Convolution Parameters = Kernel Size x Kernel Size x Input Channel x Output Channel
이때 1x1 Convolution 을 input 값에 Convolution 해주면 해당 input 의 Channel 은 1x1 Convolution 의 Filter 수만큼 축소된다.
출처 : C4W2L06 Inception Network Motivation
위의 그림에서와 같이 1x1 Convolution 의 Filter 수 만큼 feature 의 Channel 수가 감소하게 되고,
이렇게 줄어든 feature 를 통해 3X3, 5X5 등의 Convolution 을 위해 연산에 사용되는 parameter를 줄여 연산의 효율성을 높인다.
'Dev' 카테고리의 다른 글
[colab] bash: Bad Substitution (0) | 2021.04.01 |
---|---|
[colab] sh: Permission denied 오류 (0) | 2021.03.29 |
Metric Learning and Triplet Loss (0) | 2021.03.28 |
Few-Shot Learning (0) | 2021.03.24 |
SENet (0) | 2021.03.22 |
댓글