xswer19.log
로그인
xswer19.log
로그인
CNN
안선경
·
2023년 4월 28일
팔로우
0
0
DL_study
목록 보기
15/23
이번에는 이미지 인식 CNN 딥러닝을 알아봤다.
원리 자체가 막 어렵지는 않지만, 세부적인 개념을 이해하려고 노력하다보니 머리가 후...똑똑한 사람들 어떻게 하나하나 이걸 다 만들었찌
기본적인 원리는 원래의 사진을 부분부분 인식해서 사진의 Feature 즉 특징을 뽑아내는 것이다.
n
∗
n
n * n
n
∗
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%까지 올렸다. 와우
안선경
상황을 바꿀 수 없다면, 나를 바꾸자
팔로우
이전 포스트
MNIST
다음 포스트
DeepLearning_from_scratch
0개의 댓글
댓글 작성