[논문 리뷰] Going deeper with convolutions (GoogLeNet)

PROLCY·2024년 3월 6일
0

인공지능

목록 보기
9/37

오늘은 Going deeper with convolutions (GoogLeNet)에 대한 간단한 리뷰이다.

Motivation and High Level Considerations

모델의 사이즈를 늘리는 것은 성능 향상에 가장 간단한 방법이지만, 데이터 수가 많지 않다면 오버피팅이 될 확률이 매우 높다. 또한 학습과 추론 과정에서 계산 자원을 많이 먹는다는 단점도 있다. 그래서 Inception architecture라는 새로운 구조를 구성하였다.

Architectural Details


(a)와 같이 이전 레이어의 아웃풋을 convolutional layer와 pooling layer에 태워서 각각의 아웃풋을 concat하는 방식이 inception module이다. 하지만 (a)와 같이 구성할 경우, 이전 레이어 아웃풋의 채널이 커질 경우, 최종 아웃풋은 각각의 convolutional layer와 pooling의 concat이기 때문에 아웃풋의 채널이 걷잡을 수 없이 커진다. 따라서 (b)와 같이 1x1 convolutional layer를 통해 차원을 줄여서 사용한다.
이 구조를 사용함으로써 계산 복잡성을 줄이고, 여러 스케일에서 conv를 적용하고 concat하면서 유의미한 특징을 뽑아낼 수 있는 장점을 가지게 된다.

GoogLeNet


GoogLeNet의 구조는 위와 같다. 활성화 함수로는 ReLU를 사용하고, 224x224 이미지를 인풋으로 받는다.
다만 위와 같이 구성하면 문제가 하나 있는데, layer가 많다보니 역전파가 잘 전달되지 않을 수 있다는 것이었다. 따라서 이 문제를 auxiliary classifier를 추가함으로써 해결한다. layer의 중간에 auxiliary classifier를 달아놓고, 학습 때 이것에도 loss를 계산해 역전파를 수행하는 것이다. 이렇게 함으로써 모델이 깊어 발생하는 gradient vanishing 문제를 해결하려고 하였다.


최종적인 구조는 위와 같다. 중간 중간에 auxiliary classifier를 확인할 수 있다.

Results


classification에서의 결과는 위와 같다.

object detection에서의 결과는 위와 같다.

후기

오늘은 GoogLeNet에 대해 간단히 알아보았다. inception module의 아이디어가 참신하다는 생각이 든다. 특히 auxiliary classifier를 달아줌으로써 gradient vanishing 문제를 해결하려고 한 것도 매우 기발하다는 생각이 들었다.

0개의 댓글