1. Convolution Neural Network개념
1-1. 개념
Convolution Neural Network란? 인간이 눈으로 물체를 인식하는 것을 모방하여, 컴퓨터가 이미지를 처리하는 기술
인간이 물체를 인식하는 과정을 Convolution 연산을 통해 모방
이를 확장 및 응용하여, 컴퓨터에게 이미지를 처리할 수 있도록 하는 기법
1-2. 간단 구조 및 처리원리
CNN의 구조는 크게 Feature Extractor와 Classifier로 구성되어 있음
1) Feature Extractor란 이미지의 영역들에서 특징을 추출하는 Convolution, Pooling으로 구성
2) Classifier는 추출된 특징들로 실제 클래스를 분류하는 Fully Connected Layer로 구성
CNN은 먼저 특징을 추출(Feature Extraction)을 하고, 해당 특징으로 분류(Classification)를 하는 방식으로 동작 된다.
- 기존에 N개의 X(속성값)을 input으로 받아서, M개의 label로 단순히 분류하는 Multi Layer Perceptron 앞에, Feature Extraction이라는 동작을 더 붙인 것이라고 생각하면 된다.
- Input에 해당하는 이미지 정보로, N개의 속성값으로 변환하는 작업이 메인이라고 할 수 있다.
2. CNN의 구조
2-1. Feature Extractor : 이미지의 특징을 추출
- Convolution 연산과 Polling 연산으로 구성되는데, Convolution은 이미지의 특징을 추출하는 역할이고, Pooling은 위치적 특성을 남겨두고, 파라미터를 줄여주는 역할을 수행함
- Convolution 연산 : 네트워크를 중첩할수록 점점 더 고차원의 추론 능력을 가지게 됨
> 네트워크를 중첩할수록, 점점 더 고차원의 추론능력을 지니게 됨
> 이미지를 N개의 특성값으로 변환하는 가장 하위수준의 방법은 픽셀 단위로 쪼개서 픽셀수만큼 이미지 특성값으로 개별의 픽셀값을 반환하는 것이다.
> 그러나 Layer를 중첩하게 되면, 더 많은 경우의 수를 만들 수 있게 되고, Egde별 특성값으로 만들 수 있다.
Pixels -> Edges -> Object parts -> Objects
- Pooling 연산 : 이미지 축소(Down Sampling)
224x224이미지를 112x112 이미지로 축소 가능, 정보를 단순화
2x2 Max Pooling 연산을 하면, 4x4 이미지를 2x2 이미지로 만들 수 있다. 데이터 손실은 있겠지만, 유관상 별 차이는 없다.
2-2. Classifier
- Feature Extractor 이후에는 Flatten 작업을 수행한 후, Fully Connected Layer를 연결함
- 추출한 특징 정보를 활용하여 이미지의 class를 분류할 수 있도록 Fully Connected Layer가 사용
- Fully Connected Layer의 경우, Output의 값은 분류를 위한 Class의 갯수와 동일
- Activation Function은 softmax를 사용하여야 함
3. CNN의 데이터셋 구성
Tensorflow 상에서 이미지 분류를 위한 데이터셋 구성은 크게 2가지 존재
3-1. Tensorflow Dataset 패키지 : load_data() 함수를 이용하여 손쉽게, Train, Test 데이터 구성 가능
3-2. ImageDataGenerator : 자동으로 이미지 데이터를 생성해주는 기능인 듯?
4. CNN 모델 네트워크 설계 Tip
CNN은 Feature Extractor와 Classification으로 구성됨
- Feature Extractor의 경우 Conv2D, Maxpooling 레이어로 구성되는데, 각각의 레이어를 번갈아서 총 3~4개의 계층으로 구성하면 괜찮은 성능이 나온다.(이미지를 적당하게 특성값으로 분류해 낸다)
- Conv2D의 Filter는 계층이 쌓일수록 늘릴수록 좋음
- Maxpooling의 경우, 2x2 Filter 사이즈를 유지하는게 좋음(너무 filter size를 크게하면, 데이터 손실이 크르모, 모델의 성능이 충분히 나오지 않을 수 있으므로 유의해야 함)
- Classification의 경우, Flatten 이후, Dense 레이어로 구성
- 마지막 Output Layer를 제외하고, Dense Layer를 1~3 계층으로 구성하면 충분하다.
(실질적인 분류 성능을 담당하는 부분이지만, 너무 깊은 계층으로 설계하면 과대적합(overfitting)의 가능성이 있음
'Certificates' 카테고리의 다른 글
[TDC] Time Series Forecasting 개념 (0) | 2021.05.25 |
---|---|
[TDC] Natural Language Understanding 개념 (0) | 2021.05.25 |
[TDC] Multi Layer Perceptron 개념 및 실습 (0) | 2021.05.25 |
[TDC] TDC 시험 준비 전략 및 환경구성, TensorFlow 개요 (0) | 2021.05.25 |
최근댓글