01.CNN
CNN(Convolution Neural Network)
: Convolution연산을 통해 이미지의 지역정보(Region Feature, Graphic Feature)를 학습하는 Neural Network
- Convolution Layer : 공간정보(Region Feature)를 뽑아내기 위한 계층
- Pooling Layer : 정보손실(Feature Dimension)을 줄이기 위한 계층
- Fully Connected Layer : 최종적인 분류를 위한 계층
MLP(Multi Layer Perceptron)
: Perceptron으로 구성된 Layer를 여러개 쌓아 올린 형태로 구성되어 있는 모델
MLP | CNN |
---|
이미지 픽셀 값을 Flatten 시켜 input으로 사용 | 이미지의 지역정보를 input으로 사용 |
- 데이터의 형상 정보를 유지 못 함 | - 데이터의 형상 정보 유지 |
02.CNN 구조
Convolution Layer
: Input과 Filter간의 Convolution 연산을 수행하는 Layer
- Channel
- 흑백이미지는 2차원형상의 데이터로, 1개의 채널로 구성
- 컬러 이미지는 각 픽셀을 RGB 3개의 실수로 표현한 3차원형상의 데이터로, 3개의 채널로 구성
- Fillter( = Kernel)
- 이미지의 Region 별 Feature를 찾아내기 위한 파라미터
- Weight Sharing
- Filter를 이동시킬때마다 같은 Weight를 사용(공유)하는 개념 ( 파라미터 수를 줄이기 위해 사용)
- Convolution 연산
- Filter를 일정 간격만큼 이동하여 Input과 대응하는 위치의 원소끼리 곱한 후 그 총합을 구하는 연산
➕ 공간정보를 유지하기위해 원소곱을 사용(행렬곱 행과 열이 섞여버리므로)
- Stride
- Feature를 뽑을때 Filter가 Input이미지를 돌면서 이동하는 간격
- Padding
- Convolution 연산을 수행하기 전에 데이터 주변을 특정값(ex. 0)으로 채우는것
- 주로 출력 크기를 조정하기위해 사용
- Zero Padding , Full Padding, Same Padding, Valid Padding etc.
- outputchannel=thenumberoffillter
- outputsize=strideinputsize+(2×padding)−filtersize+1
Pooling Layer
: Featuer의 가로,세로 방향 차원(Demention)을 줄이는 연산을 수행하는 Layer
- 일반적으로 Conv Layer를 거친다음 적용
- CNN의 학습속도를 향상시키기 위한 것으로 정보손실 有
- 특징
- 학습해야할 prameter가 없음 (영억에서 최대값이나 평균을 취하는 연산만 수행하기 때문)
- Channel 수는 변하지 않음
- 입력의 변화에 영향을 적게받음 (입력 데이터의 차이를 Pooling이 흡수해 사라지기 때문)
- 최근에는 사용하지 않으려는 경향
Fully Connected Layer (FC Layer)
: 이미지를 정의된 라벨(클래스)로 분류하기 위한 Layer
- 일반적인 MLP 구조와 동일
- Pooling Layer에서 나온 Feature를 Flatten시킨 후에 MLP의 Input으로 놓고 학습 진행
03.Data Augmentation
: 데이터를 임의로 변경해 데이터의 수를 늘려 다양한 Feature를 뽑는 방법
- Random Flip , Rotation, Scaling, Crop, Cutout, Cutmix etc.