CNN

안선경·2023년 4월 28일
0

DL_study

목록 보기
15/23

  • 이번에는 이미지 인식 CNN 딥러닝을 알아봤다.
  • 원리 자체가 막 어렵지는 않지만, 세부적인 개념을 이해하려고 노력하다보니 머리가 후...똑똑한 사람들 어떻게 하나하나 이걸 다 만들었찌
  • 기본적인 원리는 원래의 사진을 부분부분 인식해서 사진의 Feature 즉 특징을 뽑아내는 것이다.
  • nnn * n사진의 데이터를 위와 같이 일정한 크키에 따라 차원을 축소하는 개념으로 특징을 뽑아낸다.
  • 이를 Convolutional Filter라고 한다.
  • Convolutional방법을 통해 왼쪽의 그림을 오른쪽과 같이 사진의 특징을 뽑아낸다.
  • 그러면 중간에 pooling의 역할은 무엇일까?
  • 정답부터 말하면 확대된 이미지를 다시 축소하는 것이다.
  • 위 그림과 같이 무슨 사진인지 알 수 없는 경우가 많은데
  • 조금 축소해서 보니 고양이 사진이다.
  • 저 입과 발이 정말 앙증맞네...
  • 더 축소해서 사진을 확인해보니, 고양이 사진이 확실하다.
  • 이렇게 pooling의 역할은 이미지 축소함으로써 어떤 이미지인지 알 수 있게 한다.
  • 컴퓨터가 이미지를 인식할 수 있도록 사진을 축소하는 것이 pooling이다.
  • pooling은 여러 모델이 있지만 대표적으로 MaxPooling을 많이 사용한다.
  • 입력한 사이즈에서 가장 큰값을 특징으로 뽑아서 새로운 형태로 뽑는다.
  • 이런 일련의 과정을 몇번 반복함으로써 하나의 이미지에서 Feature를 추출한다.
  • 결국 CNN은 여러 Filter와 pooling을 통해 결과적으로 어떤 이미지인지 인식하는 기법이다.
  • 그리고 추가적으로 Padding은 Filter과정에서 사진의 이미지가 축소되는 것을 막기 위해 모서리에 0을 넣음으로써 이미지의 사이즈를 유지하기 위해 사용한다.
  • 그리고 Dropout의 경우 과적합을 방지하기 위해 값을 넣는다.
  • 이제 위에 CNN을 코드를 통해 구현해봤다.
  • 모델의 구축은 위 모델 그림과 그대로 똑같이 구축했다.
  • 아 그리고 Strides는 얼만큼 이동하면서 Feature를 뽑을지 정하는 입력값이다.
  • 파라미터 개수가 장난이 아니다.
  • 이제 model.compile를 통해 학습 과정을 설정하고, fit를 통해 학습시켰다.
  • 시각화 결과 아무래도 데이터 자체가 잘 정리되어 있다보니 조금만 epoch를 돌려도 금방 성능이 최고점이 도달한다.
  • 드디어 MNIST의 정확도를 99%까지 올렸다. 와우
profile
상황을 바꿀 수 없다면, 나를 바꾸자

0개의 댓글