본문 바로가기
딥러닝(Deep Learning)/논문 paper 리뷰

[X:AI] Inception-v4 논문 이해하기

by rahites 2023. 7. 1.

Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning. 2016. 

 

Inception-v4 논문에서는 기존 Inception-v3 모델보다 더 단순한 구조의 Inception 모델을 제안한다. 기존 Inception 모델은 성능은 높지만 구조가 복잡해 범용적으로 사용하기 어려웠다. Inception보다 상대적으로 구조가 단순한 VGG 모델을 많이 사용하였는데, 이에 본 논문에서는 이전 버전보다 단순하고 빠른 학습이 가능한 Inception-v4 모델을 소개한다.

 

이전 Inception-v2, v3 모델에 대한 자세한 내용은 아래 리뷰에서 확인할 수 있다.

https://rahites.tistory.com/144

 

[X:AI] Inception-v2, v3논문 이해하기

INCEPTION Inception은 ILSVRC 2014(ImageNet Large-Scale Visual Recognition Challenge)에서 1등을 차지한 GoogLeNet에서 사용된 핵심 구조의 이름으로『Going deeper with convolutions』논문을 통해 그 특징을 파악할 수 있다.

rahites.tistory.com


0. Abstract

최근 Image Recognition Task에서 CNN은 큰 발전을 하였고 그 중 Residual Connection과 전통적인 아키텍처와의 결합은 SOTA 성능을 내기도 하였다. 이러한 결과를 토대로 Inception 구조와 Residual Connection을 결합하면 더 좋은 결과가 나지 않을까? 라는 의문에서 연구를 시작하였다.

 

본 논문에서는 Residual Connection을 쓴 모델과 쓰지 않은 모델을 모두 소개한다. 이 모델들은 ILSVRC2012 Classification Task에서 좋은 성능을 내었으며,  앙상블을 통해 최종 Classification 성능 향상시켰다고 한다. 또한 적절한 Activation Scaling을 설정하는 것이 안정적인 학습을 가능케 한다는 것을 발견했다. 

 

1. Introduction

본 논문에서는 Residual ConnectionInception 두 가지 최신 연구를 결합하였다. Inception 구조는 매우 깊기 때문에 Inception의 Filter Concatenation Stage를 Residual Connection 구조로 대체하였다. 이를 통해 Computational Efficiency를 얻으면서 Residual Approach의 장점을 가져갈 수 있었다. 

 

또한 Inception을 더 깊고 효율적으로 만들 수 있을지 연구하여 Inception-v3보다 더 단순하고 균일화된 Inception-v4 모델을 고안했다. 이전까지 사용하던 DistBelief Framework에서는 모델을 분할해야 하는 등의 기술적 제약이 존재하였는데, Inception-v4 부터는 TensorFlow로 학습하여 구조를 크게 단순화 할 수 있었다. 

 

본 논문에서는 기존의 Inception-v3를 버전업한 Inception-v4, Inception과 ResNet을 결합한 Inception-ResNet-v1, v2를 제안한다.

 

2. Related Work

왼쪽 그림은 기본적인 형태의 Residual Connection이고 오른쪽 그림은 1x1 Convolution을 사용하여 연산량을 줄인 형태의 Residual Connection이다.

 

본 논문에서는 Residual Connection을 사용하지 않고도 Deep Network를 잘 학습하였지만, Residual Connection을 사용할 때 학습 속도가 크게 빨라지기 때문에 Inception 구조와도 결합해 보았다. 

 

3. Architectural Choices

Architecture [Inception-v4 / Inception-ResNet-v1, Inception-ResNet-v2]

왼쪽 그림은 Inception-v4의 구조, 오른쪽 그림은 Inception-ResNet-v1, v2의 구조이다.

 

3.1. Pure Inception Blocks

이전 Inception 모델은 메모리 제약 문제로 인해 전체 모델의 Replica를 여러 하위 네트워크로 분할하는 방식으로 학습하였지만, TensorFlow의 도입으로 최신 모델은 Replica로 분할하지 않고 학습할 수 있었다. 

 

이전까지 Inception 아키텍저를 변경하는 것에 대해 매우 보수적이었지만, 네트워크를 단순화하기 위해 Inception-v4에서는 불팔요한 부분을 과감히 제거하였다. 한 Inception Block에서는 한가지 크기의 Grid Size를 사용하도록 하였다.

 

이미지에서 V로 표시된 부분은 Valid Padding이 적용되었고 V가 없는 부분은 Same Padding이 적용되었다. 따라서 V 표시된 부분은 Output Activation Map의 Grid Size가 감소하고 V 표시가 없는 부분은 Input과 Output의 Grid Size가 동일하다. 

 

3.2. Residual Inception Blocks

Residual 버전의 Inception 네트워크에서는 Inception-v4보다 연산량이 적은 Inception Block을 사용했다. 각 Inception Block에는 Activation이 없는 1x1 Convolution Layer가 Filter-expansion Layer로 뒤따른다. 이는 Inception Block에서 감소한 차원을 다시 확장해주기 위함이다.

 

본 논문에서는 Inception-ResNet-v1과 Inception-ResNet-v2를 소개한다. Inception-ResNet-v1의 경우에는 Inception-v3의 계산 비용과 비슷하고 Inception-ResNet-v2는 Inception-v4의 계산 비용과 비슷하다. 

 

Inception-ResNet은 기존 Layer에만 Batch-Norm을 사용하고 Layer가 합쳐지는 부분에는 사용하지 않았다. Batch-Norm을 모든 Layer에서 사용하는 것이 좋지만 단일 GPU에서 학습을 하기 위함이었다고 한다.

 

Inception-ResNet-v1에서는 독자적인 STEM을 사용하고 Inception-ResNet-v2는 Inception-v4와 같은 STEM을 사용한다. 

 

STEM [Inception-v4, Inception-ResNet-v2 / Inception-ResNet-v1]

왼쪽 그림은 Inception-v4와 Inception-ResNet-v2 모델 앞단에 들어가는 STEM 구조이다. Inception-v3 모델에도 존재하던 앞단의 Convolution 부분을 더 성능이 좋도록 수정하였다. 오른쪽 그림은 Inception-ResNet-v1의 STEM 구조이다.

 

왼쪽 그림을 보면 Grid Size를 줄이는 부분에서 병렬적으로 처리해 준 것을 확인할 수 있다.

 

Inception-A [Inception-v4 / Inception-ResNet-v1 / Inception-ResNet-v2] 

Inception 계층에서는 Grid Size의 변화가 없도록 설계하였다. Summation되는 부분인 1x1 Conv의 채널 수가 다르고 활성화 함수를 사용하지 않은 것을 확인할 수 있다. (Linear라고 쓰여있는 부분)

 

Inception-B [Inception-v4 / Inception-ResNet-v1 / Inception-ResNet-v2] 

 

Inception-C [Inception-v4 / Inception-ResNet-v1 / Inception-ResNet-v2] 

 

Reduction-A [Inception-v4, Inception-ResNet-v1, Inception-ResNet-v2] 

Reduction 계층에서는 Grid Size가 절반으로 줄어든다. Inception-v4, Inception-ResNet-v1, Inception-ResNet-v2는 모두 동일한 Reduction-A 구조를 사용한다. 

 

Reduction-B [Inception-v4 / Inception-ResNet-v1 / Inception-ResNet-v2] 

 

3.3. Scaling of the Residuals

Filter의 수가 1000개를 초과할 때 Residual Variants가 불안정해졌고 학습 도중에 네트워크가 죽어버리는 문제가 발생했다. 그 이유는 수만번의 Iteration이 지나면 Average Pooling 이전에 0 값만을 반환하기 때문으로, 본 논문에서는 활성화 함수를 적용하기 이전에 잔차를 Scaling down하여 학습 과정을 완화하였다. 

위 그림과 같이 2단계로 학습이 진행되며 0.1 ~ 0.3 사이의 Scaling Factor를 사용하였다. 

 

4. Traning Methodology

TensorFlow FrameWork를 사용하였고 Stochastic Gradient 방법으로 학습을 진행하였다. 자세한 하이퍼파라미터는 논문을 참조

 

5. Experimental Results

학습 곡선이 비슷한 Inception-v3과 Inception-ResNet-v1, Inception-v4와 Inception-ResNet-v2를 비교하였다.

Inception-v4와 Inception-ResNet-v2의 높은 성능을 확인할 수 있다. 그래프와 테이블 결과를 통해 Inception-ResNet-v2의 성능이 미소하게나마 Inception-v4보다 좋은 것을 알 수 있다. 

위 테이블은 Single Model-Multiple Crop, Single Model-144 Crop, Ensemble Model-144 Crop의 실험 결과이다.

 

6. Conclusions

본 논문에서는 3가지 아키텍처 네트워크를 제안한다.

  • Inception-ResNet-v1
  • Inception-ResNet-v2
  • Inception-v4

Residual Connection을 사용한 Hybrid Inception version 2가지와 사용하지 않고 비슷한 성능을 낸 Inception-v4를 소개하며 자신들의 연구인 Inception에 대한 Pride와 최신 연구인 ResNet과의 결합을 훌륭히 이루어 냈다.

 

<참고자료>

https://deep-learning-study.tistory.com/525

 

[논문 읽기] Inception-v4(2016) 리뷰, Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

이번에 소개할 논문은 2017년에 나온 Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 입니다. 저자는 Szegedy 입니다. Inception-v1(GoogLeNet), Inception-v2, v3은 이미지 분류 대회에서 항상 좋

deep-learning-study.tistory.com

 


세 줄 요약

1. 복잡한 구조의 Inception-v3를 개선한 새로운 버전의 Inception-v4를 제안
2. Inception-v4 뿐만 아니라 최근 성능이 좋다고 알려진 ResNet의 Residual Connection을 결합한 Inception-ResNet 모델을 제안
3. TensorFlow, Scaling 등의 기법을 같이 활용해 Pure Inception과 Inception-ResNet에서 모두 좋은 성능을 냄

 

댓글