- GoogLeNet 특징
- 22개의 Layer
- Inception Module
- No Fully-Connected layers
- Inception Module : Inception Module은 입력값에 대해, 4가지 종류의 Convolution, Pooling을 수행하고, 4개의 결과를 채널 방향으로 합칩니다. 이러한 Inception Module이 모델에 총 9개가 있습니다.
- Inception Module에서 4가지의 연산
- 1 x 1 Convolution
- 1 x 1 Convolution + 3 x 3 Convolution
- 1 x 1 Convolution + 5 x 5 Convolution
- 3 x 3 MaxPooling + 1 x 1 Convolution
▶ 이 4개의 연산결과를 Channel-wise Concat합니다. 즉, Feature Map을 쌓는 것입니다.
- Inception Module에서 Feature Map을 효과적으로 추출하기 위해 1x1, 3x3, 5x5의 Convolution 연산을 각각 수행하며, 3x3 Max Pooling에서 입력과 출력 Matrix의 Height, Width를 같게해야하므로 Pooling 연산에서 Padding을 추가해 줍니다.
- Feature Map을 추출하는 과정에서 엄청나게 많은 연산과정을 거쳐야 하는 문제가 생기게 되는데, 이를 해결하기 위해 3x3, 5x5 Conv 연산 전에 3x3 MaxPooling 이후 1x1 Conv가 먼저 진행되는 것입니다.
Inception Module에서 1x1 convolution은 핵심 역할을 하는데, 1x1 Conv을 넣어 channel을 줄였다가, 다음의 3x3, 5x5 Conv에서 다시 확장하여 필요한 연산량을 감소 시킵니다.
만약, 1x1 convolution을 사용한다면, 1x1은 채널을 조절하는 역할을 하기 때문에, 최적화 과정에서 채널 간의 특징을 추출 할 것이고, 3x3은 이미지의 지역정보에만 집중하여 특징을 추출하려 할 것입니다 (필터 크기 세분화). 채널간의 관계정보는 1x1 convolution에 사용되는 파라미터들 끼리, 이미지의 지역정보는 3x3 convolution에 사용되는 파라미터들 끼리 연결된다는 점에서 노드 간의 연결을 줄였다고 볼 수 있습니다.
v1모델에서 첫번째 계층을 Stem Layer라고 하는데 v3모델까지 사용합니다. 이 첫번째 계층은 Convolution 연산을 하는데, 학습에 큰 영향을 주며 일반적인 CNN 모델과 같습니다. 이 모델의 마지막에는 Feature Map의 크기와 같은 필터크기로 Average Pooling을 수행한 후 Fully-Connected layer를 지나 softmax 함수로 예측 결과물을 보여줍니다. 여기서 파라미터 수를 결정하는 큰 요인 중 하나인 Fully-Connected layer에서 적게 사용하면 파라미터 수를 더욱 절약할 수 있습니다.
참고
https://ikkison.tistory.com/86
논문
https://arxiv.org/abs/1409.4842