본문 바로가기

AI시작

5-3 GoogLeNet (Inception v1)

GoogLeNet (Inception v1)— Winner of ILSVRC 2014 (Image Classification)

 

GoogLeNet 은 image classification competition 인 ILSVRC (ImageNet Large Scale Visual Recognition Competition) 2014년 winner 이며 ZFNet (2013 년 winner )과 AlexNet (2012 winner) [3], VGGNet (2014 년 winner )에 비해 오류율이 상대 적으로 낮습니다.

 

'GoogLeNet'이라는 이름에서 Google은 Google의 이름임을 이미 알고 있습니다. 또한 "GoogLeNet"에는 Yan LeCun 교수의 LeNet 에게 경의를 표하는 "LeNet"이라는 단어도 포함되어 있습니다. 
나중에 v2, v3 및 v4가 있으므로 Inception v1이라고도합니다.

 

이 네트워크 아키텍처는 VGGNet, ZFNet 및 AlexNet과는 상당히 다릅니다. 네트워크 중간에 1 × 1 컨볼 루션이 포함되어 있습니다. 그리고 global average pooling 은 fully connected layers 을 사용하는 대신 네트워크 끝에서 사용됩니다. 이 두 가지 기술은 다른 논문 "Network In Network"(NIN) 에서 발췌 한 것입니다. inception module 이라고하는 다른 기술은 동일한 입력에 대해 서로 다른 크기 / 유형의 회선을 갖고 모든 출력을 쌓는 것입니다.
그리고 저자는 또한 이름 "Inception"의 아이디어는, 아래의 유명한 인터넷 meme 에서 유래했다고 합니다.

: WE NEED TO GO DEEPER.

 

ImageNet은 약 22,000 개 범주의 1,500 만 개가 넘는 레이블이있는 고해상도 이미지의 데이터 세트입니다. ILSVRC는 1000 개 범주 각각에서 약 1000 개 이미지의 ImageNet 하위 세트를 사용합니다. 대략 120 만 개의 교육 이미지, 50,000 개의 유효성 검사 이미지 및 100,000 개의 테스트 이미지가 있습니다.

 

이제 아래 6가지 이야기를 해보겠습니다.

  • The 1×1 Convolution
  • Inception Module
  • Global Average Pooling
  • Overall Architecture
  • Auxiliary Classifiers for Training
  • Testing Details

1. The 1×1 Convolution

1×1 컨볼 루션은 NIN에 의해 소개되었습니다.

1x1 컨볼 루션은 ReLU와 함께 사용됩니다. 따라서 NIN의 저자는 데이터가 비선형 성 형태라고 믿기 때문에 원래 NIN은이를 사용하여 더 많은 비선형 성을 도입하여 네트워크의 표현력을 향상시킵니다. GoogLeNet에서 1x1 컨벌루션은 계산을 줄이기 위해 차원 축소 모듈로 사용됩니다. computation bottleneck 을 줄임으로써 깊이와 너비를 늘릴 수 있습니다.
이를 설명하기 위해 간단한 예를 선택합니다. 

 

아래와 같이 1×1 컨볼 루션을 사용하지 않고 5 × 5 컨볼 루션을 수행하면

Number of operations 는 무려 (14×14×48)×(5×5×480) = 112.9M

그런데  1×1 convolution 은

Number of operations for 1×1 = (14×14×16)×(1×1×480) = 1.5M
Number of operations for 5×5 = (14×14×48)×(5×5×16) = 3.8M
Total number of operations = 1.5M + 3.8M = 5.3M

 

이전의 112.9M 과 비교하면 놀라운 결과입니다.


사실 위의 예제는 인셉션 모듈의 calculation of 5×5 conv 예제이기도 합니다.

 

따라서, 1×1 컨볼 루션이없는 것과 비교하여 동작의 수를 크게 늘리지 않고도 개시 모듈을 구축 할 수 있습니다!
1×1 컨볼 루션은 모델 크기를 줄이는 데 도움이 될 수 있으며 overfitting problem 를 줄이는 데 도움이 될 수 있습니다 !!

 

2. Inception Module
The inception module (naive version, without 1×1 convolution) 은 다음과 같습니다. :

이전에는 AlexNet 및 VGGNet과 같은 변환 크기가 각 계층에 대해 고정되었습니다.
이제 이전 입력에 대해 1x1 전환, 3x3 전환, 5x5 전환 및 3x3 최대 풀링이 모두 수행되고 출력에서 다시 스택됩니다. 이미지가 들어 오면 다양한 크기의 컨벌루션과 최대 풀링이 시도됩니다. 그런 다음 다른 종류의 기능이 추출됩니다.
그 후, 다른 경로의 모든 기능 맵이 다음 모듈의 입력으로 함께 연결됩니다.
그러나 위와 같이 1x1 컨볼 루션이 없으면 작업 수가 얼마나 많은지를 상상할 수 있습니다.

따라서 demension 축소를 위해 1×1 컨벌루션이 시작 모듈에 삽입됩니다!

 

3. Global Average Pooling

이전에는 AlexNet과 같이 네트워크 끝에서 완전 연결된 (FC) 레이어가 사용되었습니다. 모든 입력은 각 출력에 연결됩니다.
중량 초과 (연결) = 7 × 7 × 1024 × 1024 = 51.3M
GoogLeNet에서 글로벌 평균 풀링은 위 그림과 같이 각 기능 맵의 평균을 7x7에서 1x1로 평균하여 거의 네트워크 끝에서 사용됩니다.
가중치 수 = 0
그리고 저자들은 FC 레이어에서 평균 풀링으로의 이동이 최고 정확도를 약 0.6 % 향상 시켰음을 발견했습니다.
이것은 NIN [6]의 아이디어로 과적 합이 덜 일어날 수 있습니다.

 

번역글 입니다.

원문 출처 : https://medium.com/coinmonks/paper-review-of-googlenet-inception-v1-winner-of-ilsvlc-2014-image-classification-c2b3565a64e7