본문 바로가기

DeepLearning

Inception Network (GoogleNet)

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 의 구조를 파악하기 위한 자료이다.

 

ZInception network version 1 전체 구조
inception.py
0.01MB

'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