2021. 6. 24. 15:55ㆍ인공지능/딥러닝 모델
제목은 분류모델로 써놓았지만 이 카테고리에 쓸 모델들은 Object Detection, Segmentation 등 등 다른 Task의 기반이 되는 backbone 역할을 해준다고 보면 된다.
이러한 backbone 모델의 성능에 따라 딥러닝의 성능은 천차만별로 달라지게 된다.
제일 처음 알아볼 모델은 VGGNET이다. 딥러닝을 처음 배우는 사람들이라도 많이 들어보았을 정도로 CNN모델의 기초가 되는 모델이다.
VGGNet은 2014년도 ILSVRC에서 처음 등장하였다. 아쉽게 GoogleNet에게 1등 자리를 빼았겼지만 유명세와 인용 측면에서는 VGGNet이 우세하였는데, 그 이유는 모델의 복잡성 때문이다.
Inception(GoogleNet) 모델을 살펴보면 알겠지만 구조가 매우 복잡하고, 난해하다.
그에 반해 VGGNet은 CNN을 얼마 접하지 못한 초보자도 이해하기 쉬울 정도로 간단한 구조로 이루어져있다.
VGGNet의 구조
출처: https://arxiv.org/pdf/1409.1556.pdf
VGGNet은 Layer의 개수 및 필터 크기에 따라서 위와 같이 나뉜다.
**여기서 가장 유명한 VGG16이 D에 해당한다.
좀 더 이해하기 쉽게 그림으로 보자면
출처: https://blurcode.in/blog/what-is-vggnet-beginners-guide-to-vggnet/
위 자료들을 보면 알 수 있듯이 모두 간단한 CNN 구조로 이루어져있다.
나로써는 연구팀이 ResNet이나 DenseNet같이 특수한 구조적 개선보다는 CNN을 단순하면서도 잘 구성하는 방법을 연구한 것 같은 느낌이 들었다.
Table 2를 보면 VGGNet의 단점을 볼 수 있는데 파라메터 개수가 매우 많다는 것이다. 그 이유는 Fully Connected Layer를 가져서인데, 이 3개의 layer에서 나오는 파라메터 개수가 전체 파라메터의 90%이상을 차지한다.
VGGNet의 특징
논문에 여러 특징들이 기록되어있지만, 내가 보기에는 3x3 필터만 사용했다는 것이 가장 큰 특징이라고 생각한다.
말했듯이, VGGNet은 3x3크기의 필터로만 이루어져있는데, 그 이유는 다음과 같다.
출처: https://ai.plainenglish.io/vggnet-with-tensorflow-transfer-learning-with-vgg16-included-7e5f6fa9479a
5x5 필터나 7x7 필터를 3x3필터를 여러번 쓰는 것으로 대체할 수 있다는 것이 VGG팀의 생각이다.
위의 그림에서 볼 수 있듯이, 5x5 receptive field는 1) 3x3 filter를 통해 3x3 receptive로 만들고, 이를 또 2) 3x3 filter로 convolution하는 것으로 표현이 가능하다.
이렇게 함으로써 2가지의 장점을 얻을 수 있다.
- 파라메터의 개수
- 5x5필터는 5 x 5 x filter_size의 파라메터를 가지는 반면, 3x3필터는 3 x 3 x filter_size를 가진다. 파라메터가 적은 만큼 연산량 측면에서도 좋고, 훈련 속도도 더 빨라진다.
- Depth
- 5x5필터를 3x3필터를 두 번 거치는 것으로 대체할 수 있다는 것을 보았다. 즉, 5x5필터 Convolution layer 1층을 3x3필터 Convolution layer 2층으로 바꾸는 것을 말하며 모델의 깊이는 그만큼 늘어나게 된다.
- 모델의 깊이가 늘어날 수록 더 고차원적이면서 비선형성이 높아지기 때문에 성능이 높아지게 된다.
VGGNet에 대한 간단한 설명과 구조, 장단점에 대해서 알아보았다.
논문에는 더 다양한 특징과 테스트 기록 등이 있으니 궁금하면 직접 참고해보기를 바란다.
다음 시간에는 ResNet에 대해서 알아볼 예정이다.
'인공지능 > 딥러닝 모델' 카테고리의 다른 글
[Detection] YOLO (You Only Look Once) (0) | 2022.09.06 |
---|---|
[분류모델] ResNet (0) | 2021.06.28 |