이번에 소개할 논문은 2017년에 나온 Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 입니다. 저자는 Szegedy 입니다.
Inception-v1(GoogLeNet), Inception-v2, v3은 이미지 분류 대회에서 항상 좋은 성적을 거둬왔습니다. Inception 계열의 특징은 적은 파라미터수를 갖지만 모델이 다소 복잡합니다. 이 복잡성 때문에 VGGnet이 GoogLeNet보다 흔하게 사용되었죠. inceptio-v1에서 개선된 v4에는 어떤 점이 변화되었는지 살펴보겠습니다.
이 논문에서 Inception-v4와 Inception-ResNet을 소개합니다. Inception-v4는 Inception 신경망을 좀 더 효과적으로 넓고 깊게 만들기 위해 고안되었습니다. Inception-v3보다 단순하고 획일화된 구조와 더 많은 Inception module을 사용합니다. Inception-ResNet은 Inception-v4에 residual connection을 결합한 것입니다. 학습 속도가 빨라졌다고 합니다.
Inception-v4
Inception-v4는 이전 버전에서의 단점을 개선하고, inception block을 균일하게 획일화했습니다.
Inception-v4의 전체 구조입니다.
Stem, Inception-A, inception-B, inception-C, reduction-A, reduction-B 로 구성되어 있습니다. 각 모듈이 어떻게 이루어져 있는지 확인하겠습니다.
각 모듈을 살펴보기 전에, 표기법을 알아둬야합니다. V표시는 padding을 적용하지 않은 conv 입니다. 해당 레이어를 통과하면 피쳐사이즈의 크기가 축소됩니다. V표시가 없다면, zero-padding을 적용하여 입력과 출력의 피쳐맵 크기가 동일합니다.
Stem
Inception-A
Inception-B
Inception-C
Reduction-A
Reduction-B
Inception-ResNet
Inception network와 residual block을 결합한 Inception-ResNet입니다. Inception-ResNet은 v1버전과 v2버전이 있습니다. v1와 v2는 전체 구조는 같지만, 각 모듈에 차이점이 있습니다. stem와 각 inception module에서 사용하는 filter수가 다릅니다.
inception-resnet-v1은 inception-v3와 연산량이 비슷하고, inception-resnet-v2는 inception-v4와 연상량이 비슷합니다.
Inception-ResNet-v1와 v2는 전체 구조는 아래와 같습니다. 하지만 사용하는 stem과 inception-resnet block이 다릅니다.
각 블락을 살펴보겠습니다.
Stem
v2는 기존 inception-v4에서 사용하는 stem을 활용합니다.
Inception-resnet-A
마지막 1x1 conv에서 채널수가 다릅니다. Linear은 활성화함수를 사용하지 않은 것을 의미합니다.
Inception-resnet-B
Inception-resnet-C
reduction-A
v1, v2 둘다 같은 reduction-A 모듈을 사용합니다.
reduction-B
Results
(1) inception-v3와 inception-resnet-v1 학습 곡선 비교
inception-v3와 inception-resnet-v1의 연산량이 비슷하기 때문에, 둘을 비교합니다.
(2) inception-v4와 inception-resnet-v2 학습 곡선 비교
inception-v4와 inception-resnet-v2의 연산량이 비슷하기 때문에 둘을 비교합니다.
(3) 성능 비교
참고자료