이번에 읽고 리뷰해볼 논문은 ILSVRC에서 2등의 성적을 거둔 VGG(Visual Geometry Group, 2014) 논문입니다.
정리된 내용 중 부정확하거나 설명과 다른 부분에 대해선 언제든 피드백 부탁드립니다.
왜 VGG라는 이름으로 불리게 되었는가 ?

VGG 논문을 작성한 연구실 혹은 팀의 이름이 Visual Geometry Group이기 때문이 앞글자를 딴 것이 아닐까 싶습니다.
그럼 본격적으로 VGG 논문에 대해 리뷰를 시작해보도록 하겠습니다!
Abstract
Abstract에선 VGG 논문에서 어떠한 것에 대해 검증하고자 하는지에 대해 다룹니다.
본 논문에서 검증하고자 하는 가장 핵심적인 내용은 Large-Scale Image Recognition Task에서 네트워크(모델)의 깊이가 정확도를 개선시키는 효과가 있는지에 대한 내용입니다.
VGG가 작성될 무렵인 2014년도 이전의 논문 중 유명한 AlexNet을 예시로 들자면, AlexNet은 8개의 Convolution Layer, 3개의 Fully Connected Layer로 이루어져 있는 총 11개의 층을 갖는 네트워크입니다.
그렇기에 VGG에선 이보다 더욱 많은 수의 층인 16개의 층, 19개의 층을 갖는 네트워크가 정확도 측면에서 얼마나 이점이 있는지 검증하고자 했던 것이라고 할 수 있습니다.
또한 네트워크의 깊이를 증가시킴과 동시에 Very Small Convolution Filter를 사용했다고 하는데, 이는 3 x 3 크기의 Filter를 의미합니다. ( 이 또한 과거의 네트워크에선 7 x 7, 11 x 11 크기의 Filter를 사용했기 때문입니다. )
다음 파트에선 더욱 깊은 구조의 네트워크는 어느 정도의 성능을 낼 수 있는지, 어째서 작은 크기의 Filter를 사용했는지 등 여러 내용에 대해 다뤄보도록 하겠으며, 이 외에도 Training Detail, 1 x 1 Convolution 등 많은 개념이 등장하기 때문에 생각보다 중요하면서도 알찬 논문이기 때문에 이 또한 조금 자세하게 다뤄보도록 하겠습니다!
Introduction
Convolutional Network는 Large-Scale Image/Video Recognition Task에서 큰 성공을 거두었습니다.
이는 Convolutional Network가 Image/Video를 효과적으로 다루는 이유에서도 있지만, 큰 규모의 데이터 셋과 하드웨어의 비약적인 발전 등으로 인한 시너지가 맞물리며 발생한 결과라고 해석할 수 있습니다.
그렇기에 Convolutional Network를 통해 큰 성공을 거둔 AlexNet에서부터, 이를 개선하려는 많은 시도들이 있었습니다.
본 논문 또한 이를 개선하려는 시도 중 하나라고 볼 수 있으며, 앞선 Abstract 내용에서 설명했다시피 다른 파라미터를 고정시킨 상태에서 네트워크의 깊이가 성능 개선에 어느 정도 영향력을 갖는지 검증하는 것을 목표로 합니다.
물론 네트워크의 깊이를 무식하게 늘릴 수도 있지만, 이는 좋지 못한 방법이며 저자가 제안한 3 x 3 Small Filter를 적용해주었을 때, 효과적으로 네트워크의 깊이를 증가시킬 수 있게 했습니다.
ConvNet Configurations - Architecture
이번 파트에선 저자가 언급한 Architecture 설계 내용에 대해 다루며, 간단하게만 다루고 넘어가도록 하겠습니다.
1. 학습 중, 입력 shape은 224 x 224로 Fix.
2. 입력 이미지를 정규화하기 위해, 각 픽셀에 대해 R/G/B의 평균 값을 각각 빼서 사용.
3. Convolutional Network의 모든 Filter는 3 x 3 크기를 사용.
4. 다양한 네트워크 구성 중, 한 개의 세팅에서 1 x 1 Convolution Filter를 사용하여 테스트.
5. 각 Convolution Layer의 연산이 마무리된 후, Max-Pooling Layer를 적용했으며, 총 5개의 Layer가 사용됨.
6. 마지막 Pooling Layer 연산 이후, 3번의 Fully Connected 연산이 수행되었으며, 마지막 연산 후 Softmax 연산을 적용.
7. 모든 은닉 층에서의 활성화 함수로 ReLU 활성화 함수를 적용.
8. 네트워크 구성 중, 한 개의 세팅에서 Local Response Normalization을 적용해주었지만, 성능 개선은 없었음.
여기서 LPN( Local Response Normalization ) 이란?
개념적으로는 "측면 억제"라는 개념으로 알려져 있으며, 강한 자극으로 인해 주변의 약한 자극들이 무시되는 것을 의미하며, 이러한 개념을 딥러닝에 적용한 것입니다.
어떻게 적용할 수 있나?

공식으로 이해하고자 했을 땐, 조금 낯설지만 결과적으론 모든 픽셀 각각의 평균 값을 계산하여 원래 픽셀에 나누어 주는 것을 의미하며, 이는 Global Average Pooling으로 계산된 1 x 1 x C Feature Map을 통해 어떠한 Input Feature Map을 나눠주는 것을 의미합니다.
ex) 14 x 14 x C Feature Map / 1 x 1 x C Global Average Pooling Feature Map
개념적으로나 실질적으로 중요한 내용은 아니기 때문에, 빠르게 넘어가보도록 하겠습니다!
ConvNet Configurations - Discussion
이번 파트에서 다루는 내용은 Convolution Filter를 통해 연산되는 영역인 Receptive Field에 대한 내용입니다.
Receptive Field란 Convolution Filter를 통해 연산되는 어떠한 영역이라고 할 수 있습니다.

가장 왼쪽 Layer 1에서 3 x 3 영역으로 표시된 어떠한 영역을 3 x 3 Convolution Filter의 Receptive Field라 할 수 있습니다.
이번 파트에서 다루고자 하는 Very Small Conv Filter는 AlexNet의 Convolution Filter들과 밀접한 관련이 있습니다.
VGG에선 아주 작은 크기인 3 x 3 Convolution Filter를 구조에 따라 2~4개를 연속적으로 사용하는 모습을 볼 수 있습니다.
기존 AlexNet에선 하나의 큰 Convolution Filter를 사용했는데, 왜 VGG에선 큰 Filter 대신 작은 Filter를 여러개 쓴걸까요?
그 이유는 커다란 Filter를 작은 Filter로 분해하여 여러번 사용했을 때, 나타나는 아래와 같은 이점들 때문입니다.
1. 하나의 커다란 Filter를 사용하는 것보다, 작은 Filter를 여러번 사용했을 때, 연산량에서 큰 이점이 존재.
2. 여러 Filter(Layer)를 사용하게 되면서, 여러번 ReLU 함수를 적용하게 되고, 이는 비선형적 함수가 반복되기 때문에 네트워크 자체의 표현력(어려운 문제를 잘 해결할 수 있도록 좋은 정보를 담는 능력, Decision Function의 고도화)이 증가.
3. 연산량, 비선형성 증가는 부가적인 이점이며, 하나의 커다란 Filter와 여러개의 작은 Filter는 결과적으로 같은 크기의 Receptive Field를 가질 수 있음.
여기서 3번 개념인 여러개의 작은 Filter는 하나의 커다란 Filter와 같은 크기의 Receptive Field를 갖는다고 했는데,
이게 도대체 무슨 말일까요?
이는 위 Layer 1 ~ 3 이미지를 통해 간단하게 설명할 수 있습니다.
5 x 5의 Feature Map 영역에 5 x 5 Convolution Filter를 씌워 연산했을 때, 1개의 연산 결과가 도출되게 됩니다.
그렇다면, 5 x 5의 Feature Map 영역에 3 x 3 Convolution Filter를 씌워 연산했을 땐, 어떤 결과가 도출될까요?
바로 3 x 3 크기의 Feature Map이 도출되게 됩니다. 만약 도출된 영역에 한번 더 3 x 3 Filter 연산을 한다면?
앞서 5 x 5 Convolution Filter를 사용한 것과 동일하게 1개의 연산 결과가 도출되게 됩니다.
이를 기반으로 생각해봤을 때, 결국 5 x 5 Filter를 한번 사용하나 3 x 3 Filter를 2번 사용하나 입력과 출력은 같습니다.
결과적으로 두 Filter 모두, 5 x 5 Feature Map에 대한 모든 영역을 봄과 동시에 1개의 출력을 내게 되는 것입니다.
그래서 저자는 큰 필터와 작은 필터가 같은 Receptive Field를 갖는다면, 연산량과 비선형성 관점에서 작은 필터로 분해해서 사용하는 것이 더욱 효과적이라고 생각하고 제안한 것이죠.
연산량 관점에선, 5 x 5 Filter 연산을 위해 5 * 5 = 25, 3 x 3 Filter에선 (3 * 3) + (3 * 3) = 18의 연산량이 필요하게 됩니다.
어째서 연산량 관점에서도 이득인지, 왜 하나의 큰 필터를 분해해서 사용하는지 이해할 수 있었습니다.
이번 파트가 조금 길게 설명되었는데, 마지막으로 1 x 1 Convolution에 대해 다루고 다음으로 넘어가고자 합니다!
1 x 1 Convolution 또한 3 x 3 Conv Filter에서 제안한 여러 장점들과 어느정도 유사한 장점들을 갖습니다.
1. 직접적인 채널 수(차원 수)를 줄임으로, 연산량을 크게 줄일 수 있음.
2. 2번의 3 x 3 Conv Filter와 동일하게, 여러번의 비선형 함수가 사용되기 때문에 Decision Function이 고도화됨.

위 이미지를 기준으로 봤을 때, 위와 아래의 차이는 1 x 1 Convolution을 적용했냐, 하지 않았냐의 차이입니다.
동일한 크기의 Feature Map을 기준으로 5 x 5 Conv Filter 연산을 수행할 때, 중간에 1 x 1 Convolution을 넣어준다면?
위 1번의 내용처럼, 직접적으로 연산될 Feature Map의 채널 수를 줄여주기 때문에, 연산량이 크게 줄어들게 됩니다.
대부분의 연산량은 입력 이미지의 해상도도 해상도지만, 입/출력 채널 수에 따라 크게 달라지기 때문입니다.
연산량을 줄여줌과 동시에, 비선형성 또한 증가되어 Decision Function이 고도화되니, 안 쓸 이유가 없습니다!
그렇기에 이후 리뷰할 여러 논문들에서도 분야를 가리지 않고, 이 1 x 1 Convolution 개념을 매우 자주 활용합니다.
여기까지가 Discussion에 대한 내용이었으며, 중요한 내용들이 많이 등장하기에 꼭 이해하고 넘어가는 것을 추천드립니다!
Classification Framework
이번 파트에선 VGG Network의 Training과 Evaluation에 대해 다룹니다.
VGG를 학습하는 과정은 AlexNet을 학습한 방식을 따라 진행했으며, 약간에 디테일에 대해선 아래와 같습니다.
1. Gradient Descent 방식을 기반으로 하며, 그 중에서도 Mini-Batch 방식을 활용해서 Optimization을 수행.
2. 256의 Batch Size, SGD + 0.9 Momentum Optimizer, Weight Decay 0.0005, Dropout 0.5, LR 0.01 + 추가 Decay
위 방식을 통해 학습한 VGG는 AlexNet 대비 더욱 많은 파라미터와 깊은 깊이를 가짐에도, 알고리즘이 수렴하기 까지 더욱 적은 수의 Epoch가 사용되었습니다.
파라미터 수가 더욱 많은데도, 적은 수의 Epoch이 사용되었다는 것은, 정보를 추출하는 능력이 더욱 좋음을 의미합니다.
좋은 성능을 갖는 VGG에 대해 저자는 Depth & Small Filter 혹은 Pre-trained Weights 덕분이 아닐까 설명했습니다.
여기서 저자가 말하는 Pre-trained Weights란 무엇을 의미하는 걸까요?
이에 대해서 저자는 네트워크가 학습하는 가중치들(Weights)에 대해서 언급합니다.
과거, 학습을 위해 네트워크에서 처음 Layer를 생성하고 가중치를 만들어줄 때, 주로 난수를 통해 초기화 해주었습니다.
일반적으론 문제 없다고 생각할 수 있지만, 난수를 기반으로 초기화 되기에 항상 시작점이 다른 문제가 있습니다.
만약 운이 좋아 좋은 포인트에서 시작했다면 좋은 성능을, 아니라면 불안정한 학습으로 인해 성능이 오락가락 하게됩니다.
이러한 내용을 기반으로 저자는 네트워크의 성공적인 학습을 위해선, 가중치 초기화는 매우 중요하다고 설명합니다.
그렇다면? 과연 저자는 어떠한 방식으로 VGG의 초기 가중치를 설정해주었을까요?
이 해답으로 저자는 위에서 언급된 Pre-trained Weights를 사용했습니다.
>> 그렇다면 이 Pre-trained Weights는 도대체 어디에 있는 가중치를 끌어와서 사용한건가요?
바로 여러 VGG 네트워크 중 A 구조의 네트워크를 랜덤 초기 가중치를 통해 먼저 학습한 뒤,
학습된 가중치를 초기 가중치로 사용하는 방식입니다! ( 현재 잘 알려진 Transfer Learning과 유사합니다. )

뒤쪽의 더욱 깊은 네트워크를 학습하기 이전에, A 구조를 먼저 학습시켜준 뒤, 이 가중치를 적용해준 것입니다.
A 구조의 레이어는 뒷 구조의 레이어에 비해 적기 때문에, 남는 레이어는 정규분포에서 샘플링하여 채워주었습니다.
이 때의 정규분포는 평균 0, 분산 0.01을 갖는 정규분포에서 샘플링을 수행했고, 가중치 편향은 0으로 초기화 했습니다.
연구를 수행하고 논문을 작성하는 당시 저자는 알지 못했지만, 이전에 이러한 초기화 방식에 대한 논문이 존재했습니다.
VGG 논문에서도 언급되었지만, 본인들은 이러한 방법이 논문으로 있다는걸 연구 다 하고나서야 알았다고 합니다...
물론 현재는 Glorot, Xavier Glorot, He 등 다양한 가중치 초기화 방식이 널리 알려져 있습니다.
이에 대해선 실제 코드와 함께 추후 조금 더 상세하게 리뷰해보도록 하겠습니다.
다음 파트에선, VGG를 학습시킬 때 사용된 여러가지 테크닉과 함께 조금 더 깊은 내용을 다뤄보겠습니다!
Training / Testing Detail
Classification Framework 파트에서 모든 내용을 다루기엔 너무 길다고 느껴져서, 디테일한 내용은 따로 작성했습니다.
+ 제가 이해한 내용대로 해석한 것이라, 잘못 전달되는 내용이 있을 수 있으니 피드백 부탁드립니다!
VGG의 Training 과정에선 S라는 값을 정의해서 사용하며, 이는 입력되는 Image의 ReScale을 의미합니다.
아까 위에서 입력되는 Image의 W, H 크기는 모두 Fix 시킨 상태로 사용한다고 설명드렸는데, 왜 S라는걸 쓸까요?
VGG를 Training 할 때, S는 입력 이미지에 대한 Resize + Crop을 수행하며, 그 중에서도 Resize에 대한 값입니다.

S를 224로 둔 상태라면, 이미지에 아무런 처리를 수행하지 않았다고 할 수 있습니다.
하지만 224보다 큰 크기의 S라면? 해당 크기로 이미지의 Scale을 변경한 뒤, Fix 크기인 224로 Random Crop 합니다.
왜 이런 방법을 사용한걸까요?
만약 Random Crop 과정에서 위 이미지의 핵심 특징 중 하나인 귀 혹은 뿔이 반정도 잘려나갔다고 가정해보겠습니다.
그럼에도 이미지의 Label이 바뀌지 않기 때문에, 네트워크 입장에선 남아있는 다른 특징에서 최대한 정보를 뽑아내는 방법밖엔 없습니다.
그렇다는건 이미지의 남은 영역 내에서, 이미지를 잘 식별할 수 있는 특징을 추출하도록 학습하는 방법밖엔 없습니다.
이러한 개념이 바로 논문에서 제안하는 S 값을 변화시키는 학습 방법이라 할 수 있습니다.
S 개념에 대해선 설명했으니, VGG에서 제안하는 S를 활용한 2가지 학습 방법에 대해 조금 더 다뤄보겠습니다.
1. Single Scale Training
- S를 특정 값으로 고정한 상태에서 끝까지 학습하는 방법을 의미. 이 때, S 값으론 256, 384가 사용됨.
- S=256으로 먼저 네트워크를 학습한 뒤, Pre-trained Weights를 갖고 S=384 네트워크를 학습.
사전 학습 가중치를 사용하기 때문에, Learning rate를 0.01에서 0.001로 낮추어 학습.
2. Multi Scale Training
- 학습 중 무작위로 변화하는 S 값을 사용하며, S는 256 ~ 512의 값을 사용. 이후 224 크기로 Crop.
- 마치 Random Scale Augmentation과 같은 효과를 내기 때문에, 네트워크는 다양한 규모의 Object를 보며 학습.
- 앞서 학습된 S=384 네트워크의 가중치를 사용하여, 네트워크의 가중치를 초기화.
순서를 정리해보면, 아래와 같은 순서로 VGG가 학습되었다고 정리해볼 수 있습니다.
1. A Network 학습 ( Random init )
2. A 가중치 기반 나머지 Network 가중치 초기화
3. A 가중치 기반 Single Scale Training 224
4. S 224 가중치 기반 Single Scale Training 384
5. S 384 가중치 기반 Multi Scale Training (256 ~ 512)
학습은 위와 같은 프로세스로 진행되었다고 한다면, 테스트는 어떠한 방식으로 이루어졌을까요?
테스트 과정에선 앞선 S와는 다르게 Q라는 값을 사용하고, 기존 학습된 네트워크의 구조를 약간 변경하게 됩니다.
1. 앞선 S과 같이 Scale을 조정하는 개념인 Q가 존재. S와 다른 값이 들어와도 상관없으며, Crop은 수행하지 않음.
2. 학습된 3개의 Fully Connected Layer를 3개의 Convolutional Network로 변경
>> FC Layer의 가중치를 Conv 가중치 형태로 Reshape 후, 새로 만든 Conv Layer에 가중치를 입력하는 방식
3. 모든 Layer를 Convolution으로 대체한 Fully Convolutional 형태이기 때문에, 어떠한 크기의 이미지도 처리 가능.
4. 입력 이미지의 크기에 따라 최종 결과물의 Resolution이 각각 다른 형태로 도출됨.
>> 예를 들어, 224x224x3를 입력했다면 1x1x1000, 332x332x3을 입력했다면 5x5x1000 ( 예시입니다 ) 등 ..
5. 우리가 알고싶은건 1,000가지 클래스에 대한 확률 혹은 로짓이기 때문에 1,000개의 값만 남겨야함.
6. Global Average Pooling을 수행한 것처럼, Resolution에 대한 값을 평균내서 사용.
>> 5x5x1000 형태를 평균내어 1x1x1000 형태로 사용. 이는 1,000개 클래스에 대한 로짓 혹은 확률 값을 의미함.
7. 마지막으로 테스트 이미지에 3개의 Q값을 기반으로 샘플링을 수행. 150장의 이미지를 만든 뒤, Voting 앙상블을 수행.
>> 이를 Multi-Crop 방법이라고 하며, 추가적으로 성능과 연산량의 개선을 위해 Dense Evaluation 방법을 같이 활용.
여기서 저자가 설명하는 Dense Evaluation 방법은 연산량 감소를 위해 Overfeat 논문에서 등장하는 개념입니다.

앞서 사용된 Multi-Scale Crop Ensemble 방법을 적용해줄 시, 많은 정보가 버려지고 겹치는 문제가 발생합니다.
이렇게 비효율적인 방식을 연산량 측면에서 개선한 방식을 Dense Evaluation 이라고 합니다.
Offset이라는 값을 기반으로 Conv 연산에서 도출된 Feature Map에 Sliding Window 연산을 수행하게 됩니다.
이를 통해 Offset 마다(조금씩 밀려서 생성되는) 서로 다른 결과를 갖는 Feature Map이 만들어지게 됩니다.
각각의 Offset을 통해 만들어진 Map을 기반으로 연산 및 Ensemble을 수행하여, 결과를 도출하는 방법을 의미합니다.
이러한 방식을 Dense Evaluation이라고 하는 이유는, Multi-Scale Crop에 비해 조밀하게 조금씩 Shift하며 검사하는 방식을 의미하기 때문에 Dense Evaluation(조밀한 검증)이라고 하는 것 같습니다.
또한 이미지 한장으로 150장의 이미지에 대해 네트워크에 추론하여 Ensemble 하는 것보다, 도출된 Feature Map에 대해 Offset Shift 연산을 수행하여, Ensemble 하는 것이, 앞선 방법에 비해 더 효율적인 방법이라고 생각할 수 있을 것 같습니다.
이렇게 VGG가 학습되고 어떻게 평가되었는지에 대해 간단하게 리뷰해보았습니다.
다음 파트에선 이렇게 학습된 VGG가 어느 정도의 성능을 도출해내었는지 확인해보겠습니다!
Classification Experiments
VGG에 대해 정량적인 성능 평가를 수행할 때, Top-1 및 Top-5 Error를 사용하여 평가한 것을 알 수 있습니다.
이 Top-1, Top-5 Error가 어떤 의미를 갖는지 간단하게 확인하고 넘어가보겠습니다.
Top-1, Top-5는 Classification 과제에서 많이 사용되는 지표입니다.
이는 학습 모델이 도출한 N개 클래스에 대한 로짓 혹은 확률에 대해, Top-n 안에 정답이 존재하는지 측정합니다.
예를 들어, 1000개의 출력 중 확률이 가장 큰 5개의 값 안에 정답이 존재한다면 Top-1, Top-5 모두 Error는 0입니다.
하지만 확률이 가장 큰 5개의 값 안에 정답이 존재하지 않는다면 Error가 증가하게 됩니다.
Top-1 Error는 정확도에 대해 1 - Accuracy를 취한 값이라고 할 수 있고, Top-5는 Top-1에 비해 널널하다 할 수 있습니다.
예를 들어, 1000개의 확률 중 4번째 큰 확률이 정답이라면 Top-1 Error는 상승하지만, Top-5 Error는 상승하지 않습니다.
이러한 평가 지표에 대한 배경과 앞서 다룬 S, Q 개념을 함께 기억한 상태로 다음 표를 봐주시길 바랍니다.

먼저 Test에서의 Single Scale에 대해 리뷰하며, 학습 과정에서 제시한 2가지 방법대로 Single, Multi를 적용한 결과입니다.
Network의 깊이가 가장 깊은 E구조의 Network를 Multi-Scale로 학습시켰을 때, 가장 좋은 성적을 도출함을 알 수 있습니다.
또한 B의 구조에서 1x1 Convolution 개념만 추가적으로 사용한 C구조에서 더욱 좋은 성능을 확인할 수 있습니다.
이는 앞서 제시한 비선형성의 Decision Function 고도화가 실제 성능 개선이 가능함을 증명한다고 볼 수 있습니다.
추가적으로 Multi-Scale을 통해, Random Scale Augmentation과 같이 네트워크의 특징 추출 능력을 개선할 수 있습니다.
실제로 Single-Scale 학습에 비해 Top-1, Top-5 Error가 크게 개선됨을 확인할 수 있습니다.

다음은 앞선 학습 과정과 동일한 내용에, Multi-Scale Q를 적용한 결과입니다.
학습 과정에서 다양한 스케일을 보여주는 것과 함께 테스트에서 한 장의 이미지에 대해 150장의 결과를 내어 합칩니다.
다양한 테스트 데이터를 보여줌으로써, 해석하기 어려운 이미지에 대해 조금 더 강점을 가져간 것으로 이해할 수 있습니다.
이러한 Multi-Scale Test를 통해, 동일한 E 구조에서 Top-1 Error에 대해 0.7% 개선됨을 확인할 수 있습니다.
물론 그만큼 연산량의 증가가 존재하기 때문에, 이에 대한 부분은 염두해둔 상태로 이해해주시면 좋을 것 같습니다.

마지막은 앞선 Mult-Scale Crop (Q값을 달리하는) 방법에, Overfeat에서 사용된 Dense Evaluation을 적용한 결과입니다.
저자는 두가지 테크닉을 각각 모두 수행한 다음 도출된 모든 Class 확률을 모두 평균내는 방법을 적용해주었습니다.
이러한 방법을 통해 최종적으로 24.4%의 Top-1 Error를 도출하였습니다.

이렇게 적용할 수 있는 모든 방법을 동원한 후, 총 7개의 VGG Network의 출력을 사용하여, 평가를 수행했다고 합니다.
하지만 Test Error가 개선되진 않았고, submission 이후 앙상블을 2개로 줄였더니 조금 더 개선되었다고 합니다.
여러 새로운 개념들에 대해 제시했지만, ImageNet 대회는 VGG가 아닌 GoogleNet이 최종 1등을 달성했습니다.
2등의 성적이 조금 아쉬울 수 있지만, 충분히 훌륭한 성적과 연구 결과물을 도출하지 않았나 싶습니다.
Conclusion
VGG의 저자들은 Convolutional Neural Network의 "Depth"와 "Small Filter"에 대해 연구했습니다.
Small Filter를 통해 깊은 구조의 네트워크를 설계하고, 충분히 학습시켰을 때, 좋은 성적을 거둘 수 있음을 입증했습니다.
이러한 VGG의 구조와 아이디어는 다양한 분야에서 잘 일반화되어, 크고 작은 성능 개선으로 이어질 것으로 보여집니다.
다시 한 번, Depth에 대한 중요성을 언급하며, VGG 논문이 마무리됩니다.
리뷰를 마치며 ...
효율적이고 실제 산업 현장에 적용 가능한 네트워크가 중요한 현실에서, 현재 잘 사용되진 않지만 뿌리가 되는 논문이라고 할 수 있습니다.
Multi-Scale S 및 Q에 대한 설명, Dense Evaluation 파트에서 헷갈릴 수 있으니 이에 대해선 언제든 질문해주셔도 됩니다.
리뷰는 여기까지이며, 앞으로도 다양한 논문을 다루고자 합니다.
긴 글 읽어주셔서, 감사합니다.