본문 바로가기

AI

CNN

Convolutional Layer

 conv 레이어가 적용된 DNN를 convolutional neural network, 줄여서 cnn이라고 한다.

cnn의 예시

 cnn의 특징으로는 필터가 존재하여 해당 필터가 이미지를 훑으면서 지나가게 된다. 해당 필터는 자기가 훑은 부분의 정보만을 담당하게 된다. 한 필터가 담당한 영역의 픽셀 값들은 하나의 값을 가지게 된다.

예를 들어서 사이즈가 (3, 3, 3)짜리 필터이라면, (3, 3) 픽셀을 .stride만큼 훑으면서 지나가게 된다. 이때 (3, 3) 픽셀이니 

[[x1,x2,x3], [x4,x5,x6], [x7,x8,x9]] 의 input값을 가지게 될 것이고, 이 때 필터는 이에 상응하는 (3, 3) 가중치를 가지고 있다.

따라서 해당 필터가 담당한 부분은

의 값을 가지게 된다.

 

결과적으로 한번 conv 계층을 거치고 나면 output은 input에 비해서 필연적으로 작아지게 되는데(padding을 추가하면 작아지지 않게 할 수 있다) 이때 output의 사이즈 공식은 다음과 같다. 

 

output_size = (input_size - filter_size) / stride + 1

 

output의 사이즈가 작아지는 것이 싫다면 외부에 zero padding등 padding을 주어서 사이즈를 보존할 수도 있다.

 

Filter의 개수에 따른 Activation Map의 깊이

 차원수를 조금 더 생각해본다면 내가 적용한 필터의 개수에 따라서도 output의 차원이 달라진다.
예를 들어서 (32, 32, 3)의 이미지에 6개의 (5,5,3)의 필터를 적용한다고 하면 (28, 28, 6)인 activation map을 얻게 된다.
마찬가지로 이번에는 10 개의 (5, 5, 6) 필터를 또 적용한다면 (24, 24, 10)의 activation map 을 얻게 된다. 결과적으로 activation map의 깊이는 필터의 개수이다.

'AI' 카테고리의 다른 글

논문리뷰- A Survey on Antispoofing Schemes for Fingerprint Recognition Systems  (0) 2024.09.06
RNN  (0) 2024.08.25
Activation function과 Weight initialization  (0) 2024.08.22
Overfitting 방지  (0) 2024.08.20
Multinomial Classification  (0) 2024.08.20