Machine Learning/[Kaggle Course] ML (+ 딥러닝, 컴퓨터비전)

[생활코딩/CNN] Conv2D

WakaraNai 2021. 7. 28. 14:39
728x90
반응형

Convolution

특정한 패턴의 특징이 어디서 나타나는지 확인하는 도구

 

Filter

특정 위치의 값만 그대로 가져와서 

위치별로 특정한 패턴의 유무를 가져올 수 있음

 

filter set은 3차원 형태로 된 가중치의 모음

 

filter set 하나가 이미지 한 장을 만듦 (feature map)

그럼 filter set 개수만큼 feature map을 생성

 

Feature map

filter를 통과한 이미지

 

tf.keras.layers.Conv2D

1. filter set을 몇개 사용할 것인가 

   -> filter 3개 -> feature map 3개 -> 3채널/3차원의 feature map

   -> Flatten으로 픽셀 단위로 n 채널을 한 줄로 바꾸어 이용

2. filter set의 사이즈 == kernel_size

   -> filter 이미지 한 장의 변의 길이

3. activaiton으로 활성화 함수 지정하기

 

+) Conv2D는 3차원을 입력값으로 받음 - [28, 28, 1]

tensorflow를 만든 사람들이 그렇게 정했기 때문에 [28, 28]이 아닌 [28, 28, 1]로 해야하며

독립 변수도 reshape 하여 (60000, 28, 28, 1)로 해야했음

마지막이 1인 이유는 흑백이기 때문

컬러라면 rgb 3채널로 3을 적어야 함

 

 

Conv2D(3, kernel_size=5, activation='swish')
Conv2D(6, kernel_size=5, activation='swish')
  • 입력: 28x28 크기의 흑백 이미지
  • 5x5의 filter set 3개. 입력이 흑백이니 여기서도 (1)
  • filter set에 의해 생성된 각각의 feature map
    • featur map의 크기는 filter의 사이즈만큼 줄어듦
      • filter가 5x5이면 4만큼 줄고 3x3이면 2만큼 줄어듦
  • 앞서 feature map의 개수만큼 filter set의 채널 수 결정 (3)

  • feature map 하나를 만들 때 filter set 하나는  그 앞의 feature map 전체를 보고 생성됨
    • filter 하나를 만들 때 이전 feature map 전체를 탐색한다는 점!

 

이렇게 컴퓨터는 이 과정을 통하여,

숫자 판단에 가장 좋은 feature map을 6개 찾게 됨

 

 

실습

 

 

 

Convolution의 연산 방식

 

 

최종 결과 - featur map 생성 완료

728x90
반응형