📚 [비전] VGGNet 논문 리뷰 및 요약
📌 개요
✔ VGGNet 논문 키포인트
1. CNN 구조를 디자인할 때 depth(레이어를 깊게 쌓는 것)가 성능 향상에 중요한 요소임을 보임.
2. filter size를 3x3으로 작게 하여 depth를 19 layers까지 늘리되, 파라미터 개수는 크게 늘어나지 않도록 할 수 있었음.
3. ILSVRC 2014 대회에서 GoogLeNet(Inception)이 1등을 하고 VGGNet은 2등을 하였으나, VGGNet은 간결한 모델 구조로도 depth를 깊게 쌓고 좋은 성능을 보여주어서 의미를 갖는 논문이다.
📌 VGGNet의 구조
✔ depth에 차이를 둔 A~E 모델 구조 및 성능 비교
1. 이 논문에서는 depth에 차이를 둔 A~E까지 6개 모델의 성능을 비교하였다. 11 weight layers(8개의 conv layers와 3개의 FC layers)를 쌓은 A모델부터, 19 weight layers(16 conv layers 3개의 FC layers)를 쌓은 E모델까지 순차적으로 레이어 개수를 증가시켜서 실험을 진행하였다. 흔히 말하는 VGG16 모델은 레이어를 16개 쌓은 D모델을 의미하며, VGG19 모델은 레이어를 19개 쌓은 E모델을 의미한다.
2. conv layers의 receptive field인 filter size는 3x3으로 사용하였다. (이는 왼쪽/오른쪽, 위/아래, 중앙을 구분하기 위한 최소한의 사이즈) conv layers의 width인 채널 개수는 첫번째 레이어에서는 64개로 시작하여 각 max-pooling layer를 지날 때마다 2배씩 증가시켜서 512개 채널까지 늘리는 구조를 사용하였다.
3. conv layers의 width인 채널 수를 크게 늘리지 않았고, receptive fields인 fitler size도 기존에 자주 쓰이던 크기보다 줄여서 3x3을 사용한 결과, VGGNet에서는 모델의 depth를 늘려도 파라미터 개수가 크게 늘지 않도록 할 수 있었다. D모델(VGG16)의 파라미터 개수는 138M, E모델(VGG19) 144M 이다.
4. 이 논문에 따르면 depth가 깊어질수록 성능이 좋아짐을 확인할 수 있다. 특히 top-1 val error rate에서 D모델이 25.6%, E모델이 25.5%를 기록했으며, top-5 val error rate에서 D모델이 8.1%, E모델이 8.0%를 기록하였다. 그리고 이 논문에서는 19 layers 깊이에서 성능 향상이 정체되었다고 한다(논문에는 19 layers를 쌓은 E모델까지 언급되었지만 실제 실험에서는 E모델보다 더 깊은 모델도 실험해본 모양).
5. A모델과 A-LRN모델을 비교한 결과, 이전 AlexNet 논문에서 제시했던 LRN 기법은 자원(메모리와 시간) 소모만 심하고 성능 향상에는 도움이 되지 않았다고 한다.
6. C모델에서 사용한 1x1 conv layer의 경우에는 비선형성을 확보할 수 있다. (참고로 1x1 conv layer는 다음에 GoogLeNet (Inception) 논문 설명할 때 더 자세히 언급할 예정)
✔ 작은 filter size의 conv layer를 여러 개 쌓는 것은 어떤 효과를 가질까?
예를 들어 3x3 filter size의 conv layer를 2개 쌓는 것(그 중간에 spatial pooling 없이)은, 5x5 filter size의 conv layer 하나와 같은 receptive field를 갖는다. 3x3 filter size의 conv layer를 3개 쌓는 것은 7x7 filter size의 conv layer 하나와 같은 receptive field를 갖는다. 그렇다면 하나의 7x7 conv layer를 쌓는 대신 3개의 3x3 conv layers를 쌓는 것은 어떤 효과가 있을지 살펴보자.
1. 비선형성을 더 확보할 수 있다. 7x7 conv layer를 하나 쌓는 대신 3개의 3x3 conv layers를 쌓으면 그만큼 비선형성을 가진 ReLU 함수(non-linear rectification layers)도 3개를 적용할 수 있어서 판별에 도움이 된다.
2. 파라미터 개수를 감소시킬 수 있다. 7x7 conv layer를 하나 쌓는 대신 3개의 3x3 conv layers를 쌓으면 파라미터 개수를 줄일 수 있다. 예를 들어 64개의 channel 수를 가진 하나의 7x7 conv layer는 파라미터 개수가 $ 7^{2}64^{2} = 200,704 $ 이지만, 64개의 channel 수를 가진 3개의 3x3 conv layers는 파라미터 개수가 $ 3(3^{2}64^{2}) = 110,592 $ 이다.
✔ VGG16의 구조 도식화
'공부 > AI' 카테고리의 다른 글
[논문리뷰] Deep Residual Learning for Image Recognition (2015) (0) | 2023.01.31 |
---|---|
[논문리뷰] Going Deeper with Convolutions (2014) (0) | 2023.01.29 |
[논문리뷰] ImageNet Classification with Deep Convolutional Neural Networks (2012) (0) | 2023.01.27 |
[회고] 2021 구글 머신러닝 부트캠프 2기 후기 (3) | 2022.02.07 |
[DACON] 2021 교통 수(手)신호 동작 인식 AI 경진대회 후기 (7등) (1) | 2021.11.10 |