Convolutional Neural Networks
Computer Vision
Image classification, object detection, neural style transfer, ...
Edge Detection Example
이런 방식으로 vertical, horizontal edge를 탐지할 수 있다고 한다.
More Edge Detection
이렇게 filter로 convolution을 함으로써 edge를 탐지할 수 있다는 것을 알았다.
그렇다면 filter의 weight를 neural network로 학습시키면 어떨까.
low-level feature인 edge를 magic filter로 잘 탐지하지 않을까.
Padding
그냥 convolution을 계속하다 보면 당연하게도 output의 사이즈가 계속해서 줄어든다.
이는 feature의 손실로도 이어질 수 있다.
그래서 input을 감싸는 padding을 해주어 convolution 후에도 사이즈가 줄어들지 않게 만들어준다.
Valid convolution: no padding
Same convolution: Pad, so that output size is the same as the input size
computer vision에서 filter size는 보통 홀수인데 same convolution의 padding size를 정수로 만들어줄 수 있고, central position을 가지는 게 좋을 때가 있기 때문이라고 한다.
Strided Convolutions
보폭을 크게 잡는 convolution이다.
엄밀하게 ML에서 convolution이라 부르는 것은 cross-correlation이고 convolution은 filter를 위아래, 좌우를 바꾸어 계산을 하는 것이다.
하지만 관습상 ML에서는 cross-correlation을 convolution이라 부른다.
Convolutions Over Volume
3d에서도 convolution 과정은 똑같다.
다만 관습으로 channel size는 input과 filter를 맞춘다고 한다. (output으로 2d)
여러 filter를 사용하여 나온 값을 쌓아 다시 3d로 만들 수 있다.
One Layer of Convolutional Network
Convolutional network의 input, output, weight, bias 등등의 shape를 생각해볼 것.
padding, stride, number of filters, number of training data 등등을 다 고려해야 해서 복잡하긴 하다.
Simple Convolutional Network Example
Types of layer in a convolutional network: convolution, pooling, fully connected
일반적으로 layer를 거치면서 height, width가 줄어들고 channel이 늘어나는 것을 확인할 수 있다.
Pooling Layers
Max pooling: filter에 걸리는 수들 중 maximum 값을 가진다.
Average pooling: filter에 걸리는 수들의 average 값을 가진다.
filter size, stride size와 같은 hyperparameter만을 가지고 parameter는 없다.
Convolutional Neural Network Example
관습적으로 convolutional layer과 pooling layer를 묶어 하나의 layer로 센다.
Why Convolutions?
이전에 배운 것처럼 input과 output을 모두 연결시켜 계산하는 것은 너무나 많은 parameter가 필요하다.
Parameter sharing: A feature detector (such as a vertical edge detector) that's useful in one part of the image is probably useful in another part of the image
Sparsity of connections: In each layer, each output value depends only on a small number of inputs
하지만 이러한 특성으로 인해 convolution으로 적은 수의 parameter만으로 feature를 잘 뽑아낼 수 있다.
'Google Machine Learning Bootcamp 2022 > Convolutional Neural Networks' 카테고리의 다른 글
4. Special Applications: Face recognition & Neural Style Transfer #2 (0) | 2022.08.02 |
---|---|
4. Special Applications: Face recognition & Neural Style Transfer #1 (0) | 2022.08.02 |
3. Object Detection (0) | 2022.08.02 |
2. Deep Convolutional Models: Case Studies #2 (0) | 2022.08.01 |
2. Deep Convolutional Models: Case Studies #1 (0) | 2022.08.01 |
댓글