CNN

hooo·2023년 11월 20일
2

Deep learning 개념

목록 보기
1/2

CNN

오늘은 영상처리 등에 많이 사용하는 CNN에 대해서 알아보고자 한다.

1. CNN이란?

-> Convolutional neural network의 약자로, 딥러닝에서 주로 영상데이터, 이미지 데이터 처리에 많으 쓰이는 기술이다.

(convolution preprocessing이 들어간 뉴럴 네트워크 모델)


-> 기존의 DNN의 문제점 때문에 CNN을 사용하게 됨

(문제 - DNN은 1차원 데이터를 사용하는데, 이미지 or 영상과 같이 dumension이 2,3인 데이터처리 시 1차원으로 강제로 형태를 변환하면 데이터 손실이 발생하는 문제)



2. 그렇다면 CNN의 과정 중 first (conv2d + pooling2d)에 대해 알아보자


1  N x N 형태의 이미지 데이터 입력

2.  f x f 크기의 filter(kernel)의 n개로 이미지에서 특징을 추출

3. (N-f+1) x (N-F+1)형태의 convolution 결과 값 n개 생성

4. colvolution 결과 값에 활성화 함수를 적용(for 비선형으로 만들기) 

= 하나의 convolution layer 생성
(one convoluton layer = convolution + activation function)

 **활성화 함수는 convolution layer와 pooling layer를 앞뒤로 둔다**

(4단계에서 말한 비선형으로 만들기는 아래 링크의 글을 참고)

https://medium.com/@snaily16/what-why-and-which-activation-functions-b2bf748c0441


나온 결과를 갖고 이번에는 pooling layer를 살펴보자

pooling layer는 쉽게 말해 차원 축소 과정인데, 

하나의 input data에서 n개의 커널을 사용하여 결과적으로 (N-f+1) x (N-F+1) 형대의 

결과 맵을 n개(필터의 개수)만큼 만들었으니 데이터를 줄일 필요가 있다.

따라서 이러한 결과 맵(featrue map)의 크기를 줄이기 위해 풀링을 사용

보통 풀링 방법으로 max pooling, average pooling을 사용한다

각 방법은 아래 그림에서 볼 수 있음

그림에서 볼 수 있듯이 기존의 4 x 4형태의 행렬을 2 x 2 형태의 행렬로 축소 가능하다

여기까지가

하나의 convolution layer , pooling layer이다



만약, input size = 28x28이고, 5x5 size인 filter 10개 + pooling layer를 통과한 텐서의 결과 값은 12x12x10의 텐서(tensor)가 되고,
이 결과 값은 다음 convolution layer에 input으로 사용된다.


3. Second (conv2d, pooling2d)

(바로 위에 사용한 예와 같이 first의 결과값이 12 x 12 x 10일 때를 계속하여 설명)

12 x 12 x 10의 텐서에 또다른 filter 적용
(이번에는 5 x 5 x 15 형태의 텐서 필터 적용)

위 결과 8 x 8 x 15의 텐서가 도출됨     *(8은 (12-7)+1)의 결과)*

8 x 8 x 15에 다시 pooing을 이전과 같이 적용하면 

결과는, 4 x 4 x 15의 형태가 된다 


4. Flatten layer

-> flatten은 사전적 의미로 '납작하게 하다'라는 의미를 갖고있다
CNN에서도 사용하는 flatten layer도 이같은 역할을 한다.

flatten layer에 대해서 알아보자.

flatten layer는 CNN의 끝에 주로 활용된다 (중간에 사용할 수도 있음)

이미지 데이터에 대한 feature map을 말 그대로 1차원(dim = 1)인 텐서a로 펼치는 역할!

예를 들면,
4 x 4 x 15를 240의 길이를 갖는 1d tensor로 변환하는 역할을 담당한다

5. 결과 tensor 활용

결과 1d tensor를 다시 input으로 사용!

FC layer(fully-connected layer)에 input으로 사용하고,
분류 task에 사용한다고 했을 때 이후 softmax와 같은 활성화 함수를 적용하여 결과에 활용할 확률 값을 도출할 수 있다.




이전까지의 모든 과정을 그림으로!


참고: 이 포스팅에서 패딩(padding)에 대한 개념은 설명하지 않았음!

profile
Data Science

1개의 댓글

comment-user-thumbnail
2023년 11월 20일

우왕 어려운 개념을 쉽게 풀어주셔서 감사해요!

답글 달기