ML study > CNN architecture > GoogLeNet
1. GoogLeNet
- AlexNet의 등장이후 다양한 방식의 딥러닝 network들이 연구되었고 2014년에는 조금 더 deep 해진 구조의 network이 제시되기 시작했다. GoogLeNet은 2014 ILSVRC에서 1위를 차지하였으며 10 layer 미만이었던 기존 network에서 22 layer까지 높였고 에러 rate 역시 대폭 낮추는 성과를 얻었다.
2. Inception module
-
일반적으로 model이 deep해지게 되면 activation 함수를 거치면서 보다 복잡한 문제를 해결할 수 있게 된다. 하지만 데이터가 한정되어 있는 경우라면 training 데이터에만 너무 특화되어 학습이 되어 test error는 오히려 높아지게 되면 overfitting 문제가 발생하게 된다. 더불어 연산량까지 엄청나게 증가할 수 있다.
-
이러한 문제를 해결하기 위해 GoogLeNet 개발자들은 Inception module을 제안한다.
- 우선 previous layer에서 보다 다양한 feature를 추출하기 위해서 1x1, 3x3, 5x5 convolution과 3x3 maxpooling layer를 병렬로 통과시켰다.
- 하지만 이러한 구조의 layer가 deep해지면 연산량의 급격한 증가가 발생하기 때문에 3x3, 5x5 convolution 앞에 1x1 convolution 을 적용해 feature map을 줄여주었다. 이로써 기존의 구조를 유지하면서 연산량을 줄일수 있게 만들었다.
3. GoogLeNet 구조
- GoogLeNet에서는 Inception module을 9개를 사용하여 모델의 구조를 위와 같이 design하였다. 이 때 파란색 유닛은 convolution layer, 빨간색은 max pooling layer, 노란색 unit은 softmax를 나타낸다.
3.1 Auxiliart classifier
-
GoogLeNet에서 특이한 점은 Inception module이라는 개념을 도입하여 여러번 쌓았다는 점도 있지만 softmax classifier가 마지막 단에만 있는 것이 아니라 중간 layer에서도 두번 나오는 것을 볼 수 있다.
-
아무래도 layer가 깊어질수록 gradient vanishing 문제가 발생할 수 있으며 이로 인해 학습을 진행할수록 결과가 더 나빠지게 될 수도 있다.
-
따라서 저자는 중간 layer에 auxiliary classifier를 만들어 vanishing gradient 문제를 해결하였고 보다 나은 결과를 얻었다고 한다.
-
이후 test 시에는 최종단의 classifier만을 사용한다.
3.2 Global average pooling
-
그 동안의 network들은 convolution을 거쳐 나온 feature map을 dense layer를 여러번 통과시켜 최종적으로 원하는 size의 softmax output을 출력으로 나오는 구조였다.
-
반면 global average pooling은 단순히 convolution feature map에 대하여 평균값을 취해 flatten 해주고 나온 값을 dense layer 한 번만 통과시켜 softmax 결과가 나오게 끔 만든다. 이러한 pooling layer를 classifier에 전에 적용시킴을써 GoogLeNet은 망이 깊어짐에도 불구하고 parameter 개수를 줄였다.
4. Trainin/Test
-
Training 시 aspect ratio를 [3:4, 4:3] 의 범위를 유지하면서 원본 이미지의 8~100% 해당하는 다양한 크기를 training에 사용하였으며 photomettric distortion을 통해 데이터를 늘렸다고 한다.
-
Test 시에는 256, 288, 320, 352 scale의 이미지에서 3개의 정사각형이미지를 취하고 여기서 코너와 센터에 대해 6개 이미지를 샘플링한 뒤 좌우 반전 시킴으로써 144개의 테스트 이미지를 만들어냈다고 하며 이 결과에 대해 voting 함으로써 최종 decision을 내렸다.
4. Classification 결과
- 2014 ImageNet classifcation에서 1위를 차지하였으며 6.67% 의 에러율로 이전 network들에 비해 상당한 성능 향상을 이루었다.
Reference
[1]: GoogLeNet
댓글남기기