구조
GoogLeNet은 22개의 층으로 이루어져 있습니다.. 파란색 블럭(Conv)의 층수만 세보면 22개의 층입니다. 겉으로 보기에 다른 모델보다 엄청 복잡해 보입니다. 하나하나 뜯어보겠습니다.
Inception 모듈
위의 뭉텅이들이 전부 Inception 모듈들입니다. 이제 내부 구조를 살펴볼까요??
내부 구조는 이렇습니다.
결합
- 1x1 Conv
- 1x1 Conv -> 3x3 Conv
- 1x1 Conv -> 5x5 Conv
- 3x3 max pooling -> 1x1 Conv
모든 결과를 채널을 기준으로 결합합니다. 결합 함으로써 여러가지 필터를 한꺼번에 합쳐 다양한 Feature Map을 가져올 수 있습니다. 근데 여기서 의아해 하실분들이 있습니다. 1, 4번의 구조는 상관이없는데 2, 3번의 구조를 1x1Conv -> 3x3 Conv가아닌 바로 3x3 Conv를 적용하면 되는거 아닌가?? 라고말이죠, 아래의 그림을 보면 1x1 Conv를 뺀 구조입니다.
(a)구조와 (b)구조가 있는데 b구조가 더 간결해 보입니다. 하지만 이제 1x1 Conv의 개요를 알면 이야기가 달라집니다. 아래에서 1x1 컨볼루션을 살펴보겠습니다.
1x1 컨볼루션
1x1 커널을 적용하면, 기존 이미지에서 변화가 없는거 아닌가?? 라고 생각하시는 분들이 있을것입니다. 아래의 그림을 보겠습니다.
4 x 4 x 16 Feature Map에 1x1 커널을 한개 적용 했을때 4 x 4 x 1입니다. 그럼 여기서 이전 채널수 그대로 적용하면 아래와 같은 그림이 나옵니다.
자 이제 여기서 Activation 활성화 함수로 ReLu를 함으로써 비선형성을 증대 시킬수 있습니다. 그리고 같은 채널로 하면 파라미터수가 감소하지 않으므로 채널수 까지 낮춰버립니다. 낮춘 채널수로 3x3이나 5x5와 컨볼루션 연산을 진행하기 때문에 1x1 Conv -> 5x5 Conv가 그냥 5x5 Conv만 적용한 것보다 파라미터수가 더 작고 ReLu함수를 적용함으로써 비선형성을 증대 할 수 있습니다. 진짜 파라미터수가 줄었는지 확인해보겠습니다.
1x1을 적용한 컨볼루션은 2432, 적용하지 않은 컨볼루션은 4608, 이렇게 2배 까지는 차이가 나진 않지만 예시로 봐도 확연히 차이가 난 것을 볼 수 있습니다. 그리고 ReLu도 적용하면서 비선형성을 증대할 수 있구요. 파라미터가 줄었으니 당연히 연산량도 많이 줄었을 것입니다.
'컴퓨터비전 > CNN' 카테고리의 다른 글
[딥러닝] EfficientNet 모델의 개요 및 특징 (0) | 2022.03.20 |
---|---|
[딥러닝] ResNet 모델의 개요 및 특징 (0) | 2022.03.20 |
[딥러닝] VGG 모델의 개요 및 특징 (0) | 2022.03.17 |
[딥러닝] AlexNet 모델의 개요 및 특징 (0) | 2022.03.17 |
[딥러닝] Albumentations의 데이터 증강 이해 (2) | 2022.03.17 |
댓글