BraveTiger
CH6. 딥러닝 - CNN(Convolutional Neural Networks) 본문
CNN(Convolutional Neural Networks): 합성곱신경망
Convolution이라는 전처리 작업이 들어가는 Neural Network 모델
- CNN은 이미지를 그대로 받음으로써 공간적/지역적 정보를 유지한 채 특성(feature)들의 계층을 빌드업
- 이미지 전체보다는 부분을 보는 것, 그리고 이미지의 한 픽셀과 주변 픽셀들의 연관성을 살리는 것
※ CNN?
DNN은 기본적으로 1차원 형태의 데이터를 사용
- 만약 이미지가 입력값이 되는 경우
- 이것을 flatten시켜서 한줄 데이터로 만들어야 하는데 이 과정에서 이미지의 공간적/지역적 정보(spatial/topological information)가 손실
- 또한 추상화과정 없이 바로 연산과정으로 넘어가 버리기 때문에 학습시간과 능률의 효율성이 저하
CNN의 구조
Input layer ▶ Convolution layer ▶ Flatten layer ▶ Fully Connected layer ▶ Output layer
- Input layer
- 이미지를 3차원 정보의 입력
- Convolution layer
- feature extraction을 수행하는 layer
- 내부에 Convolution layer + Relu를 통해 의미가 없는 특징을 zero화
- pooling layer: feature개수 축소, 중요한 feature만 유지
- Flatten layer
- Convolution Layer와 Pooling Layer를 반복적으로 거치면서 주요 특징만 추출
- 이 때 추출된 주요 특징은 2차원 데이터로 이루어져 있지만 분류를 위한 학습 레이어에서는 1차원 데이터 필요
- Flatten Layer가 2차원 데이터를 1차원 데이터로 바꾸는 역할
- Fully Connected layer
- 비선형 조합 학습 및 분류
- output layer
Convolution Layer
- Filter(Kernel)을 적용하여 입력에 대한 특정 성분만 뽑아내는 작업
- CNN은 filter를 갱신하면서 학습
- Image에 특정 filter를 Convloution한 결과를 feature map이라함
- feature map은 Image에 적용된 filter의 개수만큼 Channel을 갖게 된다.
- n 개의 filter가 적용된 경우 n개의 Channel을 갖는다.
- filter를 순회하는 간격인 stride를 설정하여 convolution 한다.
(Zero)Padding
- Convolution layer에서 filter를 사용하여 feature map을 생성할 때 이미지 크기가 작아지는 것을 방지하여, 테두리에 filter 크기를 고려하여 0으로 채우는 작업
- 인공신경망이 이미지 외각을 인식하도록 하는 효과도 있다.
- 5x5 이미지 둘레에 0을 채워 7x7의 이미지로 만들어 3x3 filter를 적용하면 5x5의 feature map이 만들어진다.
Pooling
- Convolution layer의 Output을 Input으로 받아 feature map의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용
- Max, Min, Average pooling이 있음
- Pooling size를 Stride로 지정하며, 이 크기에 따라 줄어드는 양이 결정된다.
- 입력 데이터의 행, 열 크기는 pooling 사이즈의 배수이어야 한다.
Flatten Layer
- CNN 데이터를 Fully Connected Neural Network 형태로 변경하는 layer
- 입력 데이터의 shape 변경만 수행
- 입력 데이터의 shape가 (8, 8, 10)이면, Flatten이 적용된 출력 shape는 (640, 1)이 된다.
Fully Connected Layer
Output(Softmax) layer
- Flatten layer의 출력을 입력으로 받아 분류 클래스를 매칭시키는 layer
- 분류 작업 시행
- 입력 shape가 (640, 1)이고, 분류 클래스가 10인 경우 출력 shape는 (10, 1)이 된다.
'취업 준비 > AIVLE SCHOOL' 카테고리의 다른 글
CH6. 딥러닝 - Overfitting을 방지하기 위한 방법 (0) | 2023.04.25 |
---|---|
CH6. 딥러닝_Multi Layer Perceptron의 Overfitting (0) | 2023.04.25 |
CH6. 딥러닝(1) - 딥러닝 개요와 Keras 코드 파헤치기 (2) | 2023.04.25 |
CH6. 딥러닝_인공신경망 개요 (0) | 2023.04.25 |
AICE ASSOCIATE 후기와 팁 (0) | 2023.04.25 |
Comments