귀여운 강아지다

귀여운 강아지다

고양이다

고양이다

4월 프로젝트에서는 강아지와 고양이를 구분할 수 있는 CNN 모델을 만들고 학습을 수행합니다. 그리고 pygame을 활용하여 강아지 또는 고양이를 직접 그려보고 모델이 실시간으로 예측값을 출력하게 하여 모델이 잘 맞출 수 있는지 확인합니다. 그런 과정에서 최대한 다양한 방식으로 분석하며 인공신경망의 구동 방식을 최대한 이해하는 것을 목표로 합니다.

문제 1. 강아지와 고양이를 구분 할 수 있는 CNN 모델 만들기

데이터셋 다운로드

학습에 사용할 데이터셋은 다양한 머신러닝 예제들을 볼 수 있는 kaggle 사이트를 이용합니다. training_set.ziptest_set.zip을 다운로드 합니다. kaggle 사이트에 있는 데이터를 다운로드 하려면 회원가입을 해야 합니다.

Cat and Dog

Untitled

데이터셋 파악

이제 주피터 노트북 환경에서 작업을 시작합니다.

zipfile 모듈을 이용하여 두 개의 압축파일을 압축해제를 하세요. 그리고 압축해제된 파일의 구조를 확인해보세요.

이미지 불러오기

강아지와 고양이 이미지를 한개씩 subplot하세요. 이미지를 불러오기 위해서는 cv2, 이미지를 plot하기 위해서는 plt 라이브러리를 이용해야 합니다. 불러온 이미지의 색감이 어색하지는 않은지 확인해보세요.

cv2를 사용하기 위해서 pip install opencv-python 을 터미널에 입력해주세요.

opencv-python

Untitled

데이터 전처리

이미지를 보면 기존에 예제로 했었던 것과 달리 픽셀의 크기가 매우 크고 가로와 세로의 비율이 같지 않으며, 각각의 크기도 일정하지 않습니다.

우리가 배운 CNN 모델에 적용하기 위해서는 cv2의 라이브러리를 이용하여 이미지의 크기를 일정하게 합니다. 저 같은 경우에는 이미지의 크기를 (64, 64, 3)로 resize를 했습니다. 필요하면 grayscale을 적용하여 (64, 64, 1)과 같은 형태로도 할 수 있습니다. 이외에도 다양한 것을 보고 싶으면 cv2의 이미지 합성을 알아보세요.

Untitled

Untitled