오늘부터는 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
proauto/OpenCV_practice OpenCV_practice / C++github.com
.
원래 영상에 마스크(윈도우 혹은 커널)를 두고 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) 오탈자 혹은 잘못된 개념에 대한 피드백은 항상 환영합니다.
영상처리에 대한 부분을 개념만 소개하고 최소화했습니다.