Welcome! 🙋‍♂️ View more

AI

[D/L] CNN 이란? (feat. DACON)

DeepFlame 2022. 1. 16. 18:05

 

CNN(Convolutional Neural Networks)이란?


이미지인식과 음성 인식 등의 주변 정보에 영향을 받는 데이터에 적합한 딥러닝 기법이다.
Ex. 흰색 와이셔츠 이미지가 있다면 흰색의 픽셀 주변에는 흰색일 확률이 높다. 이러한 형상이 가진 정보를 CNN은 이해할 가능성이 높다.

만약 이런 데이터를 1차원 데이터로 바꾼 다음 단순 딥러닝을 적용하게 된다면 이러한 형상이 가진 공간정보를 제대로 살릴 수 없다.

 

 

CNN의 구조


1. Convolution (합성곱 연산)

사람은 사물을 인식할 때 이미지 전체를 보는 것이 아니라, 사물의 위치를 본다. 이부분에 해당되는 것이 Filter이다. 즉 객체를 단순 1차원 데이터로 바꾸는 것이 아니라 객체가 인식된 정보를 점으로 나타내어 1차원 데이터로 바꾸는 것이다.

CNN은 Input된 이미지에 가중치를 가진 Filter로 이동하며 합성곱 연산을 하여 이를 구현했다.

그림으로 보면 다음과 같다.

합성곱 연산

이를 통해 input된 이미지의 feature map을 얻을 수 있다. CNN 훈련 과정에서 이 Filter의 값을 수정하게된다.

 

 

2. Channel

이미지의 다양한 특징들을 추출하기 위해서 다수의 Filter를 사용하게 된다. 예를들어 곡선을 추출하는 Filter와 직선을 추출하는 Filter의 가중치는 다를 것이다. 

기존의 이미지는 보통 3-Channel(R,G,B)를 가진다. 이런 데이터가 6개의 Filter와 연산곱을 시행하게 된다면 결과는 6-Channel을 가지게 된다.

3-Channel Input 데이터에 6개의 Filter를 적용한 결과

위 그림에서 확인할 수 있듯이 레이어가 깊어지면 너비와 높이는 감소하고, 깊이는 깊어진다. 

 

 

3. Padding

합성곱 연산의 결과

위의 과정의 결과를 보면 Output 데이터의 크기가 Input 데이터의 크기보다 작아진 것을 확인할 수 있다. 이러한 크기 변화를 해결하기 위한 방법이다.

다음과 같이 없어진 공간에 0을 채워 데이터를 구성하는 방법이 zero padding 이다.

zero padding

 

 

4. Pooling

이미지의 크기를 유치한 채로 Fully Connect 레이어로 가게된다면 연산량이 엄청나게 늘어난다. 따라서 크기를 줄이고, 특정 Feature를 강조해야하는데 그 방법이 Pooling이다. 

보통 Max Pooling을 이용하는데, 이는 뉴런이 가장 큰 신호에 반응하는 것에서 착안되었다.

Pooling 예시

 

 

전체 구조


CNN 구조

Convolution과 Pooling을 반복하면 이미지의 숫자는 많아지면서 크기는 점점 줄어들게 된다. 이렇게 많아진 각 데이터는 이미지의 대한 전체적인 내용이 아니라, 이미지의 특정 부분의 데이터를 나타낸다.

이 말은 이제 이 데이터는 1차원 데이터로 취급해도 무관하다는 것이다. 따라서 Flatten을 통해서 1차원 데이터로 변환하게 되고, 이를 Fully Connected Neural Network에 적용한다.

훈련을 거칠수록 필터들의 가중치가 수정된다. 처음에는 랜덤한 가중치를 가진 필터들이지만, 훈련을 거칠수록 필터의 가중치 값들에 규칙성이 생기게 된다.

 

 


필자는 DACON AI 경진대회에서 CNN 모델을 적용한 경험이 있다. 

Input 데이터가 운동시 디바이스에서 측정된 센서 데이터였으며, 운동시 센서값이 평평하게 있다가 큰 변동을 나타내는 것을 확인했다. 이는 운동을 시작했을 때 센서 값끼리 영향을 많이 받는 데이터라 생각했고, CNN 모델을 적용했다. 

아래는 링크에서 해당 내용을 확인할 수 있다. 😀

https://dacon.io/competitions/official/235689/codeshare/4133

 

[46th private | 0.74839] CNN Model

운동 동작 분류 AI 경진대회

dacon.io

 

 

 

 


출처
https://gruuuuu.github.io/machine-learning/cnn-doc/
https://ndb796.tistory.com/477
https://hobinjeong.medium.com/cnn-convolutional-neural-network-9f600dd3b395
https://youngq.tistory.com/40

반응형

'AI' 카테고리의 다른 글

MLOps Engineer가 보는 딥시크(DeepSeek)에 대한 생각  (0) 2025.02.01