본 내용은
https://bskyvision.com/504
https://ctkim.tistory.com/114?category=880317
참고하여 제작하였습니다.
CNN Algorithms 중에서 이미지 분류용 Algorithms 중 VGGNet에 대해 포스팅해보겠습니다.
목차
CNN Algorithm - VGGNet
VGGNet 소개
이번 포스팅에서 처음 알아볼 알고리즘은 VGGNet입니다. 딥러닝을 처음 배우는 사람들이라도 많이 들어보았을 정도로 CNN모델의 기초가 되는 알고리즘입니다.
VGGNet은 옥스퍼드 대학의 연구팀 VGG에 의해 개발된 모델로써, 2014년 이미지 넷 이미지 인식 대회에서 준우승을 한 모델입니다. 아쉽게 GoogleNet에게 1등 자리를 빼앗겼지만 유명세와 인용 측면에서는 VGGNet이 우세하였는데, 그 이유는 모델의 복잡성 때문입니다.
GoogleNet(Inception) 모델을 살펴보면 알겠지만 구조가 매우 복잡하고, 난해합니다.
그에 반해 VGGNet은 CNN을 얼마 접하지 못한 초보자도 이해하기 쉬울 정도로 간단한 구조로 이루어져 있습니다.
VGGNet의 논문 이름은 "Very deep convolutional networks for large-scale image recognition"로, 네트워크의 깊이를 깊게 만드는 것이 성능에 어떤 영향을 미치는지 확인하는 목적을 가집니다.
그림을 참고하였을 때 역사적으로 VGGNet 모델부터 시작해서 네트워크의 깊이가 확 깊어졌습니다.
네트워크가 깊어질수록 성능이 좋아졌음을 위 그림을 통해 확인할 수 있습니다.
VGGNet의 구조
다시 한번 말하자면 VGGNet 연구의 핵심은 네트워크의 깊이를 깊게 만드는 것이 성능에 어떤 영향을 미치는지를 확인하고자 한 것입니다.
VGG 연구팀은 총 6개의 구조(A, A-LRN, B, C, D, E)를 만들어 성능을 비교했습니다.
여러 구조를 만든 이유는 기본적으로 깊이의 따른 성능 변화를 비교하기 위함입니다.
D구조가 VGG16, E구조가 VGG19라고 보면 됩니다.
해당 original 논문에서는 AlexNet과 VGG-F, VGG-M, VGG-S에서 사용되던 Local Response Normalization(LRN)이 A 구조와 A-LRN 구조의 성능을 비교함으로 성능 향상에 별로 효과가 없다고 실험을 통해 확인했습니다. 그래서 더 깊은 B, C, D, E 구조에는 LRN을 적용하지 않는다고 논문에서 밝혔습니다.
VGG 연구팀은 깊이의 영향만을 최대한 확인하고자 컨볼루션 필터 커널의 사이즈를 가장 작은 3 x 3으로 고정했습니다.
3 x 3으로 설정한 이유를 생각해보겠습니다. 만약 필터커널의 사이즈가 크면 이미지의 사이즈가 금방 축소되기 때문에 네트워크의 깊이를 충분히 깊게 만들기 불가능합니다.
또한 위 그림을 봤을 때 3 x 3 필터로 두 차례 컨볼루션을 하는 것과 5 x 5 필터로 한 번 컨볼루션을 하는 것이 결과적으로 동일한 사이즈의 특성 맵을 산출한다는 것입니다.
3 x 3 필터로 세 차례 컨볼루션 하는 것은 7 x 7 필터로 한번 컨볼루션 하는 것과 대응됩니다.
그렇다면 3 x 3 필터로 세 차례 컨볼루션을 하는 것이 7 x 7 필터로 한 번 컨볼루션 하는 것보다 나은 점은 무엇일까요?
가중치 or 파라미터의 개수의 차이가 있습니다.
3 x 3 필터가 3개면 총 27개의 가중치를 갖습니다. 반면 7 x 7 필터는 49개의 가중치를 갖습니다.
CNN에서 가중치는 모두 훈련이 필요한 것들이므로, 가중치가 적다는 것은 그만큼 훈련시켜야 할 것의 개수가 작아집니다. 따라서 학습의 속도가 빨라집니다.
또한 동시에 층의 갯수가 늘어나면서 특성에 비선형성을 더 증가시키기 때문에 특성이 점점 더 유용해집니다.
VGG16 구조 분석
위 자료들을 보면 알 수 있듯이 모두 간단한 CNN 구조로 이루어져 있습니다.
무언가 특수한 구조적 개선을 줬다기보다는 CNN을 단순화하면서도 잘 구성하는 방법을 잘 연구한 것 같은 느낌이 듭니다.
VGGNet의 단점은 parameter 개수가 매우 많다는 것입니다.
그 이유는 Fully Conneted Layer를 가져서인데, 이 3개의 layer에서 나오는 parameter의 갯수가 전체 parameter의 90% 이상을 차지합니다.
FC(Fully connected layer)를 정의하자면
1. 2차원 배열 형태의 이미지를 1차원 배열로 평탄화
2. 활성화 함수(Relu, Leaky Relu, Tanh, 등) 뉴런을 활성화
3. 분류기(Softmax) 함수로 분류
라고 할 수 있습니다.
'Main > Paper Review' 카테고리의 다른 글
[Paper Review] MobileNet V1 (0) | 2022.05.26 |
---|---|
[Paper Review] SENet: Squeeze-and-Excitation Networks (0) | 2022.05.16 |
[Paper Review] Batch Normalization (1) | 2022.03.31 |
[CNN-Algorithm] ResNet (0) | 2022.03.22 |
[CNN-Algorithm] GoogLeNet(Inception) (0) | 2022.03.21 |
댓글