음식분류 프로젝트를 CNN으로 진행하게 되면서, CNN에 대해서 정리하고자 한다.
CNN이란?
CNN은 머신러닝의 한 유형인 딥러닝에 가장 많이 사용되는 알고리즘이다.
또한, 특징을 직접 학습하기 때문에 특징을 수동으로 추출해줘야 할 필요가 없고
이미지에서 객체, 얼굴, 장면을 인식하기 위해 패턴을 찾는데 유용하다.
CNN의 구조
간단하게 설명하면 CNN은 이미지의 특징이 convolution layer를 거치며 추출되고,
끝쪽으로 가서는 추출한 특징을 flat 하게 fully connected layer로 변경한 뒤,
마지막에서 softmax함수를 사용해 어떤 이미지인지 알아낸다고 할 수 있다.
그럼 해당 과정을 자세히 알아보자.
가장 먼저 입력되는 input 이미지는 R, G, B 3개의 채널을 가진다고 할 수 있는데,
이 채널에 필터를 사용해서 특징을 점점 추출해낸다.
해당 과정은 밑의 그림에서 확인할 수 있다.
이 과정을 거치면 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함수를 적용하면 어떤 이미지인지 분류할 수 있는 것이다.
참고
https://www.kdnuggets.com/2015/11/understanding-convolutional-neural-networks-nlp.html
https://kr.mathworks.com/solutions/deep-learning/convolutional-neural-network.html
'이론 > 머신러닝' 카테고리의 다른 글
다양한 YOLO 버전, 어떤 버전을 선택해야 할까 (4) | 2020.09.18 |
---|---|
딥러닝(Deep Learning) Softmax 함수에 대해 (0) | 2020.08.31 |