안녕하세요! Foxyhyun입니다!
오늘은 이미지 분류의 기초인 CNN에 대해 알아보려고 합니다
Convolution Neural Network, 줄여서 CNN이라고 부르죠.
파라미터만 지정하면 특징 추출도 알고리즘이 자동으로 이미지의 데이터를 추출하며, 영상 처리에 유용하게 쓰이고 있습니다.
주로 Convolution + pooling + flatten + fully-connected + softmax의 구조로 표현됩니다
먼저 Convolution에 대해 알아보겠습니다.
Convolution layer에서는 해당하는 요소들을 각각 곱하고 이 값을 모두 더하는 연산을 수행합니다.
아래 그림과 같이, 커널이라는 것을 이동시키며 연산을 수행합니다.
여기서 padding이라는 것을 하는데, Convolution연산 후 크기가 줄어들지 않도록 이미지 주변을 0으로 채우는 것을 말합니다.
또한 커널(kernel)은 나름의 필터 개념인데, size를 지정할 수 있고(보통 홀수), 모양을 지정(주로 정사각형)할 수 있습니다.
그리고 커널이 이동하는 칸 수를 결정하는 stride가 있습니다. stride가 클수록 출력 크기가 줄어듭니다.
다음은 Pooling layer입니다.
대푯값을 뽑아 크기를 줄여줍니다.
max pooling의 경우, 커널에 속한 값 중 최댓값을 선택합니다.
Flatten층은 다차원으로 입력받은 데이터를 1차원으로 변환해줍니다.
Fully-connected 층은 기존 뉴럴 네트워크와 동일합니다.
Softmax 층은 각 노드의 출력 값이 클래스에 대한 예측 확률 값으로 해석할 수 있도록 0~1 사이의 값을 갖게 하고,
이를 다 더하면 총합이 1이 되게 해 줍니다.
추가적으로 One-Hot Encoding은 분류하고자 하는 종류를 0과 1로 표현함으로써, 분류하는 값은 1, 아니면 0으로 통일하는 과정입니다.
간단하게 CNN의 구조와 각 층의 기능에 대해 알아보았습니다.
다음 글에서는 CNN 구현 시 고려해야 할 사항들에 대해 알아보겠습니다.