juuuding

[paper review] Rethinking the Inception Architecture for Computer Vision 본문

논문 리뷰/컴퓨터비전

[paper review] Rethinking the Inception Architecture for Computer Vision

jiuuu 2024. 8. 16. 15:12

※ 혼자 읽고 정리한 글이라 틀린 내용이 있을 수 있습니다.

 

[Rethinking the Inception Architecture for Computer Vision]

https://arxiv.org/abs/1512.00567

 

💡General Design Principles

 다음은 합성곱 신경망 아키텍처 설계에서 중요한 원칙들을 대규모 실험을 통해 도출한 내용이다. 

 

1. 네트워크 초반부에서 representational bottleneck을 피해라

 네트워크 초기에 정보의 극단적인 압축을 피하고, 정보가 손실되지 않도록 표현의 크기를 점진적으로 감소시키는 것이 중요하다. 정보의 내용은 표현의 차원만으로 평가될 수 없고, 차원은 대략적인 추정치를 제공할 뿐이지 상관 구조와 같은 중요한 요인을 나타내지는 못한다. 참고로 bottleneck이란 신경망 내에서 정보를 압축하여 지나가는 통로가 좁아지는 현상을 의미한다. 

 

2. 고차원 표현은 네트워크 안 로컬에서 처리하기 더 쉽다.  

 고차원 표현과 더 많은 활성화 수는 네트워크의 성능을 높이고 학습을 더 빠르게 하는데 중요한 요소가 될 수 있다. 

 

3. 공간적 집계를 수행하기 전 입력 표현의 차원을 줄여도 괜찮다. 

 공간적 집계(spatial aggregation)을 하기 전 차원을 줄이는 것이 표현력에 큰 손실을 초래하지 않으며, 오히려 학습 속도를 높일 수 있다. 이는 인접한 유닛 간 강한 상관관계 덕분에 차원 축소가 정보의 손실을 최소화하기 때문이다. 

 

4. 네트워크의 너비와 깊이의 균형을 맞추는 것이 성능에 좋다. 

 따라서 computational budget은 네트워크의 깊이, 너비에 균형 잡히도록 분배되어야 한다. 

 

 이러한 원리들이 있지만 이 원리를 사용하는 것이 간단하지 않다. 핵심은 애매모호한 상황에서 이러한 원리들을 신중하게 잘 사용하는 것이다.  

 

 

💡Factorizing Convolutions with Large Filter Size

 factorizing convolutions는 합성곱을 효율적인 방식으로 분해하여 차원을 축소하는 방법이다. 예를 들어 1x1 합성곱 층을 사용하여 차원을 줄인 후, 3x3 합성곱 층을 적용하여 효율적으로 계산이 가능하다. 

 Inception 네트워크는 fully convolutional이므로(모든 층이 합성곱으로 구성), 각 가중치가 한 활성화 당 하나의 곱에 대응된다. 따라서 계산 비용을 줄이면 매개변수의 수도 줄어든다. 이는 적절한 분해(factorizing convolutions)를 통해 더 잘 분리된 매개변수를 얻을 수 있고, 더 빠른 학습이 가능할 수 있다. 이를 통해 계산/메모리 효율성을 높이면 필터 뱅크 크기를 증가시켜 네트워크의 특징 추출 능력을 향상시키면서도, 단일 컴퓨터에서 학습할 수 있는 능력을 유지할 수 있다. 

 

1. Factorization into smaller convolutions

 5x5 와 같은 큰 필터는 계산 비용이 많이 든다. 예로 5x5와 3x3 필터의 계산 비용을 비교하면 25/9로 약 2.78배 더 많은 계산 비용이 필요하다. 따라서 큰 필터를 사용하는 대신 3x3과 같은 작은 필터를 사용한 여러 층으로 네트워크를 구성하는 방법을 제안한다. 이 방법은 계산 비용을 줄이면서도 필터의 표현력을 유지하여 네트워크의 효율성을 높인다.  

 여기서 계산의 선형 부분을 분해할 때 첫 번째 레이어에서 relu 대신 선형 활성화가 나은지에 대한 의문이 제기된다. 하지만 실험 결과에 따라 relu를 사용하는 것이 더 낫다는 것이 밝혀졌다. 즉, 5x5 필터를 한 번 거치는 대신 두 번의 3x3 필터를 거치는데 첫번째 3x3을 거친 후 relu 활성화 함수를 적용하고 두번째 3x3 필터를 거치라는 의미다. 

 

 

2. Spatial Factorization into Asymmetric Convolutions

 비대칭 합성곱을 사용하여 합성곱을 더 작게 factorize할 수 있다. 예를 들어 3x1 합성곱을 거친 후 1x3 합성곱을 적용하면 3x3 합성곱을 한 번 한 것과 같은 결과를 도출하지만 33%만큼 계산 효율을 높일 수 있다. 이는 3x3보다 더 작은 필터(e.g. 2x2 필터)를 두 번 사용한 것(11% 감소)보다 더 효율적이다. 

비대칭 사용 : 6/9 => 67% (33% 감소)
2x2 사용 : 8/9 =>  89% (11% 감소)

 


 이 방식은 일반적으로 nxn 필터를 nx1, 1xn 두 필터로 분해한다고 표현할 수 있는데, 이는 n이 커질수록 계산 비용이 더 극적으로 감소된다. 

 

 이 factorization은 너무 초기의 층에서는 잘 작동하지 않고, grid-size가 12x12 ~ 20x20 정도일 때 가장 잘 작동한다. 

 

 

💡Utility of Auxiliary Classifiers

 이전의 연구들에서 보조 분류기가 기울기 소실 문제를 해결하고, 저수준 특징을 발전시키는데 도움이 될 것이라고 하였다. 하지만 이 보조 분류기가 초기 학습에 그러한 빠른 수렴 효과를 내지 않는다는 사실을 발견하면서 보조 분류기가 초기 학습에서 큰 영향을 미치지 않는다는 것을 알게 되었다. 그 대신 보조 분류기가 정규화 역할을 하며 네트워크의 일반화 성능을 개선한다는 것을 발견하였다. 

 

 

💡Efficient Grid Size Reduction

 이전에는 representational bottleneck을 피하기 위해 풀링을 적용하기 전 네트워크 필터의 활성화 차원을 확장시켰다. 하지만 이렇게 했을 때 합성곱에 의해 계산 비용이 많이 든다는 것을 확인하였다. 이에 대한 대안으로 두 개의 병렬 스트라이드 2 블록(풀링, 컨볼루션)을 함께 사용하면 representational bottleneck 현상도 피하고 계산 비용도 줄일 수 있다. 

 

 

 

💡 Inception-v2

 

 위의 표는 네트워크의 전체적인 구조다. 이 네트워크는 기존의 7x7 합성곱을 세개의 3x3 합성곱으로 분해하여 계산 효율성을 높였다. 해당 네트워크는 인셉션 모듈, 그리드 축소 등을 사용하여 42개의 층으로 매우 깊지만 아주 효율적이다. 

 

figure 5
figure 6
figure 7

 

💡Model Regularization via Label Smoothing

  크로스 엔트로피 손실함수는 신경망의 출력인 logits(예측 값의 비정규화된 로그 확률) 값에서 각 라벨 k에 대한 확률을 계싼한다. 이렇게 실제 라벨 분포와 예측 확률 분포 사이 크로스 엔트로피 손실을 최소화하여 모델을 훈련하는데, 이때 실제 라벨 y만 1이고 나머지 라벨이 0인 경우 logit 값이 매우 커지도록 모델이 학습된다. 이 과정에서 모델은 과적합이 발생하고, 지나치게 큰 logit은 그래디언트가 작은 값을 갖게 하여 새로운 데이터를 학습하기 어렵게 만든다. 

 이러한 문제를 해결하기 위해 "label smoothing regularization"이라는 LSR 기법을 제안한다. 이 방식은 실제 라벨 분포를 조금 부드럽게 만들어 과적합을 피하고 지나치게 큰 logit 값을 가지지 않도록 한다. 구체적인 수식을 적어보자면 원래 크롯, 엔트로피에서의 실제 라벨 분포는 q(k|x) = δk,y이다. 이 값을 LSR에서는 q'(k|x) = (1 - ε)δk,y + εu(k)로 대체하는 것이다. 참고로 여기서 ε는 스무딩 파라미터다. 

(1 - ε)δk 이 수식으로 실제 라벨 y에 대한 확률을 조금 줄이고, εu(k) 로 다른 라벨에 대한 확률을 조금 추가한다. u(k)는 사전 분포로서 라벨이 어떤 값일지에 대한 초기 가정이다. 예를 들어 u(k)가 균등 분포라면 이는 모든 라벨에 대해 동일한 확률(1/k)을 갖는 것을 의미한다. 즉, 모델이 특정 라벨에 대해 편향된 정보를 갖지 않도록 초기 설정된 상태다. 
예를 들어 K=3인 경우 (예: "cat", "dog", "car" 세 가지 라벨이 있는 경우) ε = 0.1, u(k) = 1/3 (즉, 각 라벨에 대해 균일 분포) 실제 라벨이 "cat"일 때, 스무딩 후 분포는 다음과 같다.
"cat"에 대한 확률: (1 - 0.1) * 1 + 0.1 * 1/3 = 0.9 + 0.033 = 0.933
"dog"와 "car"에 대한 확률: 0.1 * 1/3 = 0.033
이 예에서, "cat"에 대한 확률은 0.933으로 약간 줄어들고, "dog"와 "car"에 대한 확률이 각각 0.033으로 추가된다. 

 

 이러한 라벨 스무딩을 사용하면 특정 라벨의 확률이 1에 너무 가까워지는 것을 방지하여 그라디언트가 너무 작은 값을 갖지 않도록 한다. 이는 모델의 예측 분포가 균등 분포(사전 분포) u(k)와 너무 멀어지지 않도록 패널티를 부여하는 방식이다.

 이것은 KL 발산으로 해석할 수도 있다. KL 발산이란 두 확률 분포 간의 차이를 측정하는데 사용되는 지표이며, 라벨 스무딩에서 모델의 예측 분포가 사전 분포와 얼마나 다른지를 평가하는데 사용된다. 

 

 

 💡Training Methodology

 - 분산 학습 환경에서 RMSprop (0.9, ε = 1.0)을 사용

 - 50개의 복제본 사용. 각 복제본은 NVidia Kepler GPU에서 실행

 - 배치 크기는 32. 100 에폭

 - 초기 학습률은 0.045. 2 에폭마다 0.94의 exponential decay 사용하여 점차 감소.

 - gradient clipping의 임계 값을 2.0으로 설정하여 기울기 폭발 문제 방지

 - 파라미터의 running average를 사용하여 모델 평가 수행.

 

 

💡Performance on Lower Resolution Input

 객체를 탐지하는 multibox에서 이미지 안의 객체가 상대적으로 작으면 패치의 해상도가 아주 낮다. 이것을 효과적으로 인식하기 위해서는 낮은 해상도의 입력 데이터를 잘 처리해야한다. 

 일반적으로 높은 해상도의 수용 영역을 사용하면 모델 인식 성능이 향상되는데, 공정한 비교를 위해 계산 비용을 일정하게 유지하면서 해상도 증가가 얼마나 모델 인식 성능에 도움이 되는지를 평가한다. 계산 비용을 일정하게 유지하기 위해 낮은 해상도의 입력에 대해 첫번째 두 층의 스트라이드를 줄이거나, 첫 번째 풀링층을 제거하는 방식으로 실험을 진행하였다. 실험 결과 낮은 해상도 네트워크는 훈련 시간이 더 오래 걸리지만 최종 결과의 품질은 높은 해상도 네트워크와 비슷한 수준으로 나타났다.

성능 비슷
해상도가 낮을수록 모델이 단순해지지 않도록 함 (계산 비용 유지)

 

 따라서 낮은 해상도의 작은 객체를 처리하기 위해서는 높은 비용을 가진 저해상도 전용 네트워크를 사용하는 것이 좋다는 결론을 내릴 수 있다. 

처음 읽을 때 이해가 잘 안갔는데 내가 이해한 내용을 정리해보자면...
낮은 해상도의 이미지를 인식하는 것은 정보가 적은 이미지를 본다는 것인데,  스트라이드나 풀링은 이미지의 해상도를 더욱 낮추는 역할을 하여 이미지의 세부 정보를 손실시키는 것이니까 이것들의 사용을 줄여 모델의 초기 층에서 더 많은 정보를 유지한다. 이렇게 함으로써 모델이 낮은 해상도에서도 복잡한 패턴을 학습할 수 있게 한다.
 즉 스트라이드와 풀링은 입력 데이터의 크기를 줄이고 이에 따라 모델의 계산량과 복잡성을 줄이는 역할을 하는데, 이러한 작업을 없애 저해상도 이미지에서도 모델의 성능을 유지하는 것이다.
"더 싼 계산 비용으로 더 어려운 문제를 풀려고 한다."는 말이 이해가 안됐는데, 저해상도의 이미지는 안그래도 처리할 계산량이 적어지는데 여기에 풀링/스트라이드를 적용하면 훨씬 더 계산량이 적어지니 "더 싼 계산 비용으로 저해상도 문제(더 어려운 문제)를 풀려고 한다."는 의미 같다. 

 

 

💡Experimental Results and Comparisons

- label smoothing: 모델이 지나친 확신을 가지지 않도록 조정하여, 모델의 일반화 성능을 향상

- factorized 7 x 7: 첫 번째 7 x 7 합성곱 층을 여러 개의 3 x 3 합성곱 층으로 분해 

 - BN-auxiliary: 보조 분류기의 fc-layer에도 배치 정규화를 적용. 보통은 배치 정규화를 합성곱에만 적용하는데 여기서는 fc-layer에도 적용하여 안정성 높임

 - Inception-v3: v2에 기반하여 추가적인 변경 사항 포함된 버전. multi-crop, 앙상블 설정하여 성능 평가됨. 

 - multi-crop: 이미지의 여러 부분을 잘라내어 각각 예측한 결과를 결합

 - 앙상블: 여러 모델의 예측 결합

 - ILSVRC-2012 데이터셋에서 실험 수행( blacklisted(평가에서 제외된) 샘플을 제외 )

 

 

 

💡Conclusion

  • 여러 설계 원칙을 통해 Inception 아키텍처 확장하여, 상대적으로 적은 계산 비용으로 높은 성능 달성
  • Inception-v3 아키텍처는 ILSVRC 2012 분류 대회에서 21.2%의 top-1 오류율과 5.6%의 top-5 오류율을 기록했습니다. 이는 단일 이미지 크롭(single crop) 평가에서 가장 뛰어난 성능
  • 작은 수용 영역에서도 높은 품질의 결과를 얻을 수 있음. Inception 아키텍처가 작은 해상도의 입력을 처리하면서도 고성능을 유지할 수 있음을 의미함. 
  • 합성곱 분해(Factorized Convolutions)와 공격적인 차원 축소(Dimension Reduction) 기법을 통해 계산 비용이 낮으면서도 고품질의 네트워크를 만들 수 있음을 보여줌
  • 적은 파라미터 수와 추가적인 정규화 기법(배치 정규화된 보조 분류기 및 라벨 스무딩)을 결합함으로써, 상대적으로 작은 훈련 세트에서도 높은 품질의 네트워크를 훈련할 수 있음