CNN?
CNN이란, Convolutional Neural Network의 약자로 Convolution 즉 합성곱을 이용하는 Neural Network이다.
Convolution, 합성곱?
합성곱은 Image에 Filter(kernal)을 적용시킬 때 사용하는 연산 방법(?)으로 Image에 필터를 이동시키면서 Output(feature, 특징)을 뽑아낸다.
(보통 이미지에 Blur 적용, Edge 검출 등에 활용된다.)
왜 Convolution을 사용하는가?
CNN 이전 DNN(Fully Connected Layer만으로 구성된 인공신경망)에서 입력 데이터는 1차원 배열 형태로 한정된다. 때문에 이미지를 입력 데이터로 사용했을 때 위치 정보가 손실된다.
CNN에서는 Convolition layer를 사용하여 이미지 데이터의 형상을 유지, 위치 정보의 손실을 줄일 수 있게 된다.
또한 모든 노드를 연결하는 Fully Connected Layer와는 달리, 필터와 겹쳐지는 부분에 대해서만 연산하고 특징을 뽑아내기 때문에 학습 연산량이 확연히 줄어든다.
구조
CNN 기본적인 구조는 Input Image가 Convolition Layer를 거치고 Pooling Layer 등을 거쳐 특징을 뽑아내고, 마지막에 FC를 연결하여 Input Image를 분류하게 된다.
Pooling
Pooling Layer는 Convolution Layer의 출력 데이터를 받아서 특정 데이터를 강조하는 용도로 사용된다.
위 그림에서 보이듯이 풀링을 거친 data는 size가 작아지게고, 이는 data의 큰 특징은 유지하면서 학습 시 파라미터를 줄이게 되는 효과가 있다.
Flatten
추출된 특징맵은 2차원이지만 이를 FC에 전달하기 위해선 1차원 자료 형태로 바꿔주어야 한다.
SoftMax
Flatten 이후에 Softmax, Sigmoid 등의 Activation function을 지나 Classification을 하게 된다.
(Activation function은 다른 포스팅에서 추가적으로 다루겠음.)
다시 한번 CNN의 전체적인 구조를 보고 마친다.
끝.
'DeepLearning > Concept' 카테고리의 다른 글
Dropout (0) | 2021.07.16 |
---|---|
Dilated Convolution(Atrous convolution) (0) | 2021.01.20 |
mAP(mean Average Precision) (0) | 2021.01.06 |
Back Propagation, 역전파 (0) | 2021.01.05 |
IoU (Intersection over Union) (0) | 2021.01.04 |