관리 메뉴

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

합성곱 신경망 8 - 개/고양이 분류 : 분석 준비 본문

인공지능/딥러닝

합성곱 신경망 8 - 개/고양이 분류 : 분석 준비

huenuri 2024. 10. 29. 13:34

앞서 다룬 예제들은 케라스 또는 텐서플로 데이터셋을 로드해 사용한 것이다. 하지만 실제 업무 또는 AI 경진 대회 참가 등의 상황에서는 파일 형태의 데이터셋을 분석에 활용해야 한다.

이 경우 고성능 GPU가 탑재된 워크스테이션이나 PC에 데이터셋을 저장하고 이 데이터를 텐서플로 분석 환경으로 읽어오는 과정이 필요하다. 하지만 실무에서 주로 다루는 이미지 파일은 용량이 크거나 파일 개수가 많아서 컴퓨터 메모리 또는 그래픽 카드 메모리가 부족한 상황이 자주 발생한다.

 

이런 문제를 해결하려면 이미지 데이터셋을 32장, 64장, 128장 등 배치 단위로 나눈 다음, 배치 한 개를 읽어와 딥러닝 모델에 주입하면 메모리 부담 없이 학습할 수 있다. 전체 데이터셋을 전부 모델에 입력할 때까지 배치 단위로 읽어오고 주입하는 과정을 반복한다.

이번에는 데이터셋을 배치 단위의 여러 부분으로 나누고 반복 객체를 통해서 각 배치를 한 개씩 모델에 입력하여 훈련하는 방법을 학습해 볼 것이다. 이 관정을 손쉽게 처리할 수 있도록 텐서플로 케라스는 ImageDataGenerator 함수를 지원한다.


 

 

 

분석 준비

 

1. 데이터셋 다운로드

데이터셋은 캐글에 공개된 'Cat and Dog' 데이터셋을 로컬 PC에 다운로드 받아서 구글 드라이브에 업로드한 뒤, 마운트해 직접 읽어오는 방법을 사용한다.

새 폴더를 만들고 이 폴더로 다운로드 받은 ZIP 파일을 업로드한다.

 

 

캐글 홈페이지에 데이터셋에 들어가서 검색하면 된다.

 

 

 

 

 

개와 고양이 데이터셋 다운로드하기

 

Cat and Dog

Cats and Dogs dataset to train a DL model

www.kaggle.com

 

로그인하기 귀찮아서 어제 수업용으로 받았던 파일을 그대로 쓰기로 했다.


 

 

 

 

2. 라이브러리 불러오기

기본 라이브러리와 함께 케라스로부터 ImageDataGenerator 함수를 불러온다.

 

 

 

3. 압축 파일 해제

책에 나온 방법대로 하는데 아무리 해도 코드 실행이 되지 않아 선생님의 수업 코드를 가져와서 실행했다. 조금 복잡하긴 하지만 그래도 이게 더 나은 방법 같다.

 

 

 

 

 

압축이 해제되어 다음과 같은 폴더에 훈련 셋과 검증 셋이 들어있는 것을 확인했다.


 

 

코드 다시 수정하기

 

하지만 실습해 보니 수업 코드로 하면 다음 코드 진행이 전혀 되지 않았다. 40분 넘게 헤매다가 하는 방법을 드디어 찾았다.

 

압축이 풀리지 않아서 점심을 먹고 다시 연구하며 실습을 진행해 보았다. 

 

 

이제 압축이 풀린 파일이 생겼다. 이름을 archive로 변경해 주었다.


 

 

 

 

경로 지정을 되었으나 해당 경로가 존재하지 않다는 문구가 떴다. 


 

 

 

학습을 마치고

아직 안 되는 부분이 있지만 점심을 먹고 이어서 진행하려고 한다. 1시간 안에 이 단원을 마치려고 했는데 데이터만 불러오는데 거의 대부분의 시간을 소모했다.

아직도 잘 안 되는 부분이 있지만 여기까지 온만큼 반드시 해낼 수 있으리라 믿는다. 다만 지금은 에너지가 부족해서 집중력이 떨어지는 시간이다.

 

경로를 지정하는 건 정말 어렵다. 사실 책도 믿을 수 없고 틀린 코드가 너무나도 많은 데다 도저히 해결 불가능이다. 이거 하다가 몇 시간이나 시간이 가버렸고 괜한 시간만 허비하는 것 같아 넘어가기로 했다. 개발을 하다 보면 해결이 안 되는 문제를 만나기 마련이다. 하지만 그때마다 낙담을 해서는 결코 배울 수 없다. 언젠가 이 문제를 반드시 해결할 때가 있을 것이다. 그때까지 내가 좀 더 성장할 때까지 기다릴 것이다!