https://arxiv.org/abs/1409.1556
핵심 요약
- 3x3 convolution filter를 가진 network을 이용해 깊이를 증가시킨 모델을 평가합니다.
- 깊이를 16-19 layer로 늘려 이전 모델들보다 개선됨을 보여줍니다.
1. Introduction
- 백서에서는 ConvNet 아키텍처 설계의 또 다른 중요한 측면인 깊이에 대해 설명합니다.
- 아키텍처의 다른 매개변수를 수정하고 더 많은 컨볼루션 레이어를 추가하여 네트워크의 depth를 꾸준히 증가 시킵니다. 이는 모든 레이어에서 매우 작은(3x3) 컨볼루션 필터를 사용하기 때문에 가능합니다.
- LSVRC Classification 및 localisation task에서SOTA를 달성할 뿐만 아니라 다른 이미지 인식 데이터 세트에도 더 정확한 ConvNet 아키텍처를 제시하였습니다.
2. ConvNet Configurations
2.1 Architecture
- ConvNet에 대한 입력은 고정 크기 224x224 RGB 이미지입니다.
- 이미지는 컨볼루션 레이어 스택을 통과하며 여기서 매우 작은 3x3 필드가 있는 필터를 사용합니다.
- 컨볼루션 stride은 1픽셀로 고정됩니다. 레이어 입력은 공간 해상도가 컨볼루션 후에 보존되도록 합니다. 즉, 3x3 conv 레이어의 경우 패딩은 1픽셀입니다.
- Max pooling은 stride 2로 2x2 pixel window에서 수행됩니다.
- 컨볼루션 레이어 스택에는 3개의 완전 연결 레이어(fully connected layer)가 있습니다. 처음 두 개의 레이어는 각각 4096개의 채널을 갖고 세 번째 레이어는 1000 class에 대한 분류를 수행하므로 1000개의 채널을 갖습니다.
- 마지막 레이어는 soft-max 변환 레이어입니다.
- 마지막가 완전 연결 레이어를 제외한 모든 레이어에는 ReLU가 적용됩니다.
2.2 Configurations
- 논문에서 평가한 ConvNet 구성은 아래 테이블에 요약되어 있습니다.
- A~E의 모든 구성은 섹션 2.1에 제시된 일반 설계를 따르며 depth만 다릅니다.
- 네트워크 A의 11개 가중치 레이어(8개의 컨볼루션 레이어 및 3개 FC 레이어)에서 네트워크 E의 19개 가중치 레이어(16개의 컨볼루션 및 3개 FC 레이어)까지 있습니다.
- 컨볼루션의 너비 레이어(채널 수)은 첫 번째 레이어 64개에서 시작하여 각각의 맥스 풀링 레이어 이후 2배씩 512에 도달할 때까지 증가합니다.

Table: ConvNet Configuration
2.3 Discussion
- 전체 네트워크에서 매우 작은 3x3 receptive field 사용하며 모든 픽셀에서 입력으로 컨볼루션됩니다(stride1).
- 한개의 7x7 컨볼루션 레이어 대신 3개의 3x3 컨볼루션 레이어를 사용함으로서 결정함수의 비선형성 증가하여 피처(feature)의 식별성 증가하였습니다.
- 3개의 3x3 컨볼루션 레이어 스택이 C개의 채널을 가지고 있다고 가정하면 스택은3(32C2)=27C2 가중치에 의해 파라미터화 되는데 단일 7x7 레이어는 ∗72C2=49C2∗ 매개변수가 필요해 거의 81%가 더 필요합니다.
3. Classification Framework
3.1 Training
- 학습은 역전파(back-propagation) 기반으로 미니 배치 경사하강법(gradient descent)을 사용하여 수행됩니다.
- Batch Size: 256
- Momentum: 0.9
- L2 regularization : 5×10−4
- 학습률(Learning rate): 10−2, valiation에 대한 accuracy 향상되지 않으면 매번 학습률을 10배 감소, 370K 반복 이후 학습 중단(74 epoch)
- Weight decay: 5×10−4
- Dropout: 0.5
- 네트워크 가중치의 초기화는 매우 중요한데, 잘못된 초기화는 많은 수의 컷오프으로 인해 학습을 지연시키기 때문입니다. 학습 지연 막기 위해 무작위 초기화로 교육될 정도로 얕은 구성을 학습하는 것으로 시작했습니다. 그 후 깊은 architecture을 훈련할 때, 처음 4개의 컨볼루션 레이어와 마지막 3개의 FC 레이어를 네트워크의 레이어로 초기화 했습니다(중간 layer들은 무작위로 초기화 됨).224x224 크기의 ConvNet 입력 이미지를 얻기 위해 재조정된 학습 이미지(rescaled training image)를 무작위로 crop합니다.
- Multi-scale training
- 멀티 스케일 훈련의 또 다른 방법은 가장 작은 이미지 측면을 무작위로 샘플링하여 각 훈련 이미지를 개별적으로 다시 스케일링하는 것입니다.
- ∗[Smin;Smax]∗ (∗Smin=256,Smax=512∗) 에서 무작위로 S 추출해 학습 이미지를 개별적으로 스케일 함으로써 훈련 세트 증강으로 볼 수 있습니다.
3.2 Testing
- 테스트 시 학습된 ConvNet과 입력 이미지가 주어지면 다음과 같은 방식으로 분류됩니다.
- 가장 작은 면이 Q>224와 같도록 등방성으로 재조정되며, 이는 반드시 S와 같지는 않습니다.
- 그런 다음 재조정된 테스트 이미지에 네트워크를 조밀하게 적용합니다(첫 번째 FC 레이어는 7x7 컨볼루션 레이어로, 마지막 두 FC 레이어는 1x1 컨볼루션 레이어로).
- 전체 크기(full-size) 입력으로 각 레이어의 필터를 컨벌루션하여 전체 이미지에 적용됩니다.
- 마지막으로 이미지에 대한 클래스 점수의 고정 크기 벡터를 얻기 위해 클래스 점수 맵이 공간적으로 평균화됩니다.
- 또한 이미지를 수평으로 뒤집음으로써 테스트 세트 확대를 사용합니다.
3.3 Implementation Details
- Multi-GPU 학습 은 각 GPU에서 병렬로 처리되는 여러 GPU 배치들로 각 학습 이미지를 분할하여 수행됩니다.
- GPU 배치 gradient계산된 후 평균을 구하여 전체 배치의 gradient를 얻습니다. gradient 계산은 GPU 간에 동기화되므로 결과는 단일 GPU에서 훈련할 때와 정확히 동일합니다.
- 4-GPU 시스템에서 단일 GPU 시스템보다 속도가 3.75배 향상 시킨다는 것을 발견하였습니다.
4. Classification Experiments
-
• ILSVRC-2012 dataset에 대해 설명된 ConvNet architecture가 이뤄낸 image classification 결과를 제시합니다.
-
데이터 세트에는 1000개 클래스의 이미지가 포함되어 있으며 세 개(학습 1.3m, 검증 50k, 테스트 100k images)의 집합으로 분할됩니다.
-
Classification performance는 2가지 오류척도로 평가합니다.
- top-1 error : 다중 클래스 분류 오류, 즉 잘못 분류된 image의 비율
- top-5 error : 실측 범주가 상위 5개 카테고리들 밖에 있는 image의 비율
-
성능 평가
- 단일 테스트 스케일에서 ConvNet 성능
- 로컬 response normalization(A-LRN 네트워크)을 사용해도 모델 A에서 개선되지 않습니다. 따라서 우리는 더 깊은 아키텍처 (B-E)에서 normalization을 사용하지 않습니다.
- A의 11개 레이어에서 E의 19개 레이어로 ConvNet depth가 증가함에 따라 classification error가 감소하는 것을 볼 수 있습니다. 특히 동일한 depth에도 불구하고 구성 C(3개의 1 × 1 컨볼루션 레이어 포함)은 3 × 3 컨볼루션을 사용하는 구성 D보다 성능이 더 나쁩니다.

- 멀티 테스트 스케일에서 ConvNet 성능
- 스케일 지터링의 영향을 평가합니다. 테스트 이미지의 여러 재조정 된 버전에 대해 모델을 실행하는 것으로 구성됩니다.
- 결과는 스케일 지터링이 더 나은 성능으로 이어진다는 것을 나타냅니다. 이전과 마찬가지로 가장 깊은 구성(D 및 E)이 가장 잘 수행되며 스케일 지터링은 고정된 가장 작은 면을 사용한 훈련보다 낫습니다.

- 여라 ConvNet 퓨전 결과
- 이 부분에서는 soft-max 클래스 후방을 평균화하여 여러 모델의 출력을 결합합니다.
- 7개의 모델의 예측을 결합했음에도 불구하고 완전히 훈련된 2개의 다중 스케일 모델의 결합에 비해 정확도가 떨어집니다.

5. Conclusion
VGG-Net은 기존의 Convolutional 아키텍쳐보다 작은 receptive field 및 최대 19 depth의 레이어를 설계하여 좋은 성능을 만들었다고 볼 수 있습니다.이 결과는 시각적 표현에서 depth의 중요성을 다시 한 번 확인시켜 줍니다.