Hello Computer Vision

GoogleNet(2014) 구조 리뷰 본문

딥러닝

GoogleNet(2014) 구조 리뷰

지웅쓰 2022. 10. 23. 22:28

저번 VGGNet 에 이은 GoogleNet이다.

이 모델은 구글에서 2014년에 발표한 모델이며 Imagenet대회에서 93.3%의 정확도를 기록하였다.

모델의 특징이라고 하면은 Inception 모듈을 추가한 모델이라고 할 수 있다.

모델의 구조는 다음와 같다. 

단순히 보았을 때 이전 모델들과 비교했을 때 확연히 복잡한 구조를 가지고 있는데 이를 이해하기 위해서는

모델에서 많은 부분 차지하고 있는 Inception모듈을 이해해야한다.

 Inception 모듈의 구조는 다음와 같다.

이전 AlexNet, VGGNet 에서는 모두 일방향으로 Layer들이 연결이 됐다면 여기서는 이전 Layer에서 여러 개의 CNN블럭들이 나뉘어져 받는 것을 알 수 있다.

모듈을 이렇게 구조화한 이유는 한마디로 다음과 같다.

'어떤 커널 사이즈를 사용해야 좋을지 모르겠으니 여러개를 써서 연결하자' 라고 요약할 수 있겠다.

물론 여기서 각각 1x1, 3x3, 5x5 의 커널을 사용한만큼 이미지의 크기가 달라지는 부분은 stride와 패딩을 각각 다르게해

맞춰줄 수 있다. 또한 여기서 또 눈여겨 볼 특징은 1x1의 커널사이즈이다. 

이미지를 보면 알 수 있듯이 1x1 CNN을 사용하면 연산량을 줄일 수 있다는 것을 확인할 수 있다.

여기서 하나 궁금한 점이 생겼다.

지금까지 이미지 분류 모델들을 구성할 때 항상 이미지의 크기를 줄이는 것과 동시에 피쳐맵을 16, 32, 64, 256... 이렇게 늘려가는 과정이 있었는데 왜 여기서는 128 , 64로 줄이는 과정을 택하고 있을까? 

이 물음의 답에 대해서는 overfitting과 차원축소라고 말한다.

과적합을 일으킬 수 있는 너무 많은 피쳐맵은 피함과 동시에 차원축소를 통해 해당 이미지의 특징을 적은 피쳐맵의 개수에 담는 것이다. 

그리고 GoogleNet의 구조를 다시 한번 올라가서 보자면 맨 마지막에만 분류기(노란색 네모)가 있는 것이 아닌 중간 중간에 있는 것을 확인할 수 있고 이는 총 2개의 분류기가 추가로 있다.

이렇게 추가로 단 이유는 gradient vanishing 문제와 관련이 있다.

일반적으로 층의 깊이가 깊어질 수록 성능이 좋다고 생각해서 층을 깊게 쌓지만 이는 훈련 과정에서 backpropagation을 수행하면서 초반부의 Layer들의 gradient가 소멸되는 gradient vanishing 문제가 발생한다. 이러한 문제점을 GoogleNet에서는 중간중간 보조 분류기를 설치해 훈련할 때 이러한 문제점을 조금이나마 해결하고 도움이 될 수 있도록 한 것이다. 물론 이 분류기는 훈련할 때만 사용하고 실제 이미지를 분류할 때는 제거한다고 한다.

 

정리 : GoogleNet에서는 Inception모듈을 사용하였고 gradient vanishing, over fitting 문제를 해결하기 위해 1x1 커널 사이즈, 보조 분류기와 같은 기법들을 사용하였다.

틀린 점 있다면 언제든 지적바랍니다.