EfficientNet은 성능과 모델 크기 간 균형을 맞추기 위해 설계된 Convolutional Neural Network(CNN) 모델입니다. EfficientNet은 모델 크기를 조절하기 위한 계수들을 사용하는 Compound Scaling이라는 개념을 도입하고 있습니다. 이를 통해 모델의 깊이(Depth), 폭(Width) 및 해상도(Resolution)를 조절하여 성능을 최적화할 수 있습니다.
※ Compound scaling: 가장 최적의 width/depth/resolution의 조합을 찾아내는 것
EfficientNet 모델은 기본적으로 Convolutional Neural Network (CNN)의 구조를 따르며, 다양한 크기의 모델이 존재합니다. 이 중에서는 EfficientNet-B0, EfficientNet-B1, EfficientNet-B2 등이 있으며, 크기가 증가함에 따라 보다 복잡한 구조를 가집니다.
모델은 기본적으로 네 개의 블록으로 구성됩니다. 첫 번째 블록은 Convolutional layer, Batch Normalization, Swish activation으로 이루어져 있으며, 이후 블록은 Inverted Residual block, Depthwise Separable Convolution, squeeze-and-excitation network(SENet)를 사용하여 구성됩니다. 마지막 블록은 Fully Connected layer로 이루어져 있습니다.
Inverted Residual block은 Residual block과 비슷하지만, 레이어들이 반전된 형태입니다. Depthwise Separable Convolution은 커널 수가 적은 Depthwise Convolution과 Pointwise Convolution의 결합으로 구성됩니다. SENet은 채널에 대한 정보를 다시 조정하여, 적은 계산 비용으로 성능을 개선합니다.
EfficientNet 모델은 이미지 분류(Classification) 뿐만 아니라, 객체 검출(Object Detection), 분할(Segmentation), 인스턴스 분할(Instance Segmentation) 등의 다양한 컴퓨터 비전 작업에서도 사용됩니다. PyTorch, TensorFlow, Keras 등의 딥러닝 프레임워크에서 구현이 가능합니다.
'Data Scientist > Deep Learning' 카테고리의 다른 글
optuna를 활용해 하이퍼파라미터 튜닝하기 (0) | 2023.01.17 |
---|---|
[딥러닝] NMS (Non-Maximum Suppression) & Anchor box (0) | 2022.09.13 |
[ML] SDD(Single Shot Detector) (0) | 2022.05.12 |
[ML] One Stage와 Two Stage (0) | 2022.05.12 |
[ML] Mask R-CNN (Instance segmentation) (0) | 2022.05.11 |