AI/Deep Learning

Convolutional Neural Networks (CNN)

이성훈 Ethan 2024. 7. 6. 16:41

왜 이제와서 CNN 글을 올리냐고 한다면.. 너무 오래 안쓰다보니 까먹었기 때문에...

 

최근에는 nlp, cv 분야를 막론하고 모두 transformer 를 사용하지만 이건 학계 또는 빅테크 기준이라고 볼 수 있음

 

실제 산업, 특히 on-device AI 를 위해선, 모델이 작고 빠른 inference 가 가능해야함

 

산업에서 사용되는 Object Detection 모델은 대부분 YOLO 라는 CNN 기반의 모델이기 때문에 복습겸 정리해보기로 했음

 

신경망의 역사를 간단하게 보자면 기존에는 MLP 로 이것저것 다 처리하다가 이미지 처리용으로 CNN 이 등장하게 되었음

 

CNN 은 이미지에 대한 Inductive Bias 를 가지고 있음

 

 

Inductive Bias: 어떤 문제를 해결하기 위한 사전 정보를 통해 추가된 가정

 

e.g. CNN 의 작은 부분의 서로간의 관계를 보는 locality

 

Transformer 는 흔히 inductive bias 가 CNN 에 비해 약하다고 함 → 데이터에 대해 모두 attention 을 계산하기 때문

 


 

그럼 이제 CNN 의 필터(커널) 연산을 살펴보자

 

필터 F (Filter): 이미지 또는 feature map 위를 일정한 간격으로 이동하는 윈도우로, 결국 CNN 의 학습은 이 필터(커널)이 학습된다고 보면 됨

 

패딩 P (Padding): 여백을 준다는 뜻으로, 원래 convolution 연산을 진행하다보면 feature map size 가 점점 작아짐

 

이를 해결하기 위해 이미지 또는 feature map 외곽에 같은 수 (0이나 1) 을 채워서 conv 연산 후에 원하는 output size 를 가질 수 있도록 함

 

스트라이드 S (Stride): 필터를 적용하는 간격

 

 

► 최종 Output size

 

입력 size: (H, W)

 

필터 size: (FH, FW)

 

출력 size: (OH, OW)

 

$OH=\frac{H+2P-FH}{S}+1$

 

$OW=\frac{W+2P-FW}{S}+1$

 

'AI > Deep Learning' 카테고리의 다른 글

Object Pose Estimation, 6DoF, BOP challenge  (0) 2024.07.26
Self Attention, Cross Attention  (0) 2024.03.11
Autoregressive Model  (0) 2024.03.08
Variational Auto-Encoder (VAE)  (0) 2024.02.28
Generative Adversarial Nets (GAN) 수식으로 이해  (0) 2023.09.13