CNN은 고양이가 물체를 인식할 때 감각이 하나씩 깨어나면서 물체를 인식하는 걸 보고 아이디어를 얻었다고 한다.

즉, 이미지 전체를 하나의 입력으로 받는 것이 아니라, 이미지의 일부분 입력으로 받아 처리하는 것을 말한다(filter).

 

빨간색 네모 박스가 filter

  • Filter는 항상 하나의 값을 만들어낸다. 즉, X를 입력 받아 어떤 처리를 한 후 하나의 값을 뽑아낸다.
  • RGB에 해당하는 3은 항상 같아야한다. (만약 1로 지정되어 있다면 한가지 RGB에 해당하는 요소만 처리하겠다는 뜻)
  • W(weight)가 입력이 있을 때 어떤 숫자로 만들어내는 Filter의 값
  • Stride는 필터를 움직이는 단위를 말한다. (Stride가 1일 경우 필터를 1칸씩 움직인다는 뜻)

Filter를 거치면 Output이 나오는 공식

만약 7x7 이미지에 3x3 Filter를 1 Stride를 적용할 경우 5x5가 나오게 된다. (stride가 2라면 3x3 output이 생겨난다.)

이미지 사이즈를 7로 입력했는데 필터를 적용하게 되면 5x5, 3x3 이렇게 이미지가 작아지게 된다. 이미지가 작아질수록 어떤 정보를 잃어버리게 되기 때문에 보통 실제로 CNN을 사용할 때는 Padding을 사용한다.(이미지 손실을 없애기 위함)

 

Padding을 사용하게 되면 원래 이미지와 출력 이미지 사이즈를 같게 해줄 수 있다.

Padding 사용 이유

  • 그림이 급격하게 작아지는 것을 방지하기 위해
  • 이 부분이 모서리다 라는 것을 알려주기 위해
  • 이미지 손실을 최소화 하기 위해

* Padding을 하게 되면 이미지 손실을 막아주지만, 필요 없는 부분인 0이 붙은 만큼 noise가 발생하게 된다.

하지만 데이터 손실보다는 더 나으니 padding을 사용함

6개, 10개의 filter를 사용

필터를 적용해서 만들어진 새로운 출력 결과를 activation map이라고 한다. 각각의 filter의 Weight는 다르기 때문에 나오는 Output은 조금씩 다르다. 그리고 n개의 filter를 적용하게 되면 n개의filter를 사용했기 때문에 depth는 n이 된다.(depth = filter의 개수)

 

Stride가 1일 때 계산 값

(32-5) / 1 + 1 = 28 

(28-5) / 1 + 1 = 24 

 

Weight에 사용된 Variables 수

  • 5 x 5 x 3 x 6
  • 5 x 5 x 6 x 10

 

'Deep Learning' 카테고리의 다른 글

ConvNet Max pooling 과 Full Network  (1) 2019.06.24
ReLu(Rectified Linear Unit)  (0) 2019.06.23

+ Recent posts