본문 바로가기
Deep Learning

CNN(convolutional neural network)

by rubyda 2020. 10. 7.
728x90

CNN(convolutional neural network)은 이미지 처리를 위해 최적화된 인공신경망 구조입니다. CNN은 크게 컨볼루션 층(Convolution Layer)풀링층(Pooling Layer)로 구성되어 있습니다. 풀링은 서브샘플링이라고도 불립니다.

 

https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53

 

컨볼루션 층(Convolution Layer)


Convolution Layer은 컨볼루션 연산을 통해서 이미지의 특징을 추출해내는 부분입니다. 컨볼루션은 합성곱 연산이라고도 불립니다. 

 

http://deeplearning.stanford.edu/wiki/index.php/Feature_extraction_using_convolution

위 예제는 크기가 5x5인 데이터를 1개의 필터(커널)로 합성곱 연산을 수행하는 과정입니다.

그렇다면 필터는 무엇일까요??

 

 

필터(Filter) & Stride


필터이미지의 특징을 찾아내기 위해서 공유하는 파라미터 라고 할 수 있습니다. FilterKernel이라고도 불립니다. 

각각의 다른 특징을 추출해내는 필터를 조합하여서 네트워크에 적용을 하면 원본 데이터가 어떤 특징을 가지고 있고 없는지를 판단할 수 있습니다. 

 

 

필터를 적용하는 간격을 Stride라고 하며 필터를 적용하여서 얻은 결과를 Feature map 또는 activation map이라고 합니다.

 

채널(Channel)


컬러로된 이미지를 처리하기 위해서는 3개의 channel이 필요합니다. 아래의 그림이 컬러 이미지를 나타낸 그림입니다. 반면에 흑백은 channel 1개로 처리할 수 있습니다. 그렇기 때문에 연상량과 오차를 줄이기 위해서 전처리 부분에서 흑백(channel=1)로 만들어 처리를 할 수도 있습니다.

https://gruuuuu.github.io/machine-learning/cnn-doc/#
https://gruuuuu.github.io/machine-learning/cnn-doc/#

 

3차원 합성곱에서 주의할 점입력 데이터의 채널 수와 필터의 채널수가 같아야 한다는 점입니다!!

 

패딩(Padding)


우리가 합성곱을 수행하게 되는 출력 이미지의 크기는 입력 이미지의 크기보다 작아지게 됩니다. 그렇기 때문에 이미지의 크기는 점점 작아지게 되면서 이미지의 끝(가장자리)에 있는 픽셀의 정보는 점점 사라지게 되는 현상이 발생합니다. 이런 문제점을 해결하기 위해서 사용하는 것이 바로 패딩(padding)입니다. 

 

위 그림에서 오른쪽이 패딩을 적용한 그림입니다. CNN에서는 이 처럼 가장자리에 0의 값을 가지는 픽셀을 추가하는 zero-padding을 많이 사용합니다. 왼쪽과 오른쪽을 비교해보면 오른쪽 그림은 원본데이터의 크기가 그대로 유지되는 것을 알 수 있습니다.

 

풀링층(Pooling Layer)


풀링층는 컨볼류션 층의 출력 데이터의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용이 됩니다. 대표적인 방법으로는 Max PoolingAverage Pooning, Min Pooling이 있습니다. 

 

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

Max Pooling은 이름처럼 NxN의 이미지에서 가장 큰 값 하나를 추출하는 방법입니다. 마찬가지로 Average는 평균, Min은 최솟값을 의미합니다.

 

풀링층(Pooling Layer) 장점

  • 이미지를 차원축소 함으로써 연상량을 감소시킬 수 있습니다.

  • 특징 선별을 할 수 있습니다. 예를 들어서 모소리가 추출되어 있는 활성화 맵에서 최대값 풀링을 수행하게 되면 흐릿하던 모서리 부분이 더욱 뚜렷해지게 될 것입니다.

 

 

 

Reference


https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53

 

A Comprehensive Guide to Convolutional Neural Networks — the ELI5 way

Artificial Intelligence has been witnessing a monumental growth in bridging the gap between the capabilities of humans and machines…

towardsdatascience.com

https://www.aladin.co.kr/shop/wproduct.aspx?ISBN=E893145839&start=pnaverebook

 

[전자책] 텐서플로로 배우는 딥러닝

딥러닝 기법의 이론적 배경이 되는 기초적인 수학적 이론들을 자세하게 소개하고, 딥러닝 기초 모델들(ANN, 오토인코더, CNN, RNN)의 정확한 이해를 위해 텐서플로 예제 코드와 함께 설명한다.

www.aladin.co.kr

 

'Deep Learning' 카테고리의 다른 글

GAN(Generative Adversarial Network)  (0) 2020.11.26
RNN(Recurrent Neural Networks)  (0) 2020.11.02
활성화 함수(Activation Function)의 종류  (0) 2020.10.06
Deep Learning Summary  (0) 2020.08.23