CV - 3. GoogleNet

최창우·2022년 11월 10일
0
post-thumbnail

📌목차

1. GoogleNet 개요
2. 1 x 1 Convolutions
3. Inception 모듈
4. Global Average Pooling
5. Auxiliary Classifier
6. GoogleNet 구조

✔️ 기억할용어

1 x 1 Convolutions
Inception 모듈
Global Average Pooling
Auxiliary Classifier

📕 GoogleNet 개요

논문명 :구글에서 개발한 "Going Deeper with Convolutions"

GoogLeNet

  • 2014년 ILSVRC에서 VGGNet(VGG19)을 이기고 우승을 차지한 알고리즘
  • GoogLeNet은 19층의 VGG19보다 좀 더 깊은 22층으로 구성되어 있다.

주의깊게 살펴보아야할 네가지

  1. 1 x 1 Convolutions
  2. Inception 모듈
  3. Global Average Pooling
  4. Auxiliary Classifier

📕 1 x 1 Convolutions

1 x 1 컨볼루션의 의미

  • GoogLeNet에서 1 x 1 컨볼루션은 특성맵의 갯수를 줄이는 목적으로 사용된다.
    - 특성맵의 갯수란 Filter의 수를 의미
    - 특성맵의 갯수가 줄어들면 그만큼 연산량이 줄어듦

1x1 Convolution 사용하지 않을 경우

1x1 Convolution 사용하는 경우

  • 첫번째 레이어 계산 : 1 x 1 x 256 x 24 + 24 = 6168
  • 두번째 레이어 계산 : 5 x 5 x 24 x 48 + 48 = 28848

    입력과 출력의 사이즈는 동일하지만 학습파라미터의 수가 엄청 큰 차이를 보임.
  • 1x1 미사용 : 307,248
  • 1x1 사용 : 35,016

📕 Inception 모듈

같은 레이어 층에서 여러개의 커널 사이즈로 컨볼루션을 해주는 역할

  • 다양한 종류의 특성이 도출됨
  • 1x1 연산을 추가할 경우 연산량 감소 효과 ( GoogleNet에서 사용한 형태 (b) )

📕 Global Average Pooling

AlexNet, VGGNet 등에서는 fully connected (FC) 층들이 망의 후반부에 연결되어 있다. 그러나 GoogLeNet은 FC 방식 대신에 global average pooling이란 방식을 사용한다.

Global Average Pooling (GAP)

  • 특성맵들을 각각 평균낸것을 이어서 1차원 벡터를 만드는 역할
  • 가중치의 갯수를 상당히 많이 없애줌 : "FC layer를 안쓰니까!"
    - GAP에는 가중치가없다!

📕 Auxiliary Classifier (보조 분류기)

네트워크의 깊이가 깊어지면 깊어질수록 vanishing gradient 문제를 피하기 어려워진다. 이 문제를 극복하기 위해서 GoogLeNet에서는 네트워크 중간에 두 개의 보조 분류기(auxiliary classifier)를 달아주었다.

왜 이걸 달아서 성능이 좋은지 논리적인 설명을 찾지못했다. 근데 직관적으로 좋을거같긴해..

📕 GoogleNet 구조

📚 Reference

매우 도움되는 사이트 : https://bskyvision.com/entry/CNN-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EB%93%A4-GoogLeNetinception-v1%EC%9D%98-%EA%B5%AC%EC%A1%B0

profile
유능한 개발자가 되고 싶은 헬린이

0개의 댓글