-
[모두를 위한 딥러닝 시즌2][Lab 11] Convolution Neural Networks모두를 위한 딥러닝 시즌2 2021. 11. 15. 16:33
Convolution Neural Networks는 고양이에게 어떤 이미지를 보여주었을 떄 뇌에서 이미지를 부분부분 나누어서 반응하는 것에 착안해서 탄생하게 되었다.
하나의 이미지(width x hight x depth)를 입력받은 경우, filter는 자신의 크기만큼 입력을 읽어들여, 연산을 수행해서 하나의 값을 만들어낸다.
이때 연산은 'Wx + b'이고 여기에 ReLU 함수를 사용해서 ReLU(Wx+b)가 된다.
이미지 크기와 filter 크기가 주어졌을 때, output의 크기는 얼마가 될까?
이떄 필요한 개념이 stride로, filter가 이미지에서 몇칸씩 이동할 지 나타내는 수이다.
이렇게 filter를 적용하게 되면 output의 크기가 작아져서 정보를 잃는다는 문제점이 있다.
Padding
이러한 문제점을 해결하고자 보통 cnn에선 padding을 사용한다.
padding을 사용하면 output의 크기가 작아지는 것을 방지할 수 있고 모서리의 위치를 알 수 있다.
filter의 갯수를 1개 보다 많이 사용하여 연산을 진행할 수도 있다.
아래는 6개의 filter를 사용한 경우이다.
6개의 filter를 사용하면 activation map도 6개가 나온다.
이렇게 나온 activation maps를 가지고 또 convolution과 Relu를 여러번 해서 onvolution layers가 진행된다.
이런 과정을 반복하면서 중간중간에 Pooling이라는 과정이 필요하다.
Pooling layer (sampling)
convolution 과정을 거쳐서 나온 activation maps을 resizing해준다.
Max Pooling
filter 범위에 있는 값들 중 가장 큰 값만 선택한다.
Convolutional Neural Network
image classification 중에서 가장 널리 사용되는 방법이다.
3가지 종류의 layer로 구성된다.
- convolution layer
- pooling layer (feature extraction을 수행하는 곳)
- fully connected layer (classification을 수행하는 곳)
Convolution layer
32x32x3 image가 input으로 들어온 경우를 생각해보자. 여기서 3은 RGB 색상을 나타내는 값이다.
filter는 5x5x3이다.
filter가 image에서 한 칸씩 이동하면서 연산을 수행한다.
이렇게 연산을 다 수행하고 나면 Feature map(Activation map)이 한 장 나오게 된다.
만약 filter가 6개여서 연산을 6번 수행한다면 Feature map도 6장이 나오게 된다.
그럼 Output Feature map의 channel도 6이 된다.
channel이 1인 Input과 filter의 연산과정은 다음과 같다.
Input channel이 3이고 filter가 2개인 경우는 Output channel이 2가 될 것이다.
'모두를 위한 딥러닝 시즌2' 카테고리의 다른 글
[모두를 위한 딥러닝 시즌2][Lab 12] RNN (0) 2021.11.17 [모두를 위한 딥러닝 시즌2][Lab 11](2) mnist cnn keras sequential/functional/subclassing/ensemble/keras eager (0) 2021.11.16 [모두를 위한 딥러닝 시즌2][Lab 10] Relu, Weight Initialization, Dropout, Batch Normalization (0) 2021.11.10 [모두를 위한 딥러닝 시즌2][Lab 9] Neural Nets for XOR (0) 2021.11.09 [모두를 위한 딥러닝 시즌2][Lab 8] 딥러닝의 기본 개념: 시작과 XOR 문제 (0) 2021.11.02