관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

CNN 3 - 개와 고양이를 분류하는 실습 1 : 이미지 파일 분류 본문

인공지능/딥러닝

CNN 3 - 개와 고양이를 분류하는 실습 1 : 이미지 파일 분류

huenuri 2024. 10. 28. 13:19

이제 CNN을 활용한 개, 고양이를 분류하는 실습을 진행해보려고 한다.


 

 

 

개와 고양이를 분류하는 실습 해보기

 

먼저 데이터 폴더에 압축 파일 형태로 선생님이 올려주신 파일을 업로드했다. 여기서 압축 파일 형태로 저장하는 이유는 넘파이로 저장하면 용량이 커지기 때문에 압축 파일에서 npz 파일로 변환하는 작업을 진행한다.

압축 파일 형태이기 때문에 코드로 압축을 해제할 수 있다. 압축을 해제한 다음에는 크기 조정도 한다. 그 이유는 딥러닝 모델에서는 이미지 크기가 제각각이라 크기를 동일하게 조정해 준다. 그런 다음 이 이미지를 넘파이 배열인 숫자 형태로 변환한 후 다시 npz 형식으로 저장한다.

 

 

 

 

 

 

구글 드라이버는 클라우드 형태로 저장되기 때문에 이것을 내 작업 공간으로 옮기는 작업이 필요하다.

 

절대 경로가 편하기는 하지만 내 현재 폴더를 알고 그 안에 들어가서 zip 파일을 가져오는 zip_path를 사용하는 것이 좋다. 절대 경로는 가독성이 떨어지기 때문이다. 내 현재 작업 위치를 내 드라이버 안으로 옮겨준 다음에 내 데이터 폴더 안으로 가져오면 된다.

 

 

 

 

 

일일이 해제하지 않아도 압축 해제된 파일을 저장하게 된다.

 

 

 

드라이버에 가면 압축이 해제된 파일을 볼 수 있다. 그리고 이 파일에 들어가면 개와 고양이 사진이 많이 들어있는데 이미지 크기가 모두 다르다. 우리는 이 파일을 동일한 이미지 크기로 설정해 줄 것이다.

 

 

 

 

 

상대 경로를 저장하면 편하기에 각각 들어있는 4개의 폴더의 경로 이름을 변수에 저장했다. 그 다음에 경로 하나하나에 접근하는 코드를 작성했다.

 

 

이 경로 안에 있는 각각의 파일 리스트를 os로 저장했다. 

 

 

 

총 3000장의 데이터가 저장되어 있음을 알 수 있다.

 

 

 

우리는 사진 한 장을 가져오기 위해 파일의 경로와 파일이 저장된 파일명을 함께 가져와야 한다. 따라서 dir과 fnames를 더해야 한다.

 

 

 

 

앞부분은 dir이, 뒷 부분은 fnames의 이름에서 가져와서 경로를 합쳐주었다.

 

 

 

 

 

배열의 번호를 바꾸면 고양이 사진이 바뀐다.

 

 

 

 

 

 

 

 

resize를 하니 이미지가 줄어든 것을 볼 수 있다. 이미지를 줄이니 조금 비율이 안 맞는 확을 확인할 수 있다. 나중에 전이학습할 데이터가 224로 만들어져 있기 때문에 224로 미리 설정하는 것이다.

 

 

 

 

이러한 resizing을 함수로 작성한다. 그러면 넘파이 배열화된 이미지를 리턴해준다. 아무것도 적어주지 않으면 기본값으로 저장되는 것이다.

 

 

 

 

 

그런 다음 X_train으로 모든 사진 3000장이 변환된다. 변환된 이미지를 concat 함수를 사용해서 합쳐준다.

 

 

 

합쳐진 데이터를 정답 데이터로 생성했다.

 

 

 

npz 파일로 저장하는데 내 드라이버에 들어가 보면 npz 파일이 생성된 것을 확인할 수 있다.

 

 

 

 


 

 

 

학습을 마치고

개와 고양이를 압축한 폴더른 npz 파일로 변환하는 예시를 진행해 보았다. 이번 실습은 선생님이 코드를 제공해 주신 게 있어서 그걸 보면서 실행하니 비교적 쉽게 작성할 수 있어서 좋았다.

생각보다 공부가 빠르게 진행되어 벌써 3시간 분량의 수업을 3일치나 듣고 학습했다. 수업 시간에는 수업만 하는 것이 아니고 선생님이 다른 이야기도 하면 건너뛰고 중요한 부분만 듣기 때문에 단축해서 학습을 진행하는 점이 온라인 공부의 단점이다.

 

난 이 즈음에 한참 파이썬과 데이터 분석을 공부하고 있었던 것 같다. 이제 여기서 딥러닝 공부는 중단하고 요즘 소홀했던 수학 공부를 다시 해볼 생각이다. 영어 공부도 이번 주 안에 다시 시작해 볼 계획을 세웠다.