반응형
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을 적용함
- RMSprop
- 구조상 그렇게 큰 차이는 없고, 아래 차이점들이 존재
반응형
'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 |