Convolution Neural Network란 시각적 이미지 분석에서 가장 일반적으로 사용되는 인공신경망의 한 종류로, 입력 이미지로부터 특징을 추출하여 입력 이미지가 어떤 이미지인지 클래스를 분류합니다.
- 다양한 이미지 처리에 유용한 알고리즘이고 기존에 image 인식에 사용하던 Affine 계층에 바로 이미지를 넣는 FCNN이 가지고 있는 한계를 개선하기 위해 개발되었습니다.
FCNN은 input image를 행으로 flatten 하여 이것을 입력으로 넣어주는데 이때 이미지의 형상이 flatten으로 소실되어 픽셀들 간의 상관관계를 잃게 된다는 문제가 있습니다.
CNN의 구조는 FCNN의 문제점을 해결하기 위해 앞부분에 convolution layer와 pooling layer를 추가한 방법입니다.
전반부에서 conv layer를 통해 특징을 추출하고 후반부에서 추출된 특징을 통해 이미지 분류를 진행합니다. 이렇게 특징을 추출해주는 역할을 Filter가 해주는데 cos 유사도를 통해 해당 부분에 우리가 원하는 feature가 존재하는지 여부를 알 수 있습니다.
convolution 연산이 끝난 뒤 나오는 결과물을 feature map이라고 부르고 filter가 움직이는 거리는 stride라고 말합니다. Padding은 input 이미지 가장자리에 특정 값으로 설정된 픽셀을 추가하여 input과 output의 크기를 같게 만들고 edge나 모서리 부분의 픽셀 정보를 충분히 활용할 수 있게 해주는 역할을 합니다.
CNN에서는 default로 ReLU를 사용합니다. 기울기 소실 문제를 방지해주기 때문입니다.
그 다음 Pooling을 통해서 각 부분의 대표값들을 뽑아내는 과정을 거칩니다. 이렇게 feature를 얻는 과정이 끝나면 FC 계층으로 추출된 feature 정보들을 넣어 분류합니다.
'BOAZ > 데이터 분석' 카테고리의 다른 글
6. GAN and Reinforcement Learning (0) | 2022.08.26 |
---|---|
5. RNN and LSTM (0) | 2022.08.24 |
3. Ensemble and Random Forest (0) | 2022.08.09 |
2. Decision Tree and SVM (0) | 2022.08.03 |
[핸즈온 머신러닝] 3장 (0) | 2022.07.31 |