HDF5 LargeSize Data 딥러닝 인공지능 파이썬 python dataset

지금까지이 책에서 우리는 기계의 주 메모리에 맞을 수있는 데이터 세트로만 작업했습니다. 소규모 데이터 세트의 경우 이는 합리적인 가정입니다. 각 개별 이미지를 로드하고 전처리 한 다음 네트워크를 통해 공급되도록 허용하기 만하면됩니다. 그러나 대규모 딥러닝 데이터 세트 (예 : ImageNet)의 경우 한 번에 데이터 세트의 일부 (예 : 미니 배치)에만 액세스하는 데이터 생성기를 생성 한 다음 배치가 네트워크를 통해 전달되도록 허용해야합니다.

운 좋게도 Keras에는 디스크의 원시 파일 경로를 교육 프로세스에 대한 입력으로 사용할 수있는 메서드가 포함되어 있습니다. 전체 데이터 세트를 메모리에 저장할 필요가 없습니다. Keras 데이터 생성기에 이미지 경로를 제공하기 만하면 이미지가 일괄 적으로 로드되고 네트워크를 통해 공급됩니다.

그러나 이 방법은 매우 비효율적입니다. 디스크에있는 모든 이미지에는 학습 파이프 라인에 지연 시간이 존재하는 I/O 작업이 필요합니다. 딥러닝 네트워크를 훈련하는 것은 이미 충분히 느립니다. I/O 병목 현상을 최대한 피하는 것이 좋습니다.

더 우아한 솔루션은 전이 학습 및 특징 추출에 관한 23 장에서 했던 것처럼 원시 이미지에 대한 HDF5 데이터 세트를 생성하는 것입니다. 이번에는 추출된 특징이 아닌 이미지 자체를 저장합니다. HDF5는 방대한 데이터 세트를 저장할 수있을 뿐만 아니라 I/O 작업, 특히 파일에서 일괄 추출 ( “슬라이스”라고 함)을 추출하는 데 최적화되어 있습니다. 이 책의 나머지 부분에서 볼 수 있듯이 디스크에있는 원시 이미지를 HDF5 파일로 압축하는 추가 단계를 수행하면 데이터 세트를 빠르게 구축하고 딥 러닝 네트워크를 훈련시키는 데 사용할 수있는 딥 러닝 프레임 워크를 구축 할 수 있습니다.

이 장의 나머지 부분에서는 Kaggle Dogs vs. Cats competition을 위해 HDF5 데이터 세트를 구성하는 방법을 보여줄 것입니다. 그런 다음 다음 장에서는이 HDF5 데이터 세트를 사용하여 중요한 AlexNet 아키텍처를 훈련시켜 다음 장에서 순위표에서 top-25에 이르게 되는 것을 볼 수 있습니다.

Kaggle : Dogs vs. Cats 데이터 세트를 다운로드하려면 먼저 kaggle.com에서 계정을 만들어야 합니다.

Dogs vs. Cats 홈페이지 (https://www.kaggle.com/c/dogs-vs-cats/data)로 이동합니다.

train.zip을 다운로드해야합니다. test1.zip을 다운로드하지 마십시오. test1.zip 내의 이미지는 예측을 계산하고 Kaggle 평가 서버에 제출하는 데만 사용됩니다. 자체 학습 및 테스트 분할을 구성하려면 클래스 레이블이 필요하므로 train.zip 만 필요합니다. 자신의 예측 결과를 제출하는 것은 범위를 벗어나지 만 sampleSubmission.csv에 설명된 파일 형식에 따라 test1.zip에 예측을 작성하면 쉽게 수행 할 수 있습니다.

train.zip을 다운로드 한 후 압축을 해제하면 train이라는 디렉토리가 있습니다. 이 디렉토리에는 실제 이미지가 포함되어 있습니다. 레이블 자체는 파일 이름 검사에서 파생 될 수 있습니다. 아래에 파일 이름 샘플을 포함했습니다.

이 프로젝트에 다음 데이터 구조를 사용합니다.

Kaggle : Dogs vs. Cats 대회 전용 폴더에 예제 이미지가 포함 된 train 디렉토리를 저장하는 방법에 주목하십시오. 여기에서 이 프로젝트의 코드를 저장할 dogs_vs_cats 디렉토리가 있습니다. 이제 Dogs vs. Cats 데이터 세트를 다운로드하고 디렉토리 구조를 검토 했으므로 configuration 파일을 만들어 보겠습니다.