본문 바로가기

Data/논문 & 모델 정리

[Model] InceptionV3

반응형

Inception v3

  • 참고 자료
  • 모델 컨셉
    • 모델 크기를 증가시키면 정확도와 연산량이 증가함. 하지만 작은 기기(ex. Mobile)나 제한된 메모리에서 활용해야할때는 모델 크기증가는 단점으로 작용됨
    • 따라서, 해당 모델은 Convolution 분해를 활용해서 연산량을 최소화 되는 방향으로 모델의 크기를 키우는데 집중함. Inception-v3는 적은 파라미터를 가진 42-Layer의 깊은 신경망으로 VGGNet과 비슷한 연산량을 갖게됨.
    • 기타 모델들과의 성능 비교
      •  
  • Convolution분해?
    • 이거는 위에서 설명한 VGGNet이랑 비슷한데, “7 * 7 필터를 한번 하는것보단 3 * 3 필터를 3번하는것이 파라미터 갯수가 적다”는걸 써놓았다.
    • 3 *3 Convolution을 2번 사용하여 5 * 5 Convolution을 분해한다고할 때. 다음과같이 두가지 상황을 나눠서 실험을 진행하였음
      • 첫번째 3*3은 linear activation, 두번째 3*3은 ReLU activation (A)
      • 둘다 ReLU activation (B)
    • 결론적으로는 B의 성능이 더 좋다고 나옴
    • 따라서, 3 * 3 convolution보다 큰 filter는 3 * 3 convolution으로 분해해서 사용하는것이 좋음
    • 그렇다면 무조건 3 *3 으로만 분해를 해야하는걸까?
      • 저자는 다양한 시도를 진행하였음. 결론적으로는 2*2로 분해하는것보다는 n*1 비대칭 convolution으로 분해하는것이 더 효과가 좋았다고함
      • 즉, 3*3을 1*3, 3*1으로 분해하는것임
  • 효율적인 그리드 크기 축소
    • CNN은 Feature Map의 Grip 크기를 줄여가는 과정을 Pooling(ex. MaxPooling, AvgPooling)을 이용하여 진행.
    • Pooling은 항상 Convolution과 함께함
    • 그렇다면 Pooling, Convolution중 어느것을 먼저해야 효율이 좋을까?
    • 결론적으로는 둘다 좋은 방식은 아님
      • Polling을 먼저하게되면, Representational Bottleneck이 발생함 (정보손실).
      • Convolution을 먼저하게되면, 많은 연산량을 요구하여 비효율적
    • 따라서, InceptionV3에서는 이 두개를 병렬로 진행하여 이후에 다시 합치는 방향으로 구조를 설계
      • 이렇게 진행하면, 연산량도 줄이고, Representational Bottleneck을 줄여줌
  • InceptionV2와 어떤점이 다른가?
    • 구조상 그렇게 큰 차이는 없고, 아래 차이점들이 존재
      • RMSprop
        • Optimizer변경. InceptionV2에서는 SGD Optimizer사용함
      • Label Smoothing
        • one-hot encoding으로 한것이 아닌, 정답이 1이라고하면 1에 +로 아주 작은 수를 더해줌.
      • Factorized 7*7
        • 7*7필터를 3*3필터 3개로 변환함
      • BN-auxiliary
        • 마지막 FC(Fully Connected) Layer에 Batch Normalization을 적용함
반응형

'Data > 논문 & 모델 정리' 카테고리의 다른 글

[Model] SqueezeNet  (0) 2022.07.10
[Model] GoogLeNet  (0) 2022.07.10
[Model] VGGNet  (0) 2022.07.10
[Model] ResNet  (0) 2022.07.10
[Model] SSD (Single Shot Detection)  (0) 2022.07.10