14년도의 ILSVRC 에서 지난번 포스팅에서 다루었던 VGG19 이상의 성능으로 우승을 차지한 모델이다.
계속해서 발전하여 Inception v4 까지 나왔지만, 이 포스팅에선 2014년으로 돌아가도록 하겠다. (Inception v1)
원 논문은 아래의 링크에 있다.
https://arxiv.org/abs/1409.4842
기초적인 부분)
1 x 1 convolution layer 사용하는 이유 : width 와 height 를 그대로 유지하되 depth(#channel) 는 줄이기 위함이다.
Inception Network 를 보기 전 이 Network 에서 사용되는 두 블럭을 한번 확인해야한다.
(a) Inception Module (Inception Block)
naive version : Inception module --> 계속해서 수행하게 되면 채널의 수 (depth) 가 너무 깊어지며, 이로써 연산량이 급격하게 늘어날 수 있다.
(b) Inception module (Inception Block) with dimension reductions
나의 개인적인 생각으로는 dimension reductions 보다는 #channel reductions도 괜찮지 않을까한다.
앞선 말과 같이 1x1 conv layer 를 거치면서 depth 를 줄이게되며 그로인해 입력이미지 바로 다음에 위치한 노란색 1x1 conv layer 두개를 제외하면 대략적으로 앞선 기존의 버전과 수행하는 동작이 유사하지만 이 두 개 (윗 줄의 하나를 추가)가 있기에 전체적인 channel 개수 를 줄여서 연산량을 줄일 수 있는 계기가 된 것.
Check !!
1. 1 x 1 conv layer : W, H 는 고정, C 는 유동적
2. f x f conv layer : W, H 는 유동적, C 또한 유동적
3. Pooling layer : W, H 는 유동적
2. Stem Block : Convolutional layer (7x7, stride=2) --> MaxPooLing (3x3, stride=2) --> Conv layer (3x3, stride=1) depth=2 --> MaxPooLing (3x3, stride=2) [일반적인 Convolutional 처리 과정과 유사]
전체적인 Inception v1 의 구조를 파악하기 위한 자료이다.
'DeepLearning' 카테고리의 다른 글
DenseNet (0) | 2021.12.26 |
---|---|
ResNet (0) | 2021.12.24 |
VGGNet (0) | 2021.12.23 |
AlexNet (0) | 2021.12.23 |
Why Convolutions ? (0) | 2021.12.23 |