VGG16모델 - 1

김찬울·2021년 9월 14일
0

VGG16

해당 모델을 가장 쉽게 나타낸 그림이다.

alexnet이후로 학계가 크게 일면서 딥러닝에 대한 연구가 꾸준히 있었고 지금까지 이어지고 있다.

그중 지금 VGG를 다룰 것이다.


VGG연구팀은 기존 CNN모델에서 성능향상의 방향성에 대해 꾸준히 고민한 끝에

초점을 depth 즉, 네트워크의 깊이에 두었다.

그래서 네트워크의 깊이를 중점으로 둔 팀이 구성되었다.

해당 모델은 2014년 GoogLenet에 비해서는 낮은 성능이지만

기존 모델에 비해 간단한 튜닝으로 높은 성능을 이끌어서 많은 인기를 끌었다.

Dataset

VGG의 데이터셋은 Imagenet을 기반으로 한 1000개의 다양한 대상에 대한 분류였다.

Make Model

VGG모델에서 뒤에붙는 숫자는 층을 의미한다.
해당 모델은 16번의 Conv와 Full connect층을 가지고 있다.

다시 사진을 보면 층이 3(입력층), 64(2), 128(2), 512(3+3)순으로 깊어짐을 알 수 있다.
(MaxPooling 제외)

깊어짐과 이어서 MaxPooling 을 통해 층의 너비를 줄이고 있다.

filter

여기서 조금 자세히 보아야할 것은

VGG가 어떤 방식으로 층을 깊게 했냐는 것인데

이게 왜 중요하냐면 층이 많은건 좋다만 너무 많으면 데이터가 적정선을 넘으면 데이터가 자기 본래의 특성을 잃어버린다는 단점이 있다.

이를 해결하기 위해 VGG는 3 x 3이라는 매우 작은 사이즈의 필터를 이용하여 줄여나갔다.

이는 7 x 7 사이즈의 데이터에 3 x 3을 두번쓴 것이 5 x 5를 한 번 쓴 것보다 효율적임을 밝혀내면서 그 효율성을 인정받았다.

(FILTER_SIZE - 1) 을 뺀 값이 output인데 이로 따지면

3 x 3 사용

7 x 7 -> 5 x 5 -> 3 x 3

5 x 5 사용

7 x 7 -> 3 x 3

이런 모습이다.

여기서 효율적인 점은 3x3 필터를 두번 사용한 것은 18개의 가중치를 가진다는 것이고

5x5를 한 번 사용하는 것은 25개의 가중치를 가진다는 것이다.

이런 연유로 18개의 가중치를 조정하는것이 25개를 조정하는 것보다 시간대비 효율적이며
또한, 층이 여러개라는 것은 9 x 9개의 다양한 조합으로 사용할 수 있다는 것도 의미한다.

이로써 VGG는 모델에 대한 이해를 바탕으로 조그만 변화로 시작해서 좋은 성능을 이끌었다.

profile
코린코린이

0개의 댓글