article thumbnail image
Published 2022. 4. 1. 17:02

📌 이 글은 권철민 님의 딥러닝 CNN 완벽가이드를 바탕으로 작성한 포스팅입니다.


 

목차

  1. GoogLeNet Architecture
  2. GoogLeNet의 특징
  3. Inception Module의 구조
  4. 1×1 Convolution 연산을 통한 Feature Map 채널(깊이) 압축
  5. 1×1 Convolution 연산을 이용한 Inception module 구성
  6. Inception Network의 구조

GoogLeNet Architecture

 

 

GoogLeNet은 Inception module이 연결되어 있는 구조이다.

1x1 convolution이 굉장히 많이 사용된다. 

영화 인셉션을 따와서 이름을 지었다고 한다.

그럼 왜 구글넷은 이런 구조로 만들었을까?


GoogLeNet 특징

  • 큰 사이즈의 Receptive Field가 제공하는 장점은 수용하면서, Weight 파라미터의 수를 줄일 수 있는 네트워크 구성
  • 적절한 커널의 필터 사이즈와 Pooling을 고민해서 찾아내기 보다는 여러가지 사이즈의 필터들(3x3 conv, 5x5 conv)을 한꺼번에 결합하는(concat) 방식 제공(논문에서는 이를 Inception module로 지칭한다)
  • GoogLeNet은 Inception module들을 연속적으로 이어서 구성
  • 여러 사이즈의 필터들이 서로 다른 공간 기반으로 Feature들을 추출하고 이를 결합하면서 보다 풍부한 Feature Extractor layer구성이 가능함.

 

서로 다른 사이즈의 필터를 통한 보다 다양한 Feature Extraction을 수행한다. 


Inception Module 의 구조

  • 여러 사이즈의 커널을 결합하지만 3×3, 5×5 사이즈 커널의 Convolution 연산 수행시, 많은 파라미터 수가 증가되고 연산량이 늘어난다.
  • 많은 파라미터 수는 오버피팅을 더 악화시킬 수 있다.
  • 3×3, 5×5 Convolution 연산을 수행하기 전에 먼저 1×1 Convolution을 적용하여 파라미터 수를 획기적으로 감소시킨다.
  • 1×1 Convolution은 선행 layer의 특징을 함축적으로 표현하면서 파라미터 수를 줄이는 차원 축소 역할을 수행한다.

1×1 Convolution 연산을 통한 Feature Map 채널(깊이) 압축

피쳐들의 중요 특성을 끄집어 내기에 1×1 은 너무 작지 않냐라는 생각이 든다.

그러나 1×1 연산은 원본 이미지에 적용하지는 않고, 어느 정도 크기가 감소된 피쳐맵에 적용한다.

그럼에도 불구하고 1×1을 왜할까? 사이즈 그대로 가는데?

 

1×1 Convolution은 비선형성을 좀더 강화 시켜준다.

1×1 Convolution 하고 ReLU를 거친다.

 

채널의 깊이가 깊을수록(필터의 채널 수가 많을수록) 파라미터의 수가 증가되면, 피쳐의 특징들이 추상화 되면서 좀더 풍부해진다라고 알고 있지만, 그렇게 하지 않고도 1×1 Convolution를 통해서 비록 필터의 수는 작지만 ReLU 연산을 하고, 그 후에 또 3×3 Convolution 연산을 적용을 하면서 비선형성을 증가시킴으로써, 채널의 깊이가 길어지는(필터의 채널 수를 늘리는) 만큼 이상의 어떤 풍부한 피쳐들의 특징을 가져올 수 있다는 것이다. 그러면 연산량을 줄일 수도 있고, 파라미터 수를 감소시킬 수도 있다.

 

 

(30×30×200)의 피쳐맵에 (5×5×200) Convolution을 64개 적용하여 (30×30×64)인 피쳐맵이 만들어졌다.

그러면 5×5×200×64 개의 파라미터가 구해진다.

 

그러지 말고 1×1 Convolution을 적용시켜보자.

(30×30×200)의 피쳐맵에 (1×1×200) Convolution을 16개 적용하면 (30×30×16)인 피쳐맵이 만들어진다.

이렇게 만들어진 피쳐맵에 (5×5×16) Convolution을 64개 적용해주면, 다시 압축시켰다가 풀어주는 Bottleneck Layer가 적용하여 비선형성이 강화됨과 동시에 연산량도 줄고 전체 파라미터 수가 줄어드는 것을 확인할 수 있다.


1×1 Convolution을 이용한 Inception module 구성

1×1 Convolution Filter를 이용하면 파라미터 수가 확연히 줄어드는 것을 확인할 수 있다.

압축적인 특성을 가져간 후 다시 풀면서 비선형성의 혜택을 얻을 수 있다.


Inception Network의 구조

각 마지막 레이어에서 나온 피쳐맵을 채널 레벨로 (concat)합친다. ex) 28×28×(96+64+128)

그리고 또 다음 Inception module에 집어 넣는다. 

그 안에서 Pooling을 할 때도 있고 안 할 때도 있다.

중간에 softmax로 결과를 예측하는 것이 있는데 마지막에 좀 섞어서 이미지 분류에 사용을 한다.

 

이 구조를 GoogLeNet 이라고 하지 않고 Inception Network 라고들 한다.

 

Inception Network는 총 9개의 Inception Block으로 구성된다.

  1. 2개의 Inception Module 후 3×3 Max Pooling
  2. 다시 5개의 Inception Module 후 3×3 Max Pooling
  3. 이후 2개의 Inception Module 후 마지막으로 Global Average Pooling

 

 

 

'🖼 Computer Vision > CNN' 카테고리의 다른 글

CNN - EfficientNet  (0) 2022.04.04
CNN - ResNet  (0) 2022.04.02
CNN - VGGNet  (0) 2022.04.01
CNN - AlexNet  (0) 2022.03.31
CNN - Image data scaling preprocessing  (0) 2022.03.27
복사했습니다!