[Paper Review] [CV] Rethinking the Inception Architecture for Computer Vision
1. Introduction
본 논문은 CNN을 효율적으로 확장하기 위해 GoogLeNet을 최적화한 아이디어를 소개한다.
Inception 아키텍처는 복잡하기 때문에 네트워크에 변화를 주기 어렵다.
그렇기 때문에 이를 새로운 용도에 맞게 효율성을 유지하며 수정하는 것은 어려울 것이다.
2. General Design Principles
이 챕터에서는 CNN의 다양한 구조 선택에 대해 실험의 결과를 바탕으로 설계 원칙을 설명한다.
1. 지나치게 정보를 압축하는 병목 구조 ( representational bottleneck) 는 피해야 한다.
병목 구조 ( representational bottleneck ) :CNN에서 사용되는 Pooling으로 feature map이 줄어들면서 정보량이 줄어드는 것
2. 고차원 표현은 네트워크 내에서 로컬적으로 처리하는게 더 빠르게 학습 되고 해석이 용이해진다.
3. 넓은 필터로 합성곱을 수행하기 전에 입력 표현의 차원을 줄여도 표현력이 크게 손실 되지 않는다. 이러한 신호들은 쉽게 압축이 되기 때문에 차원 축소는 오히려 속도를 촉진하는 역할을 한다.
4. 네트워크의 너비와 깊이의 균형을 맞춰야 한다. 너비와 깊이를 동시에 늘리는 것은 네트워크의 품질을 높이는데 기여할 수 있다.
3. Factorizing Convolutions with Large Filter Size
GoogLeNet의 성능 향상은 대부분 차원 축소를 하는 것이다. 이 챕터에서는 계산 효율을 높이기 위해 CNN을 분해하는 방법을 탐색한다.
1. 더 작은 CNN으로 분해하기
5x5나 7x7 같이 큰 필터를 사용하는 것은 비효율적이다. 물론 큰 필터들은 넓은 공간 범위의 의존성을 잡을 수 있기 때문에 표현력은 높지만 더 작은 CNN으로 대체할 수도 있다. 5x5 크기는 두 개의 3x3으로 대체할 수 있고 파라미터 수를 줄인다.
위 그림을 보면 3x3 CNN과 ReLU 함수를 사용하는 경우가 가장 좋은 성능을 보였다.
또한 Batch Normalization과 같이 사용하면 더 다양한 표현을 할 수 있다.
2. 비대칭 CNN으로 공간적 분해
3x3보다 더 작은 2x2로도 분해할 수 있을까?
실제로는 비대칭 CNN을 사용하는 것이 더 효과적이다. ex) n x 1 + 1 x n
3x3 CNN 은 3x1 + 1x3으로 대체할 수 있고 이 경우는 계산량을 33% 줄인다. 반면 2x2 CNN은 11%에 불과하다.
![]() |
![]() |
이론적으로 어떤 nxn CNN도 1xn + nx1 CNN으로 대체할 수 있고, 이런 비대칭 합성곱도 n이 커질 수록 계산량도 준다.
초기 층에서는 잘 작동하지는 않지만 중간 크기 feature map에서는 우수한 성능을 보인다.
4. Auxiliary Classifiers
GoogLeNet 논문에서는 보조 분류기 (auxiliary classifiers) 개념을 도입하여 매우 깊은 네트워크의 수렴 속도 향상시켰다.
사실 보조 분류기의 본 목적은 그래디언트를 하위 계층으로 전달하여 vanishing gradient 문제를 완화하는 것이다.
게다가 실험 결과를 보면 학습 초기 단계에서는 보조 분류기가 속도에 실질적인 영향을 주지 않았다.
보조 분류기가 있는 모델과 없는 모델의 학습 진행은 정확도가 높아지기 전에는 동일했지만, 학습 후반부로 갈 때는 보조 분류기가 있는 모델이 조금 더 높은 정확도에 도달했다.
또한 GoogLeNet 논문에선 다른 위치의 두 개의 보조 분류기를 삽입했는데 밑에 있는 보조 분류기를 제거해도 성능에는 영향을 끼치지 않았다. 이러한 결과는 보조 분류기가 특징 학습에 기여한다는 가설이 잘못되었을 가능성이 있음을 시사한다.
하지만 보조 분류기에 Batch Normalization 또는 Dropout 층을 적용했을 때 메인 분류기의 성능이 더 좋아진다는 점이 있다.
이 점이 보조 분류기가 정규화 역할을 한다고 볼 수 있다.
5. Efficient Grid Size Reduction
CNN의 Pooling 과정에서 정보량이 줄어드는 것을 막기 위해 필터 수를 먼저 확장하는 방식이 일반적이다.
예를 들어, 크기가 d이고 필터 수가 인 그리드가 있다고 가정하자.
이를 d/2×d/2 크기의 그리드로 줄이고 필터 수를 2k로 늘리고 싶다면
먼저 stride=1인 합성곱을 사용해 필터 수를 2k로 늘리고, 그 후 풀링을 적용한다.
하지만 이런 방식은 계산량이 매우 많아진다.
한 가지 대안으로는 Pooling과 CNN을 통합하여 수행한다. 이러한 방법은 표현력이 저하되는 문제도 있다.
그림을 보면서 실제 구조를 자세히 보도록 하자,
- 8x8 그리드에서는 희소 표현이 중요하므로 필터 크기를 늘려서 표현력을 강화한다.
- 17x17 그리드 위에 보조 분류기 위치. Batch Normalization까지 추가하면 정확도가 0.4% 향상된다.
- 왼쪽은 표현력을 줄이는 잘못된 구조이고 오른쪽은 계산량이 많지만 표현력을 유지한 구조이다.
- 제안된 Inception 모듈 구조이다. stride=2인 pooling과 CNN을 병렬로 사용해서 계산 효율성과 표현력을 모두 확보한다.
6. Inception-v2
- 이미지 크기 : 299x299x3 -> 35x35x192
- 35x35 그리드 : 기존 Inception 모듈 3개
- 17x17 그리드 : 그리드 축소 기법을 이용해 축소 후 factorized Inception 모듈 5개 적용
- 8x8 그리드 : 다시 그리드 축소 후 coarsest 단계에서 Inception 모듈 2개 적용
- 마지막 부분 : 8x8 pooling-> 1x1 linear logits -> 1x1 Sofrmax
설계 원칙만 잘 지키면 다양한 구조 변형에도 성능이 안정적일 것이다.
7. Model Regularization via Label Smoothing
여기서는 분류기 층을 정규화하는 새로운 방법을 제시한다.
이 방법은 학습 중 label-dropout이 일어났다고 가정하고 정규화를 수행한다.
cross entropy 함수는 다음과 같이 정의된다.
이 손실을 최소화하는 것이 정답 레이블에 대한 likelihood를 최대화하는 것과 같다.
단일 정답 라벨 y에 대해 p(y)=1이고 나머지는 0인 상황에서는 모델이 Zy > Zk를 학습한다.
이는 softmax가 정답 클래스에 모든 확률을 모아주는 결과를 일으킨다.
이러한 현상은 과적합과 학습 적응력이 저하될 수 있는 문제가 있다.
그래서 라벨 스무딩 정규화 (Label Smoothing Regularization, LSR)를 재안한다.
모델이 너무 확신하지 않도록 조절해주는 정규화 기법이다.
위와 같은 스무당된 분포를 사용한다.
정답 레이블을 기준으로 하고 일정 확률 epsilon 만큼은 임의의 클래스에서 선택된 것처럼 처리하는 것이다.
9. Performance on Lower Resolution Input
저해상도 이미지는 모델이 어떻게 성능을 낼 수 있는지가 제일 중요한 문제이다.
일반적으로 해상도가 높으면 성능이 향상되지만 계산량도 함께 증가한다.
그럼 게산량은 일정하게 유지하면서 입력 해상도만 변경하면 성능이 어떻게 될까?
실험을 해본 결과, 해상도가 높을 수록 정확도는 높지만 차이는 매우 작다.
그러므로 저해상도 이미지도 충분히 영향력이 있다는 것을 볼 수 있다.
R-CNN 같은 시스템에서는 저해상도 입력에 특화된 모델을 설계하는 것도 좋은 방법이다.
10. Experimental Results and Comparisons
![]() |
![]() |
![]() |
Table 3에서 마지막 줄의 모델을 Inception-v3라고 부르며 세 테이블 모두 Inception-v3가 최고의 성능을 기록했다.
11. Conclusion
본 논문에서는 CNN을 확장하기 위한 여러 설계 원칙을 제시하고 Inception의 아키텍처 맥락에서 실험적으로 검정했다.
이러한 가이드는 단순한 구조의 모델보다 계산 비용이 낮으면서 높은 성능의 모델을 설계할 수 있게 한다.