[논문 리뷰 - Inception v2 & v3] Rethinking the Inception Architecture for Computer Vision (CVPR 2016)
본 논문은 CVPR 2016에 게재된 논문입니다. (저자 소속: Google)
논문 링크: https://arxiv.org/pdf/1512.00567
1. Overview
본 논문은 기존 모델의 문제점을 보완한 Incpetion-v2 와 Inception-v3를 제안합니다.
Incpetion-v2 라는 기본 구조를 제시한 후에, 논문에서 소개한 기법들을 모두 적용한 버전이 Inception-v3 입니다.
GoogLeNet(Inception-v1)의 문제점
- Inception 구조의 복잡성으로 인해 네트워크를 수정하는 것이 더 어려움
- 단순한 변형만으로도 계산 비용과 파라미터 수가 매우 증가함
[Backbone] GoogLeNet 모델 설명 Going Deeper with Convolutions (CVPR 2014)
본 논문은 CVPR 2014에 게재된 논문입니다. (저자 소속: Google)논문 링크: https://arxiv.org/abs/1409.4842 1. GoogLeNetGoogLeNet은 ILSVRC-2014에서 우승한 모델입니다.본 논문에서 Inception 모듈이란 것을 처음으로
happy-support.tistory.com
GoogLeNet에 대한 설명은 이전 포스팅에 잘 정리되어 있으니 참고 바랍니다. 😊
Inception-v2 & v3의 Contribution
- Factorization into smaller convolutions
- Spatial factorization into asymmetric convolutions
- 보조 분류기(auxiliary classifier) 수정
- 효율적인 그리드 크기 축소
Contribution을 중심으로 설명 시작하겠습니다.
2. Factorization into smaller convolutions
VGGNet에서 봤던 것처럼 5x5 또는 7x7 convolutions는 여러 개의 3x3 convolutions로 대체할 수 있습니다.
이를 통해 같은 입/출력 피처의 크기를 유지하면서 파라미터 개수를 대폭 감소시킬 수 있었습니다.
저자들은 VGGNet에 영감을 받아 크기가 큰 filter에 대해서는 여러 개의 3x3 convolutions로 나눠줍니다.
그래서 Factorization이란 말이 붙은 거지요.
참고로 활성화 함수 조합은 ReLU-ReLU가 가장 좋았다고 합니다.
그렇다면 더 작은 2x2 convolutions을 사용할 순 없었을까요?
음, 일단 2x2 filter를 사용하는 것은 성능이 좋지 않았다고 합니다.
3. Spatial factorization into asymmetric convolutions
그래서 3x3 convolution 대신 1x3 filter와 3x1 filter를 순차적으로 사용하는 방법론을 제안했습니다.
위의 예시처럼, 9개의 파라미터 대신 6개의 파라미터만 사용하게 됩니다.
4. Modification of auxiliary classifiers
기존의 모델에는 Auxiliary Classifier를 추가해서 gradient vanishing 문제를 완화하려고 했습니다.
저자들은 사실 Auxiliary Classifier가 성능 향상에 큰 영향을 미치지 않는다는 사실을 알아냈다고 합니다.
그래서 본 논문에서는 더 깊은 위치에 있는 classifier 한 개를 제거한 후에,
나머지 한 개의 classifier에는 배치 정규화(BN)를 추가함으로써 성능 향상을 이끌어냈다고 합니다.
5. Efficient grid size reduction
우리가 k개의 d × d 크기의 feature를 2k 개의 2/d × 2/d 로 변환하려고 한다고 가정합시다.
위와 같은 방식은 각각의 문제점을 가지고 있습니다.
- Representational Bottleneck: Pooling 레이어로 인해 정보가 압축되어 모델의 표현력이 제한될 수 있습니다.
- Computational Expensive: 크기가 커짐에 따라 계산 비용이 증가하게 됩니다.
저자들은 앞에서 언급한 문제점들을 발생시키지 않기 위한 대안으로 위와 같은 구조를 설계했습니다.
- 모든 레이어들의 stride를 2로 설정해서 resolution을 반씩 줄인다.
- Convolution과 pooling 레이어의 출력을 concatenation 시켜서 채널을 2배 증가시킨다.
오른쪽 사진은 레이어의 출력 크기 측면에서 이 구조를 시각적으로 표현한 것입니다.
6. Inception-v2
Incetpion-v2의 전체적인 구조는 이와 같습니다. (총 42개 레이어)
VGGNet은 300억 번, GoogLeNet은 1.5억 번의 연산이 필요한 것으로 알고 있습니다.
Inception-v2의 연산량은 GoogLeNet보다 약 2.5배 더 높습니다.
그럼에도 불구하고 VGGNet보다 여전히 적은 연산량을 가집니다.
또한, 마지막 Inception 모듈을 보시면 3x3 conovolution의 output이 1x3 그리고 3x1 filter로 나뉘어서 연산되는 것을 볼 수 있습니다.
이 부분은 더 큰 channel의 feature를 생성하기 위해 설계되었다고 합니다.
오른쪽 그림은 어떻게 두 filter가 같은 resolution의 feature를 생성하는 방식에 대한 이해를 돕기 위해 첨부했습니다.
각 filter 별로 서로 다른 padding을 추가한 것을 볼 수 있습니다.
7. Model regularization via label smoothing
기존 모델은 손실 함수로 Croee-Entropy Loss를 사용합니다.
저자들은 CE Loss에 다음과 같은 두 가지 문제점이 있다고 언급합니다.
- Overfitting 가능성
- 모델이 본인의 output에 너무 큰 확신을 가지게 될 수 있음
저자들은 두가지 문제점을 label smoothing 방식으로 완화하려 합니다.
말이 어렵지 그냥 one-hot 벡터의 값에 약간의 변형을 가하는 것이 끝입니다.
새로운 label은 왼쪽 수식으로 생성이 됩니다.
Cross Entropy H(u, p)는모델이 어떤 클래스에 대해서도 특별한 선호를 가지지 않는 상태.
즉, 모든 클래스에 대해 동일한 확률을 할당하기 위한 term으로 받아들이면 되겠습니다.
8. Experimental Results
Training Methodology
- Replica: 50
- Epoch: 100
- Batch size: 32
- Optimization: RMSProp (decay:0.9, 𝜖: 1.0)
- Learning rate: 0.045 (2번의 epoch 마다 0.94배씩 감소)
- Gradient clipping: maximum: 2.0
Single crop experimental results
여기서 빨간색 화살표는 위 모델에서 적용한 방법론(RMSProp, Label Smoothing 등)을 아래 모델에서도 누적해서 계속 사용한다는 의미입니다.
Inception-v2에 모든 방법론을 적용한 것이 바로 Inception-v3 입니다!
Multi-crop experimental results
Inception-v3도 성능이 꽤나 괜찮을 것을 확인할 수 있었습니다.
저의 글이 언제나 여러분께 도움이 되길 바라겠습니다. 👍
궁금한 내용 댓글 남겨주시면 빠르게 답변해 드리도록 하겠습니다. 😍