딥러닝의 CNN모델의 구조 중 VGG에 대해 알아보겠습니다. 오늘 내용의 논문은 15년 ICRL학술대회에 게재된 Karen Simonyan ∗ & Andrew Zisserman의 VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION라는 논문을 참고하였습니다. 해당 논문은 네트워크 이가 대규모 이미지 인식에 정확도에 미치는 영향을 조사하였습니다. 이를 위해 매우 작은(3X3)의 convolution필터를 사용해 깊이가 증가하는 네트워크를 평가하며 이를 16-19개의 가중치의 레이어로 넣어 정확도가 개선되었음을 확인하였다. 이를 통해서 해당 논문에서는 두가지 최고 성능의 convnet 모델을 공개하였다.
1. INTRODUCTION
convnets는 대규모 이미지, 비디오 인식 분야에서 큰 성공을 거두었으며, 이에는 대규모 공용 이미지 저장소와 고성능 컴퓨팅 시스템으로 인해 가능해졌습니다.
ConvNet이 더 나은 정확도를 달성하기 위해 많은 시도가 이루어졌으며, 첫 번째 conv 레이어의 더 작은 수용 창 크기와 더 작은 보폭을 활용했습니다. 또한 변수를 수정하고 모든 레이어에서 매우 작은( 3 × 3) 컨볼루션 필터를 사용하기 때문에 가능한 더 많은 컨볼루션 레이어를 추가하여 네트워크의 깊이를 꾸준히 늘립니다.
그 결과, ILSVRC 분류 및 위치 파악 작업에서 최첨단 정확도를 달성할 뿐만 아니라 다른 이미지 인식 데이터 세트에도 적용할 수 있는 훨씬 더 정확한 ConvNet 아키텍처가 개발되었으며, 비교적 간단한 파이프라인의 일부로 사용해도 뛰어난 성능을 얻을 수 있습니다.
2. CONVNET CONFIGURATIONS
이 섹션에서는 먼저 ConvNet 구성의 일반적인 레이아웃을 설명한 다음(Sect. 2.1), 평가에 사용된 구체적인 구성을 자세히 설명합니다(Sect. 2.2). 그런 다음 설계 선택 사항을 이전 연구와 비교하여 논의합니다(Sect. 2.3).
< 2.1 ARCHITECTURE>


<2. 2 CONFIGURATIONS>

이 논문에서 평가된 ConvNet 구성은 위의 표에 개요가 되어 있으며, 각 열마다 A~E까지의 네트워크들의 구성이 보여집니다. 모든 구성은 섹션 2.1에 제시된 일반적인 디자인을 따르며, 깊이만 다릅니다. 네트워크 A에서는 11개의 가중치 레이어 (8개의 conv. 레이어 및 3개의 FC 레이어)부터 네트워크 E에서는 19개의 가중치 레이어 (16개의 conv. 레이어 및 3개의 FC 레이어)까지 다양합니다. conv. 레이어의 너비 (채널 수)는 상당히 작으며, 첫 번째 레이어에서는 64개부터 시작하여 각 max-pooling 레이어 후에 2배씩 증가하여 512에 이를 때까지입니다.

<2.3 DISCUSSION>
이 논문에서 사용된 ConvNet 구성은 이전 12, 13년도의 성능이 높은 구성과 다릅니다. 이전 conv 레이어에서는 11x11, 7x7과 같이 상대적으로 큰 수용필드를 사용한 반면, 이 논문의 구성은 전체 네트워크에서 매우 작은 3 × 3 수용 필드를 사용하며 각 픽셀에서 입력과 함께 1의 보폭으로 컨볼루션됩니다. 중간에 공간 풀링이 없는 두 개의 3×3 conv 레이어 스택은 실제로 5×5의 효과적인 수용 필드를 갖게 되며, 세 개의 이러한 레이어는 7×7 효과적인 수용 필드를 갖습니다. 3개의 3x3 conv레이어 스택의 효과로는 의사결정기능의 차별화와 매개변수 수의 감소가 있습니다.
3. CLASSIFICATION FRAMEWORK
이전 섹션에서는 우리의 네트워크 구성의 세부사항을 제시했습니다. 이번 섹션에서는 분류 ConvNet의 훈련과 평가의 세부사항을 설명합니다.
<3.1 TRAINING>
훈련은 미니 배치 경사 하강법 과 모멘텀을 사용한 다항 로지스틱 회귀 목적을 최적화하여 수행합니다. 배치 크기는 256이며, 모멘텀은 0.9로 입니다. L2 패널티 배율은 5 × 10^−4로 가중치 감쇠로 정규화 및 처음 두 개의 완전 연결 레이어에 대한 0.5 비율의 드롭아웃 정규화를 했습니다. 초기 학습률은 10^−2로 설정되었으며, 검증 세트 정확도가 개선되지 않을 때마다 10의 배수로 감소되었습니다. 총 3번 학습률이 감소되었으며, 학습은 370K 반복 (74 epoch) 후에 중지되었습니다. 이전 모델에 비해 네트워크의 매개변수 수가 더 많고 깊이가 더 깊지만, 네트워크는 더 작은 conv. 필터 크기와 더 큰 깊이에 의한 암묵적 정규화 및 일부 레이어의 사전 초기화로 인해 수렴하는 데 더 적은 epoch이 필요했다고 추측합니다.
네트워크 가중치의 초기화는 중요합니다. 나쁜 초기화는 깊은 네트워크에서 기울기의 불안정성으로 인해 학습이 중단될 수 있으며 이를 피하기 위해, 무작위 초기화로 훈련할 수 있는 충분히 얕은 위의 표의 A 구성 으로부터 시작했습니다.
그런 다음 더 깊은 아키텍처를 훈련할 때 첫 번째 네 개의 컨볼루션 레이어와 마지막 세 개의 완전 연결 레이어를 네트워크 A의 레이어로 초기화했습니다 (중간 레이어는 무작위로 초기화되었습니다). 사전 초기화된 레이어의 학습률을 감소시키지 않았으며, 학습 중에 변경되도록 허용했습니다. 무작위 초기화의 경우 (적용 가능한 경우), 가중치는 평균이 0이고 분산이 10^−2인 정규 분포에서 샘플링되었습니다. 편향은 0으로 초기화되었습니다. 제출 후에 우는 Glorot & Bengio (2010)의 무작위 초기화 절차를 사용하여 사전 훈련 없이 가중치를 초기화할 수 있다는 것을 발견했습니다.
고정 크기인 224×224 ConvNet 입력 이미지를 얻기 위해, 이들은 크기 조정된 훈련 이미지에서 무작위로 잘립니다. (SGD 반복마다 이미지당 한 번의 자르기). 훈련 세트를 더 증가시키기 위해, 자르기는 무작위 수평 뒤집기와 무작위 RGB 색상 이동(Krizhevsky et al., 2012)을 거쳤습니다. 훈련 이미지의 크기 조정은 아래에서 설명됩니다.
훈련이미지. 이미지 크기 조정된 훈련 이미지의 가장 작은 측면을 S로 하여, ConvNet 입력이 잘리는 것으로 가정합니다(S를 훈련 스케일이라고도 합니다). 자르기 크기는 224 × 224로 고정되어 있지만, 원칙적으로 S는 224 이상의 값일 수 있습니다. S = 224의 경우 자르기는 전체 이미지 통계를 캡처하며, 훈련 이미지의 가장 작은 측면을 완전히 포함합니다. S ≫ 224인 경우 자르기는 이미지의 작은 부분에 해당하며, 작은 객체나 객체 부분을 포함할 수 있습니다.
훈련 스케일 S를 설정하는 두 가지 접근 방법을 고려합니다. 첫 번째는 S를 고정하는 것으로, 이는 단일 스케일 훈련에 해당합니다 (샘플된 자르기 내의 이미지 콘텐츠는 여전히 다중 스케일 이미지 통계를 나타낼 수 있음에 유의하십시오). 실험에서는 두 개의 고정 스케일에서 훈련된 모델을 평가했습니다: S = 256 (이전 연구에서 널리 사용되었습니다(Krizhevsky et al., 2012; Zeiler & Fergus, 2013; Sermanet et al., 2014)) 및 S = 384. ConvNet 구성이 주어지면, 우선 S = 256을 사용하여 네트워크를 훈련했습니다. S = 384 네트워크의 훈련을 가속화하기 위해, S = 256으로 사전 훈련된 가중치로 초기화되었으며, 초기 학습률을 10^−3로 더 작게 설정했습니다.
두 번째 S 설정 방법은 다중 스케일 훈련으로, 각 훈련 이미지를 개별적으로 다시 크기 조정하여 일정 범위 [Smin, Smax]에서 S를 무작위로 샘플링합니다(Smin = 256 및 Smax = 512를 사용했습니다). 이미지의 객체 크기가 다를 수 있으므로 이를 훈련 중에 고려하는 것이 유용합니다. 이는 단일 모델이 다양한 스케일에서 객체를 인식하도록 훈련 세트를 스케일 변경으로 보강하는 것으로 볼 수도 있습니다. 속도 문제로 인해 우리는 고정 S = 384로 사전 훈련된 단일 스케일 모델의 모든 레이어를 세밀 조정하여 다중 스케일 모델을 훈련했습니다.
<3-2 TESTING>
테스트 시에 훈련된 ConvNet과 입력 이미지가 주어지면, 다음과 같이 분류됩니다. 먼저, 입력 이미지는 사전에 정의된 가장 작은 이미지 측면으로 이동하여 이등변적으로 크기가 조정됩니다. 이를 Q로 표시합니다(테스트 스케일이라고도 함). Q가 훈련 스케일 S와 반드시 같지는 않습니다(우리가 섹션 4에서 보여 줄 것처럼, 각 S에 대해 여러 Q 값 사용은 성능 향상으로 이어집니다). 그런 다음, 네트워크는 (Sermanet et al., 2014과 유사한 방식으로) 크기 조정된 테스트 이미지 위에 밀도 있게 적용됩니다. 즉, fully-connected 레이어는 먼저 컨볼루션 레이어로 변환됩니다 (첫 번째 FC 레이어는 7 × 7 conv. 레이어로, 마지막 두 FC 레이어는 1 × 1 conv. 레이어로). 그 결과로 얻어진 fully-convolutional 네트워크가 전체 (잘림 없는) 이미지에 적용됩니다. 결과는 클래스 점수 맵으로, 채널 수는 클래스 수와 같으며, 입력 이미지 크기에 따라 가변적인 공간 해상도를 갖습니다. 최종적으로 이미지의 고정 크기 클래스 점수 벡터를 얻기 위해 클래스 점수 맵이 공간적으로 평균화됩니다(총합 풀링). 또한 이미지의 수평 반전을 통해 테스트 세트를 보강합니다. 원본 및 반전된 이미지의 soft-max 클래스 후반분은 이미지의 최종 점수를 얻기 위해 평균화됩니다.
Fully-convolutional 네트워크가 전체 이미지에 적용되므로 테스트 시에 여러 자르기를 샘플링할 필요가 없습니다(Krizhevsky et al., 2012). 이는 각 자르기마다 네트워크 재계산이 필요하기 때문에 효율적이지 않습니다. 동시에 Szegedy et al. (2014)가 수행한 것처럼 여러 자르기를 사용하는 것은 fully-convolutional 네트워크와 비교하여 입력 이미지를 더 정밀하게 샘플링하므로 향상된 정확도를 가져올 수 있습니다. 또한, 다중 자르기 평가는 컨볼루션 경계 조건이 다르기 때문에 dense 평가에 보완적입니다: 자르기에 ConvNet을 적용할 때, convolved 특징 맵은 0으로 패딩되지만, 밀도 평가의 경우 동일한 자르기의 패딩은 이미지의 이웃 부분에서 나옵니다 (convolutions 및 spatial pooling으로 인해), 이는 전체 네트워크의 수용 영역을 크게 증가시켜 더 많은 컨텍스트를 캡처합니다. 우리는 여러 자르기의 증가된 계산 시간이 정확도의 잠재적 이득을 정당화하지 않는다고 믿지만, 참고로 우리는 또한 각 스케일당 50개의 자르기를 사용하여 네트워크를 평가합니다 (2개의 반전을 포함한 5 × 5 정규 그리드), 총 150개의 자르기를 사용하여 4개의 스케일에서 사용된 144개의 자르기와 유사한 평가를 수행합니다(Szegedy et al., 2014).
<3-3 IMPLEMENTATION DETAILS>
우리의 구현은 공개된 C++ Caffe 툴박스(Jia, 2013)에서 파생되었으며(2013년 12월에 분기됨), 여러 GPU에서 훈련 및 평가를 수행하고, 여러 스케일의 완전한 크기(자르지 않은) 이미지로 훈련 및 평가를 수행할 수 있도록 몇 가지 중요한 수정을 포함하고 있습니다(위에서 설명한대로). 다중 GPU 훈련은 데이터 병렬화를 활용하며, 각 GPU의 여러 개의 훈련 이미지 배치를 분할하여 병렬로 처리합니다. GPU 배치의 그래디언트가 계산된 후, 이들은 전체 배치의 그래디언트를 얻기 위해 평균화됩니다. GPU 간 그래디언트 계산은 동기적으로 이루어지므로, 결과는 하나의 GPU에서 훈련하는 것과 완전히 동일합니다.
최근에는 ConvNet 훈련을 가속화하기 위한 보다 정교한 방법들이 제안되었는데(Krizhevsky, 2014), 이 방법들은 네트워크의 다른 레이어에 대해 모델 및 데이터 병렬화를 활용합니다. 그러나 우리가 개념적으로 훨씬 간단한 방법이 이미 하나의 GPU를 사용하는 것에 비해 4-GPU 시스템에서 3.75배의 속도 향상을 제공한다는 것을 발견했습니다. 네 개의 NVIDIA Titan Black GPU가 장착된 시스템에서 단일 네트워크를 훈련하는 데는 아키텍처에 따라 2~3주가 걸렸습니다.
4. CLASSIFICATION EXPERIMENTS
이 섹션에서는 설명된 ConvNet 아키텍처가 ILSVRC-2012 데이터셋(2012~2014 ILSVRC 챌린지에 사용된)에서 얻은 이미지 분류 결과를 제시합니다. 이 데이터셋에는 1000개의 클래스 이미지가 포함되어 있으며, 훈련(1.3백만 이미지), 검증(5만 이미지) 및 테스트(클래스 레이블이 보류된 10만 개의 이미지) 세트로 분할됩니다. 분류 성능은 두 가지 지표를 사용하여 평가됩니다: 상위 1개 및 상위 5개 오류. 전자는 다중 클래스 분류 오류로, 잘못 분류된 이미지의 비율입니다. 후자는 ILSVRC에서 사용되는 주요 평가 기준이며, 이는 실제 범주가 상위 5개 예측된 범주 외에 있는 이미지의 비율로 계산됩니다. 대부분의 실험에서는 검증 세트를 테스트 세트로 사용했습니다. 일부 실험은 또한 테스트 세트에서 진행되었으며, 이는 "VGG" 팀 항목으로 ILSVRC-2014 대회에 공식 제출되었습니다.
<4-1 SINGLE SCALE EVALUATION>
우리는 섹션 2.2에서 설명된 계층 구성을 사용하여 단일 스케일에서 개별 ConvNet 모델의 성능을 평가하기 시작합니다. 테스트 이미지 크기는 다음과 같이 설정되었습니다: 고정된 S의 경우 Q = S이고, 잡음이 있는 S ∈ [Smin, Smax]의 경우 Q = 0.5(Smin + Smax)입니다. 결과는 표 3에 표시되어 있습니다. 첫째로, 로컬 응답 정규화(A-LRN 네트워크)를 사용하는 것이 어떤 정규화 계층도 없는 모델 A를 개선하지 않음을 알 수 있습니다. 따라서 우리는 보다 깊은 아키텍처(B~E)에서 정규화를 사용하지 않습니다.
둘째로, ConvNet의 깊이가 증가함에 따라 분류 오류가 감소하는 것을 관찰할 수 있습니다: A의 11층부터 E의 19층까지. 특히, 동일한 깊이임에도 불구하고, 세 개의 1 × 1 컨볼루션 레이어를 포함하는 C 구성(구성 D와 C 구성을 사용하는 D 구성보다 나쁘게 수행됨)이 모든 네트워크에서 3 × 3 컨볼루션 레이어를 사용합니다. 이것은 추가적인 비선형성이 도움이되지만( C가 B보다 낫다), 중요한 것은 비선형적인 수용 영역을 가진 conv. 필터를 사용하여 공간적 컨텍스트를 캡처하는 것입니다(D가 C보다 낫다). 우리 아키텍처의 오류율은 깊이가 19층에 도달했을 때 포화되지만, 더 깊은 모델은 더 큰 데이터셋에 유용할 수 있습니다. 우리는 또한 B 넷을 B로부터 파생된 다섯 개의 5 × 5 컨볼루션 레이어를 사용한 얕은 넷과 비교했습니다. 각 3 × 3 컨볼루션 레이어 쌍을 단일 5 × 5 컨볼루션 레이어로 교체하여 얻었습니다(2.3 절에서 설명한 것과 동일한 수용 영역을 가짐). 얕은 넷의 상위 1개 오류는 B보다 7% 높았습니다(중심 크롭 기준), 이는 작은 필터를 사용하는 깊은 넷이 큰 필터를 사용하는 얕은 넷보다 우수함을 확인합니다.
마지막으로, 훈련 시 스케일 잡음(256에서 512까지의 S)은 테스트 시 단일 스케일을 사용하더라도 고정된 가장 작은 측면 이미지에서 훈련하는 것보다 훨씬 나은 결과를 가져옵니다. 이것은 훈련 세트 증가에 의한 스케일 잡음이 다중 스케일 이미지 통계를 캡처하는 데 도움이되는 것임을 확인합니다.
<4-2 MULTI-SCALE EVALUATION>
단일 스케일에서 ConvNet 모델을 평가한 후에는 테스트 시 스케일 잡음의 영향을 평가합니다. 이것은 테스트 이미지의 여러 조절된 버전(다른 값의 Q에 해당)에서 모델을 실행한 다음 결과 클래스 포스터리어를 평균화하는 것으로 구성됩니다. 훈련 및 테스트 스케일 간의 큰 차이는 성능 저하로 이어지므로, 고정된 S로 훈련된 모델은 훈련과 근접한 세 가지 테스트 이미지 크기(Q = {S - 32, S, S + 32})로 평가되었습니다. 동시에, 훈련 시 스케일 잡음은 네트워크를 테스트 시에 더 넓은 범위의 스케일에 적용할 수 있게 하므로, 변수 S ∈ [Smin; Smax]로 훈련된 모델은 더 큰 크기 범위인 Q = {Smin, 0.5(Smin + Smax), Sma에서 평가되었습니다. 테이블 4에 제시된 결과는 테스트 시 스케일 잡음이 더 나은 성능을 낳는다는 것을 보여줍니다(표 3에 나와 있는 단일 스케일에서 동일한 모델을 평가하는 것과 비교). 이전과 마찬가지로, 가장 깊은 구성 (D 및 E)이 가장 잘 수행되며, 스케일 잡음이 고정된 가장 작은 측면 S로 훈련하는 것보다 나은 것으로 나타났습니다. 유효성 검사 세트에서 최고의 단일 네트워크 성능은 24.8%/7.5%의 상위 1%/상위 5% 오류입니다(표 4에서 굵게 강조되어 있습니다). 테스트 세트에서 구성 E는 7.3%의 상위 5% 오류를 달성합니다.
<4-3 MULTI-CROP EVALUATION>
표 5에서는 다중 크롭 평가와 밀집 ConvNet 평가를 비교합니다(세부 내용은 섹션 3.2를 참조). 또한 두 평가 기법의 보완성을 평가하기 위해 소프트맥스 출력을 평균화합니다. 여러 크롭을 사용하는 것이 밀집 평가보다 약간 더 나은 성능을 발휘하고, 두 접근 방식은 실제로 보완적입니다. 위에서 언급한 대로 이는 합성곱 경계 조건의 다른 처리 때문이라고 추측됩니다.
<4-4 CONVNET FUSION>
이전까지는 개별 ConvNet 모델의 성능을 평가했습니다. 실험의 이 부분에서는 여러 모델의 출력을 평균화하여 soft-max 클래스 확률을 결합합니다. 이는 모델들의 상호 보완성으로 인해 성능을 향상시킵니다. 이러한 방법은 2012년 (Krizhevsky et al., 2012)와 2013년 (Zeiler & Fergus, 2013; Sermanet et al., 2014)의 ILSVRC 최고 성적 제출에서 사용되었습니다. 결과는 표 6에 나와 있습니다. ILSVRC 제출 시점까지 우리는 단일 스케일 네트워크와 완전 연결 레이어만 재조정하여 다중 스케일 모델 D를 훈련시켰습니다. 결과로 얻은 7개의 네트워크 앙상블은 7.3%의 ILSVRC 테스트 오류를 가집니다. 제출 이후에는 최고 성능의 다중 스케일 모델 두 개(configurations D와 E)만을 앙상블로 고려하여, 밀집 평가(dense evaluation)를 사용하면 테스트 오류가 7.0%로 감소하고, 밀집 및 다중 크롭(multi-crop) 평가를 결합하면 6.8%로 감소합니다. 참고로, 우리의 최고 성능 단일 모델은 7.1%의 오류를 달성합니다(표 5의 모델 E).
마지막으로, 우리의 결과를 표 7과 비교합니다. ILSVRC-2014 챌린지의 분류 과제에서 우리 "VGG" 팀은 7개 모델의 앙상블을 사용하여 7.3%의 테스트 오류로 2위를 차지했습니다(Russakovsky et al., 2014). 제출 이후, 우리는 2개 모델의 앙상블을 사용하여 오류율을 6.8%로 낮추었습니다.
표 7에서 볼 수 있듯이, 우리의 매우 깊은 ConvNets는 이전 세대 모델들보다 현저하게 우수한 성능을 보입니다. 이전에는 ILSVRC-2012와 ILSVRC-2013 대회에서 최고의 결과를 달성한 모델들입니다. 또한, 우리의 결과는 분류 과제 우승자인 (6.7% 오류로) GoogLeNet과 경쟁력이 있으며, ILSVRC-2013 우승 제출물인 Clarifai보다 현저하게 우수한 성능을 보입니다. Clarifai는 외부 훈련 데이터를 사용하여 11.2%의 정확도를 달성했고, 외부 데이터 없이는 11.7%를 달성했습니다. 우리의 최고 결과는 단지 두 모델을 결합하여 얻었음에도 불구하고, 대부분의 ILSVRC 제출물에서 사용된 것보다 훨씬 적습니다. 단일 네트워크 성능 측면에서, 우리의 아키텍처는 최고의 결과(7.0%의 테스트 오류)를 달성하며, 단일 GoogLeNet을 0.9% 이상으로 능가합니다. 특히, 우리는 LeCun et al. (1989)의 고전적인 ConvNet 아키텍처를 벗어나지 않았지만, 깊이를 크게 증가시킴으로써 그것을 개선했습니다.
5. CONCLUSION
이 연구에서는 대규모 이미지 분류를 위해 매우 깊은 합성곱 신경망(최대 19개의 가중치 레이어까지)를 평가했습니다. 표현의 깊이가 분류 정확도에 유익하며, 깊이가 크게 증가한 전통적인 ConvNet 아키텍처(LeCun et al., 1989; Krizhevsky et al., 2012)를 사용하여 ImageNet 챌린지 데이터셋에서 최신 기술 성과를 달성할 수 있음이 입증되었습니다. 부록에서는 우리의 모델이 다양한 작업과 데이터셋에 잘 일반화되며, 더 얕은 이미지 표현을 중심으로 구축된 보다 복잡한 인식 파이프라인을 뛰어넘거나 매칭함을 보여줍니다. 우리의 결과는 시각적 표현에서의 깊이의 중요성을 다시 한번 확인합니다.
감사의 글 이 작업은 ERC 보조금 VisRec no. 228180에 의해 지원되었습니다. 이 연구에 사용된 GPU 기증에 대해 NVIDIA Corporation의 지원에 감사드립니다.