CNN은 Convolutional Neural Network의 약자로 딥러닝에서 주로 이미지나 영상 데이터를 처리할 때 쓰이며 이름에서 알 수 있다시피 Convolution 이라는 전처리 작업이 들어가는 Neural Network 모델이며
특징추출알고리즘을 사용한다.특징추출 알고리즘 사용 : 이미지나 텍스트 데이터를 conv와 pooling을 반복하여 데이터 양을 줄인 후
완전연결층 Dense로 전달해 분류작업을 실행
CNN은 Convolution과 Pooling이 한 쌍
Convolute : 특징 추출 역할
Pool : 이미지 크기를 줄여줌
CNN이 이미지특징을 뽑아 한줄로 나열해주고 Dense로 넘겨줌
결국 분류는 Dense가 해주는 것

Feature Map을 만들기 위해 Filter를 건다.
=> 원본 이미지에 합성곱(Convolute)을 하여 Feature Map을 만든다.
Feature Map : 합성곱을 통해 계산되어 얻은 출력
💡 이때 4는 다음과 같은 방식으로 계산된다.

Pool기법은 MaxPooling, Average Pool 등이 있으며 MaxPooling기법을 주로 사용한다.

Pooling을 사용하면 속도가 빨라지는데 학습 속도도 빨라지고 서비스할 때 추론 속도도 빨라지게 되는데 Pooling을 많이 사용하게 되면 데이터를 없애는 것이기 때문에 데이터 손실이 일어날 수 있어서 성능에 오히려 악영향을 줄 수 있다.
패딩은 합성곱 연산 전에 입력 데이터 주변에 특정 값을 채우는 것이며 종류는 Valid Padding, Same Padding로 나뉜다.
Padding 사용 이유 :
이미지 데이터의 축소를 막기 위해
( 초반부터 이미지가 너무 작아져 버리면 더 깊게 학습시킬 데이터가 부족해지는 현상이 만들어)
zero padding : image 주위를 0으로 둘러주는 과정
사용이유 : 외곽부분도 제대로 학습시키기 위해

Valid Padding : padding하지 않는 것을 의미.
Same Padding : output image가 input image의 크기와 동일 한 것
stride는 필터적용시 이동 간격을 의미한다.
일반적으로 필터(커널)가 input image에서 1픽셀만큼 이동하면서 계산하는데, stride를 주게되면 필터(커널) 이동시 해당 픽셀 만큼 이동하면서 연산한다.
