

CNN은 Conv로 특징 추출 → ReLU로 복잡성 추가 → Pooling으로 요약 → FC로 최종 판단하는 구조
입력(input)
예-32 * 32 RGB 이미지
Convolution Layer (Conv Layer)
→ 필터를 적용해서 특징 뽑기 = 특징(엣지, 모양) 추출
Activation Function (ReLU)
→ 비선형성 추가 (복잡한 패턴 학습 가능하게)
Pooling Layer (MaxPool / AvgPool / GAP)
→ 크기 축소 + 특징 요약(=중요한 특징만 남기기)
Pooling이란 특징을 축소/요약하는 연산이다. 피처맵의 크기를 줄이고 중요한 정보만 남기기 위한 작업이다.
왜 pooling을 쓸까?
Max Pooling은 CNN에서 가장 흔하게 쓰인다. GAP(Global Average Pooling)은 최근 모델에서 모델 경량화용으로써 FC Layer대신 많이 사용한다.

MaxPool은 강한 특징만 뽑고, AvgPool은 부드럽게 평균내고, GAP는 feature map 전체를 요약해서 최종 분류를 쉽게 만든다.
"작은 영역(예: 2x2) 안에서 가장 큰 값을 뽑아내는 pooling"
목적:

"작은 영역(예: 2x2) 안의 값들을 평균 내는 pooling"
목적:

"Feature map 전체를 평균내서 1개의 값으로 요약하는 pooling"
목적:
최신 모델(MobileNet, EfficientNet) 에서 많이 사용

반복
→ Conv → ReLU → Pooling을 여러 번 반복

Flatten Layer
→ 2D feature map을 1D 벡터로 변환 (FC로 연결하기 위해)
Fully Connected Layer (FC Layer)
→ 최종 분류기 역할 = 클래스 판단 (ex: 고양이 vs 개)
Output Layer
→ 다진분류인 경우, softmax 함수로 클래스 별 확률 출력
References
https://nafizshahriar.medium.com/what-is-convolutional-neural-network-cnn-deep-learning-b3921bdd82d5
https://www.analytixlabs.co.in/blog/convolutional-neural-network/