'computer vision'에 해당되는 글 1건

  • 2020.08.17 CNN

CNN

Neural Network 2020. 8. 17. 20:40

CNN 이전에 사용되던 FC layer (Fully Connect)는 다차원에서 연산을 할 수가 없기 때문에, 다차원 데이터 예를 들면 이미지 데이터를 학습하는데 어려움이 있었다. 하지만, CNN 의 경우엔 다차원 데이터의 특징을 추출하고 공간 정보를 그대로 유지한다.

대표적인 차이점으로는, 

- 각 Layer 차원 유지

- 특징 인식에 효과적

- 여러 필터들을 사용하며, 이것을 공유함으로써 학습 파라미터의 숫자가 상대적으로 적다.

- Pooling Layer 존재

 

1. Convolution

- 한국어로는 합성곱이라는 말을 뜻하는데, 이미지 데이터와 Filter를 합성곱 연산하여 특징을 추출하는 CNN의 가장 기초적인 Layer 연산이다. 아래 이미지를 보면 쉽게 이해할 수 있는데, Filter를 이동시키며 특징을 추출한 Feature Map을 만든다.

https://medium.com/@bdhuma/6-basic-things-to-know-about-convolution-daef5e1bc411

 

2. Filter & Stride

- Filter를 다른 말로는 Kernel 이라고도 하는데, 필터의 목적은 특징을 추출하기 위한 파라미터라고 할 수 있다. 아래 이미지처럼 하나의 Filter를 이동시키며 투영하여 합성곱을 하고 연산 한번당 하나의 Pixel을 대변한다.

https://www.kdnuggets.com/2017/11/understanding-deep-convolutional-neural-networks-tensorflow-keras.html

움직이는 Pixel 칸 수의 기준을 Stride라고 하며 아래 이미지의 경우엔, 7 X 7 Input Image에 Stride = 1 이고, 3X3 Filter를 적용하여 5 X 5 크기의 Feature Map을 만든것이다. Stride는 몇칸씩 움직일 것인가? 를 생각하면 이해가 쉽다. 그렇게 필터수 만큼 나온 Feature Map들을 합치는 과정을 반복한다.

https://deepai.org/machine-learning-glossary-and-terms/stride
http://taewan.kim/post/cnn

 

3. Padding 

- Filter를 이동시키면 convolution을 연산하면, Stride 값에 따라 더욱 작은 크기의 Feature Map 이 생성된다. 즉, Image -> Feature Map이 될때 같은 크기로 Output 이 나올수가 없다. 하지만, 학습시에 같은 크기로 만드는 과정을 자주 사용하기 때문에 Input Size = Output Size 로 맞추기 위해 Padding 이라는 기법을 사용한다. 아래 이미지는 가장 일반적인 Zero Padding 예제이다.

https://www.pyimagesearch.com/2018/12/31/keras-conv2d-and-convolutional-layers/

 

 

4. Pooling

- Pooling 이란 Feature Map 으로 뽑은 특징 값들을 더욱 도드라지게 하는 작업이라고 생각하면 된다. 아래의 이미지 예제는 어떤 방식으로 Feature Map 의 값을 추출할지의 대한 예제들이다. 매우 직관적인데, Pool Size 에 따라 크기가 줄어드며 특징을 더욱 확실하게 혹은 적절한 값으로 추출해준다.

https://www.researchgate.net/figure/Illustration-of-Max-Pooling-and-Average-Pooling-Figure-2-above-shows-an-example-of-max_fig2_333593451

 

https://medium.com/@RaghavPrabhu/understanding-of-convolutional-neural-network-cnn-deep-learning-99760835f148

'Neural Network' 카테고리의 다른 글

Computer Vision이란  (0) 2020.08.08
블로그 이미지

Denken_Y

coding 블로그

,