주요 CNN 모델
BUT
💡 Mobilenet은 Channel Reduction, Distillation & Compression, Depthwise Seperable Convolution을 적용하여 경량 네트워크를 구현한 모델이다.
- **Depthwise Separable Convolution**
- Depthwise Convolution과 Pointwise Convolution의 조합으로 구성
- Depthwise Convolution은 입력 이미지의 각 채널에 대해 각각 따로 컨볼루션 연산을 수행한다. 따라서 입력 채널 수만큼 필터를 사용하여 특징을 추출
- Pointwise Convolution은 1x1 크기의 필터를 사용하여 Depthwise Convolution의 출력 채널을 조절하고, 다양한 특징을 합성하는 역할을 한다.
- Depthwise Separable Convolution은 일반적인 Convolution에 비해 훨씬 적은 파라미터 수를 사용하여 계산량을 줄이고, 경량화된 모델을 만드는데 사용
- Pointwise Convolution
- Depthwise Separable Convolution과는 달리, 단독으로 사용되는 컨볼루션 기법이다.
- 1x1 크기의 필터를 사용하여 입력 이미지의 각 채널에 대해 독립적으로 선형 변환을 수행
- 입력 이미지의 채널 수를 조절하거나, 채널 간 상호작용을 강화하는데 사용
- 채널 수를 줄여서 다양한 특징을 합성하거나, 모델의 표현력을 높이는데 효과적이다.
💡 두 기법 모두 딥러닝 모델에서 효율적인 파라미터 관리와 계산량 최소화를 위해 사용되는 중요한 기법이다. Depthwise Separable Convolution은 모바일 기기와 같이 제약이 있는 환경에서 모델의 크기와 성능을 균형있게 조절하는데 특히 효과적이며, Pointwise Convolution은 모델의 표현력을 높이고 복잡성을 줄이는데 활용한다.
- 표준 Convolution과 Depthwise Separable Convolution의 연산량 비교
- 표준 Convolution의 연산량
- 표준 Convolution은 입력 이미지의 모든 채널과 필터의 모든 채널 간의 모든 위치에서 연산을 수행한다.
- 따라서 입력 채널 수와 출력 채널 수, 필터 크기에 따라 연산량이 증가한다.
- 입력 채널 수: C_in
- 출력 채널 수: C_out
- 필터 크기: F(filter의 높이와 너비)
- 입력 크기: H (높이), W (너비)
- 연산량: C_in x C_out x F x F x H x W
- Depthwise Separable Convolution의 연산량
- Depthwise Convolution은 입력 이미지의 채널 수만큼 각각 독립적인 연산을 수행 → 채널 간 상호작용이 없기 때문에 연산량이 크게 감소
- Pointwise Convolution은 1x1 크기의 필터를 사용하므로 입력 채널 수와 출력 채널 수가 크게 영향을 미치지 않는다.
- 입력 채널 수: C_in
- 출력 채널 수: C_out
- Depthwise 필터 크기: F_d (Depthwise Convolution에 사용되는 필터 크기)
- Pointwise 필터 크기: F_p (Pointwise Convolution에 사용되는 필터 크기)
- 입력 크기: H (높이), W (너비)
- 연산량: (C_in x F_d x F_d x H x W) + (C_in x C_out x F_p x F_p x H x W)
- 표준 Convolution 과 Depthwise Separable Convolution 연산량 비교
result = (1/1240) + (1/3**2)
print(result) # 결과 0.1112087673611111
잘 읽었습니다. 정리가 잘 된 글이네요.