카테고리 없음

CNN, Convolutional Neural Network

chaenii 2021. 3. 3. 15:15

CNN이란?

합성곱 신경망(Convolutional Neural Network)은 이미지 처리에 탁월한 성능을 보이는 신경망이다. 데이터에서 직접 학습하고 패턴을 사용해 이미지를 분류한다. 즉, 특징을 수동으로 추출할 필요가 없다.

 

이러한 장점덕분에 자율주행자동차, 얼굴인식과 같은 객체인식이나 computer vision이 필요한 분야에 많이 사용되고 있다.

FC와 CNN

CNN 등장 이전, 2차원으로 된 이미지(채널을 포함해서3차원) 1차원 배열로 바꾼 뒤 FC(Fully Connected) 신경망으로 학습시키는 방법 사용하였다.

하지만, 이러한 방식은 공간적인 구조(spatial structure) 정보를 유실시킬 뿐만 아니라 신경망 특징 추출 및 학습에 비효율적이고, 정확도 높이는 데 한계 존재한다.

 

여기서 공간적인 구조 정보라는 것은 거리가 가까운 어떤 픽셀들끼리는 어떤 연관이 있고, 어떤 픽셀들끼리는 값이 비슷하거나 등을 포함하고 있다. 결국 이미지의 공간적인 구조 정보를 보존하면서 학습할 수 있는 방법이 필요해졌고, 이를 위해 사용하는 것이 합성곱 신경망이다.

 

1.1 합성곱, Convolution 

합성곱은 영어로 컨볼루션이라고도 불리는데, 커널(kernel) 또는 필터(filter)라는 n×mn×m 크기의 행렬로 (height)×(width)높이(height)×너비(width) 크기의 이미지를 처음부터 끝까지 겹치며 훑으면서 n×m크기의 겹쳐지는 부분의 각 이미지와 커널의 원소의 값을 곱해서 모두 더한 값을 출력으로 하는 것을 말한다. 이때, 이미지의 가장 왼쪽 위부터 가장 오른쪽까지 순차적으로 훑는다.

 

<그림 1> 2차원 입력데이터(shape: (5,5) 1개의 필터로 합성곱 연산을 수행하여, 합성곱 처리 결과로 부터 Feature Map을 생성한다.

<그림 1>

1.2 필터(Filter) & Stride

필터는 이미지의 특징을 찾아내기 위한 공용 파라미터이다.

입력 데이터를 지정된 가격으로 순회하며 채널 별로 합성곱을 하고 모든 채널의 합성곱의 합을 Feature Map으로 만든다.

필터는 지정된 간격(stride)으로 이동하면서 전체 입력데이터와 합성곱하여 Feature Map을 만든다.

입력 데이터가 여러 채널을 같는 경우 필터는 각 채널을 순회하며 합성곱을 계산한 후, 채널별 피처 맵을 만든다. 그리고 각 채널의 피처 맵을 합산하여 최종 피처 맵으로 반환한다. 입력 데이터는 채널 수와 상관없이 필터 별로 1개의 피처 맵이 만들어 진다.

하나의 Convolution Layer에 크기가 같은 여러 개의 필터를 적용할 수 있다. 이 경우에 Feature Map에는 필터 갯수만큼의 채널이 만들어진다. 입력데이터에 적용한 필터의 개수는 출력 데이터인 Feature Map의 채널이 된다.

 

1.3 패딩(padding)

Convolution layer에서 Filterstride에 작용으로 Feature Map 크기는 입력데이터보다 작다.

패딩을 이용해 입력 데이터의 외각에 지정된 픽셀만큼 특정 값을 채워 넣어 출력데이터가 줄어드는 것을 방지한다.

1.4 Pooling layer

Pooling layerConvolution layer의 출력 데이터를 입력으로 받아 출력 데이터(Activation Map)의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용한다.

Max Pooling, Min Pooling, Average Pooling 등이 있다.

Pooling 레이어는 Convolution 레이어와 비교하여 다음과 같은 특징이 있다.

학습대상 파라미터가 없음

Pooling layer 통과하면 행렬의 크기 감소

Pooling layer 통해서 채널 수 변경 없음

전체 구조

특징 추출 단계(Feature Extraction)

Convolution Layer : 필터를 통해 이미지의 특징을 추출한다.

Pooling Layer : 특징을 강화시키고 이미지의 크기를 줄인다.

ConvolutionPooling을 반복하면서 이미지의 feature 추출한다.

 

이미지 분류 단계(Classification)

Flatten Layer : 데이터 타입을 FC네트워크 형태로 변경한다.

Softmax Layer : Classification 수행

 

 

참고 자료

taewan.kim/post/cnn/#fn:1

wikidocs.net/64066

gruuuuu.github.io/machine-learning/cnn-doc/#

반응형