음식분류 프로젝트를 CNN으로 진행하게 되면서, CNN에 대해서 정리하고자 한다.


CNN이란?

CNN은 머신러닝의 한 유형인 딥러닝에 가장 많이 사용되는 알고리즘이다.

또한, 특징을 직접 학습하기 때문에 특징을 수동으로 추출해줘야 할 필요가 없고

이미지에서 객체, 얼굴, 장면을 인식하기 위해 패턴을 찾는데 유용하다.

 

CNN의 구조

 

CNN의 구조 (출처:https://www.kdnuggets.com/2015/11/understanding-convolutional-neural-networks-nlp.html)

간단하게 설명하면 CNN은 이미지의 특징이 convolution layer를 거치며 추출되고, 

끝쪽으로 가서는 추출한 특징을 flat 하게 fully connected layer로 변경한 뒤,

마지막에서 softmax함수를 사용해 어떤 이미지인지 알아낸다고 할 수 있다.

 

 

 

그럼 해당 과정을 자세히 알아보자.

 

가장 먼저 입력되는 input 이미지는 R, G, B 3개의 채널을 가진다고 할 수 있는데,

이미지 3개의 채널

 

이 채널에 필터를 사용해서 특징을 점점 추출해낸다.

해당 과정은 밑의 그림에서 확인할 수 있다.

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

이 과정을 거치면 R, G, B 3개의 채널에 대해서 Convolved Feature이 나오는데,

이 3개를 합치면 Featured Map이 되는것이다.

이 Featured Map에 ReLU와 같은 활성화 함수를 적용하면 Activaion Map이 되는데

이 Activation Map이 Covnolution layer의 최종 결과가 되는 것이다.

 

이 Activaiton Map을 flat하게 만들어 fully-connected layer를 만들고, 

fully-connected layer의 마지막에 softmax함수를 적용하면 어떤 이미지인지 분류할 수 있는 것이다.

 

 

참고

http://taewan.kim/post/cnn/

https://www.kdnuggets.com/2015/11/understanding-convolutional-neural-networks-nlp.html

https://kr.mathworks.com/solutions/deep-learning/convolutional-neural-network.html

+ Recent posts