합성곱 신경망

Pikabot (토론 | 기여)님의 2022년 3월 6일 (일) 01:31 판 (llang|en -> 영어 변환)

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

합성곱

2D Convolution Animation.gif

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

신경망

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

적용 분야

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