Mathpresso 머신 러닝 스터디 — 10. CNN(Convolution Neural Nerwork)_1

.

오늘부터는 Deep Learning을 중심으로 스터디를 진행하고자 합니다.

.

그 첫번째 주제는

CNN(Convolution Neural Network)

입니다.

.

앞으로의 주제들은 간단하게 설명하려고 해도 너무나 방대한 내용이기에 항상 2부로 끊어서 진행하겠습니다.

.

1부 — Convolution 이 뭐지?

2부 — 그래서 어떻게 쓰면되지?

이렇게 나누어서 진행하겠습니다.

.

.

1부 — Convolution 이 뭐지?

.

일단 CNN은 기존의 Neural Network 앞 부분에 Convolution 작업을 추가한 것입니다.

Neural Network로 입력하는 데이터를 미리 전처리 하는 것이지요.

.

Convolution

.

Convolution은 연산의 신호 처리에서 많이 사용하는 연산 방법으로

보통 신호에서 원하는 특징을 얻어내기 위해서 사용합니다.

Convolution 연산에 의한 신호의 변화

(필터링을 한다고도 하죠. 디테일한 설명은 Frequency Domain까지 들어가야하므로 생략…) > https://www.sfu.ca/~truax/conv.html

.

이미지 Matrix에 적용되면 Convolution은 아래와 같은 필터로 작용합니다.

관련 정보 : https://en.wikipedia.org/wiki/Kernel_(image_processing)

.

영상처리의 표준 사진 — Lena

.

이런 사진을

.

sharpen
edge
blur

이렇게 만드는 것이 필터의 기능입니다.

.

참고 코드 — 개발 환경 : Xcode, C++, OpenCV

.

원래 영상에 마스크(윈도우 혹은 커널)를 두고 Convolution을 통해 결과 영상의 픽셀값을 결정하는 것입니다.

.

https://developer.apple.com/library/content/documentation/Performance/Conceptual/vImage/ConvolutionOperations/ConvolutionOperations.html

.

이런 과정으로 무엇을 얻을 수 있을까요??

.

새로 생긴 이미지는 원 이미지에서 부분 부분의 특징을 뽑아낸 것 입니다.(local feature)

.

이렇게 부분 부분에서 특징을 알 수 있기 때문에 전체 이미지에서 특징을 분석하는 것보다 좀 더 좋은 학습효과를 낼 수 있는 것입니다.

.

CNN은 아래와 같이 작용하는데 이렇게 Convolution을 적용하면서 영상 학습 쪽의 성능은 비약적으로 향상되었습니다.

.

local feature가 global feature가 되는 과정 >http://www.slideshare.net/akshaymuroor/deep-learning-24650492
실제 CNN 과정(자동차 임을 확인) > http://cs231n.github.io/convolutional-networks/

.

구글은 Vision Api라는 Cloud Machine Learning 서비스를 제공하는데

영상 학습이 실제 서비스가 가능할 정도로 성능이 향상된 것이지요.

https://developers.google.com/vision/

.

구글의 Vision Api는

사람의 얼굴을 찾고 표정 감정 상태를 판단하는 기능

사물 분류는 물론 유명한 로고, 건물 등등을 알려주는 기능

OCR(문자 인식) 기능

등등을 제공합니다.

.

그렇다면 다음 시간에는 실제 CNN을 어떻게 Tensorflow로 구현하는 지에 대해 알아보겠습니다.

.

cf) 오탈자 혹은 잘못된 개념에 대한 피드백은 항상 환영합니다.

영상처리에 대한 부분을 개념만 소개하고 최소화했습니다.