공부정리/모두를 위한 딥러닝 (강의 정리)

[딥러닝] Convolutional Neural Networks - 강의 정리

sillon 2022. 9. 13. 17:00
728x90
반응형

해당 게시글은 모두를 위한 딥러닝 강좌 시즌 1 - Sung Kim 강의를 바탕으로 작성하였습니다. 해당 이미지의 출처는 모두 해당 강의에 있습니다.

 

CNN의 기본적인 아이디어: 고양이 실험

고양이 어떤 형태의 그림에 대해서만 반응한다는 것을 알게됨

 

 

 

그림에따라 인식하는 뉴런의 신호가 달랐다 (입력을 나누어 받음)

해당 실험을 성공적으로 구현한 것이 CNN

 

과정

 

3: 세가지 RGB

전체의 이미지를 받지 않고 일부분만 따로 처리한다. -> filter (고양이 실험처럼 )

Filter

 

여기서 filter는 우리가 사이즈를 정할 수 있다. 그리고 해당되는 값에서 한 점만 처리한다.

이것이 filter가 하는 일임

그렇다면 5x5x3 filter를 어떻게 한 값으로 만들어내는 것인가?

 

 

필터가 움직일 수 있는 범위만큼의 값이 만들어짐

 

한 칸식 움직인다 : stride 크기가 1임

stride가 1이면 5X5 만큼의 값을 얻을 수 있음

 

stride가 2면 3X3의 값을 얻을 수있음

 

일반화를 하면 다음과 같다.

따라서 이미지의(정사각형) 크기 N X N

필터의 크기 F X F

stride (간격) 

 

해당되는 크기만큼 필터로 점을 모아 값이 만들어지는 갯수들을 알 수 있음

 

하지만 이미지의 사이즈가 작아질 수록 정보를 잃게됨

따라서 제로패딩을 통해서 방지해줌

 

ZERO Padding

  • 이미지가 작아지는 것을 방지 (데이터 손실 방지)
  • 테두리의 역할 (이미지 영역을 알려줌)

 

7 X 7 의 이미지를 패딩하면 9 X 9 의 크기가 됨

 

따라서 ConvFilter를 거치면서 이미지 사이즈가 작아졌던 것에서 (7X7 -> 5X5 가 되었던 것) 제로패딩을 통해서 7X7으로 아웃풋이 나오게됨

 

필터를 하나 더 만들어준다 (깊이를 깊게)

 

ConvNet Max pooling 과 Full Network

Pooling Layer

 

Pooling Layer (Samplig)

레이어를 뽑아내고 resize 한다.

 

한 레이어씩 뽑아내고 resize한 것을 쌓는다

4X4 이미지에서 stride가 2인 2X2의 필터를 이용해서

 

그렇다면 Out put으로 어떤 값을 내보낼 것인가?

-> 평균, min, max,... 등 여러 방법이 있겠지만 CNN에서는 MAX를 이용

Max Pooling

따라서 output으로는

 

 

Fully Connected Layer 

 

쌓는 구성은 알아서 쌓을 수 있다. (강의 내용임)

 

 

728x90
반응형