Be Brave, Be Humble

00_Introduction_to_CNN 본문

AI/Computer Vision

00_Introduction_to_CNN

해쨔니 2022. 8. 1. 16:24

https://github.com/FulISun/Computer_Vision/blob/main/CNN/Introduction_to_CNN.ipynb

등장배경: 기존 신경망(NN)은 input을 받을 때, 이미지의 픽셀을 vector로 바꾸어 숫자로 받음. 그런데 이미지는 'feature', 'position'이라는 중요한 두 가지 특징을 가짐.

자동차를 예로 들면, 자동차는 동그란 바퀴(feature)가 네모난 몸체 밑(position)에 있음.

즉, 중요 특징과 그 위치를 파악해야 하는데 vector로는 알 수가 없음. 신경망 입장에선 얘가 이미지 데이터인지 텍스트 데이터인지 알 길이 없단 의미.

=> 이미지 자체로 넣자! => "CNN 등장"

 

+) 반면, '언어'는 '순서'가 중요함

I work at google.

I google at work.

두 문장은 같은 단어로 구성되어 있지만 의미가 전혀 다름. => 순서를 고려하자! => "RNN, LSTM"

 

 

CNN의 아키텍처를 큰 틀로 보면

Input  ->  integral(f(x)g(x-t))  ->  Y-t   로 볼 수 있음

중간에 적분 연산이 Convolution이라 불리는 연산이며, CNN의 C임.

이전에 Introduction에서 딥러닝과 머신러닝은 Y를 예측하기 위해 weights와 bias를 업데이트 하는 과정이라고 했음. CNN에서는 weight의 집합체인 g(x)를 업데이트 하는 것임. 이 g(x)는 '필터' 혹은 '커널'이라고 불림.

식에서 알 수 있듯이 input인 f(x)와 g(x)는 1:1대응이므로 f(x) 채널의 수만큼 g(x)가 필요하며,

t가 먼저 정해져야 연산이 가능하고,

입력인 f(x)는 변하지 않으니, g(x)만큼 쪼개서 변화시켜 Y를 예측하는 것임

  • 필터 하나 당 bias는 1개
  • 필터 사이즈 = 가중치 수

즉, 이미지의 크기가 (3,3,1)이라면 필요한 파라미터는 w:9 + b:1 => 총 10개

자료를 찾아보면 알겠지만, 필터가 이미지를 이동하며 행렬연산을 하기 때문에 이 행렬연산에는 feature의 위치정보가 담김. 그렇기 때문에 Conv 연산된 행렬에 bias를 더한 값을 흔히들 알고있는 "Feature map"이라고 부르는 것임. 이미지의 feature를 알 수 있는 map이기 때문에!

입력은 3차원 tensor인 이미지를 받으며,

Convolution층은

conv (공간의 중요한 특징을 뽑아냄) => relu (비선형성 추가) => pooling (결과 압축)으로 이루어져 있음.

  • conv: 입력데이터와 가중치의 집합체인 필터와의 컨볼루션 연산을 통해 입력 데이터의 feature 추출.
  • pooling: 입력 정보를 최대값, 최소값, 평균 등으로 압축하여 데이터의 연산량을 줄여줌. 흔히 max pooling이라 하는 최대값을 사용함.
In [ ]:
 

'AI > Computer Vision' 카테고리의 다른 글

02_NN_MNIST_sparse_dropout_batchnormalization  (0) 2022.08.01
01_NN_MNIST_example_onehot  (0) 2022.08.01
04_kaggle_diabetes_data  (0) 2022.08.01
03_pandas quick review  (0) 2022.08.01
02_TF_2_x_2_LogisticRegression_MultiClassification_Example  (0) 2022.08.01
Comments