합성곱 신경망

합성곱 신경망(영어: Convolutional neural network, CNN)은 영상 처리에 흔히 사용되는 인공신경망 구조이다. 전통적인 알고리즘에서 이용해오던 필터의 개념에 기계 학습 방법을 적용한 것으로, 이미지에서 중요한 특징(feature)들을 추출해내는 역할을 한다.

1 합성곱[편집]

2D Convolution Animation.gif

합성곱(영어: Convolution, 컨벌루션)은 두 함수를 서로 교차하여 이동하면서 곱한 것을 합하는 연산이다. 합성곱의 정확한 정의는 생략하고, 여기서 다룰 이미지에 대한 합성곱은 첨부된 그림과 같이 어떤 큰 행렬 위에 작은 행렬을 이동시키면서 만나는 원소끼리 곱해서 더해 새 행렬을 만드는 연산으로 볼 수 있다. 큰 행렬은 처리하고자 하는 데이터(이미지 혹은 이전 레이어의 합성곱 결과 등)이고, 작은 행렬은 커널(kernel), 혹은 필터(filter)라고 부른다.

2 신경망[편집]

딥러닝이 사용되기 전에도 영상 처리를 위해 합성곱이 많이 이용되었다. 사물의 윤곽만 남기는 필터, 이미지를 흐릿하게, 혹은 선명하게 만드는 필터 등을 전문가들이 직접 찾아내는 방식이다. 이 필터 행렬의 각 원소들을 파라미터로 만들어 기계학습 방법을 이용해 학습할 수 있도록 만든 것이 합성곱 신경망이다. 주로 이미지에서 중요한 특징(feature)들을 찾아내기 위해 이 합성곱 필터들이 사용된다. 이렇게 찾아낸 특징을 이용해 사물을 분류하는 등의 작업에 이용하게 된다. 예를 들어, 눈 모양, 코 모양, 입 모양 등을 찾는 필터가 학습되었다면, 이를 이용해 눈, 코, 입을 찾아 해당 이미지가 얼굴인지 아닌지를 판단할 수 있다는 것이다. 이러한 학습은 주로 경사하강법(Gradient descent)을 이용해 이루어진다.

3 적용 분야[편집]

Image classification
고양이 사진이라든지, 에펠탑 사진이라든지 하는 식으로, 주어진 이미지가 어떤 이미지인지 분류하는 작업을 말한다.
Object detection
사진을 통째로 분류하는 작업에서 더 나아가, 사진 내에 있는 여러 객체들을 찾아내는 것을 목표로 한다. 도로 사진을 주면 여러 객체에 박스를 그리고, 자동차, 보행자, 나무 등의 이름을 붙이는 식이다. 바운딩 박스를 그리는 작업과 각각의 박스를 classification하는 작업으로 나뉜다.
Semantic segmentation
각 픽셀들이 어떤 의미를 가지는 픽셀인지 분류하는 작업이다. Object detection이 단순한 네모 박스를 그려서 분류했다면, Semantic segmentation은 정밀하게 객체의 모양을 분리하고 분류하는 것을 목표로 한다.