goormNLP [Convolutional Neural Network]
Auspice by Goorm, Manage by DAVIAN @ KAIST
Lecture: Convolutional Neural Network (CNN)
2022-02-15
이번 시간에는 Computer Vision에서 가장 많이 쓰이는 딥러닝 모델 CNN에 대해 알아보고자 한다.
CNN 특징
- 인간의 시신경 구조를 모방한 기술.
- 이미지를 인식하기 위해 패턴을 찾는데 유용함.
- 사람이 여러 데이터를 보고 기억한 후에 무엇인 지 맞추는 것과 유사함. (filter 반복)
- 이미지의 공간 정보를 유지한 채 학습을 하는 모델
CNN 원리
Filtering :
The math behind the match.
- Line up the feature and the image patch.
- Multiply each image pixel by the corresponding feature pixel.
- Add them up.
- Divide by the total number of pixels in the feature (optional)
- 각 필터에 있는 가중치를 이용하여 feature map을 만듬.
Stride :
필터의 이동량을 의미함.
CNN을 구현할 때 합성곱 계층의 stride는 주로 1로 설정됨.
왼쪽은 stride가 1인 경우, 오른쪽은 stride가 2인 경우.
Padding :
padding은 입력 이미지의 가장자리에 특정 값으로 설정된 픽셀들을 추가함으로써,
입력 이미지와 출력이미지의 크기를 같거나 비슷하게 만드는 역할을 수행함.
왼쪽은 padding을 적용 안한 경우, 오른쪽은 zero-padding을 적용한 경우.
Pooling :
Shrinking the image stack.
- Pick a window size. (usually 2 or 3)
- Pick a stride. (usually 2)
- Walk your window across your filtered images.
- From each window, take the maximum value.
- 이미지를 구성하는 요소들의 이동 및 회전 등에 의해 CNN의 출력 값이 영향을 받는 문제 완화.
- pooling layer를 통하면 이미지의 크기가 크게 줄어들기 때문에, 모델의 parameter 또한 크게 감소함.
Calculate output :
-
W = Input size
- F = Kernel size
- P = amount of zero padding
- S = Stride value
example)
W = [64, 1, 28, 28] <== [batch_size, channel_size, input_dim, input_dim]
parameter ==> W = 28, F = 7, P = 0, S = 1
fixed_W = [64, 1, 22, 22]
댓글남기기