VGGNet는 왜 3*3 convolution을 사용했을까?
1. VGGNet
요즘도 많이 쓰인다
AlexNet보다 더 깊은 16층 19층 (11층도 있는듯?)
그런데 AlexNet보다 더 간단한 구조를 사용했다.
구체적으로 Local Response normalization을 사용하지 않았고
비교적 작은 3*3 convolution layer와 2*2 max pooling layer만 사용했다
작은 size의 filter를 더 깊게 쌓으면서 input image의 receptive field를 더욱 크게 가져갔다.
심지어 filter size가 작아지면서 AlexNet보다 parameter가 작아졌다
그런데 더 깊게 쌓으면서 더 복잡한 non linear 함수관계를 학습할 수 있게 되었다
이 말은 image의 많은 영역을 고려하여 output을 출력한다는 것
더 깊지만 더 간단하여 기본적인 성능도 AlexNet보다 좋고
특별히 fine-tuning을 하지 않아도 output에 대한 다른 task로의 일반화 성능도 더 좋다고 알려져있다.
1*1 convolution은 그것의 진정한 의미를 위해 사용했다기 보다는 fully connected layer를 위해 활용
ReLU를 사용했고 input image는 224*224이고 3개의 Fully connected layer를 사용하여 AlexNet의 기본 세팅은 유지했다
dropout 사용
input image data의 각 채널 R,G,B의 pixel에 전체 image 데이터의 R,G,B pixel의 평균 값을 빼줬다는데
평균을 0으로 만드는 normalization을 수행함으로써 bias를 감소시켜
학습과정에서 평균이 큰 특정 데이터의 영향력을 줄이고 gradient의 안정성을 가져온다
2. 왜 VGG는 3*3 convolution만 사용했는가
결론적으로 말하면 3*3 convolution을 여러번 사용하면 더 큰 크기의 convolution을 적게 사용한 것과 동일한 receptive field를 얻을 수 있기 때문이다.
receptive field란 하나의 output pixel을 얻기 위한 kernel이 input과 겹쳐지는 영역의 크기로 당연하지만 kernel 크기와 비례할것
3*3 convolution layer 2번과 5*5 convolution layer 1번 사용하는 것은 receptive field가 같다
위 그림을 보면 3*3 kernel을 2번 사용하면 5*5kernel 1번 사용하는 것과 동일한 효과를 얻는다
그러면 둘은 무슨 차이가 있는가? parameter 수가 압도적으로 줄어든다
network가 deep해지면서 parameter 수가 커질 것 같지만 오히려 parameter 수는 엄청나게 줄었다
이것이 11*11*3으로 시작한 AlexNet과 결정적인 차이
receptive field 측면에서 네트워크를 깊게 구축하면서 오히려 parameter 수는 감소시켜
큰 kernel을 사용할때와 동일한 효과를 얻는다
'딥러닝 > Computer Vision' 카테고리의 다른 글
1*1 convolution은 왜 중요한가? (0) | 2022.02.08 |
---|---|
GoogleNet의 핵심 아이디어 inception module, auxiliary classifier, 1*1 convolution 알아보기 (0) | 2022.02.08 |
AlexNet의 핵심 아이디어 (0) | 2022.02.06 |
CNN(Convolutional Neural Network)은 왜 등장했을까? (0) | 2022.01.31 |
image classification 문제 이해하기 (0) | 2022.01.27 |