Kaggle Dogs top5 acquire python machineLearning Augmentation 딥러닝

물론 Kaggle Dogs vs. Cats 순위표를 살펴보면 상위 25 위 순위에 진입하려면 96.69 %의 정확도가 필요하지만 현재 방법으로는 도달 할 수 없습니다. 그렇다면 해결책은 무엇입니까?

대답은 전이 학습, 특히 특징 추출을 통한 전이 학습입니다. ImageNet 데이터 세트는 1,000 개의 개체 범주로 구성되어 있지만 그중 상당 부분에는 개 종과 고양이 종이 포함됩니다. 따라서 ImageNet에서 훈련 된 네트워크는 이미지가 개인 지 고양이인지뿐만 아니라 동물의 특정 품종도 알려줄 수 있습니다. ImageNet에서 훈련 된 네트워크가 이러한 세분화 된 동물을 구별 할 수 있어야한다는 점을 감안할 때, 사전 훈련 된 네트워크에서 추출한 기능이 Kaggle Dogs vs. Cats에서 최고의 자리를 차지할 가능성이 높다고 가정하는 것은 당연합니다.

이 가설을 테스트하기 위해 먼저 사전 훈련 된 ResNet 아키텍처에서 특성을 추출한 다음 이러한 특성 위에 로지스틱 회귀 분류기를 훈련시켜 보겠습니다.

30.6.1 ResNet을 이용한 피처 추출

이 섹션에서 사용할 특징 추출 기술을 통한 전이 학습은 30 장을 기반으로합니다. 전체적인 문제로 extract_features.py의 전체 내용을 검토하겠습니다. 그러나 CNN을 사용한 특징 추출에 대한 추가 지식이 필요한 경우 30 장을 참조하십시오. 시작하려면 새 파일을 열고 이름을 extract_features.py로 지정한 후 다음 코드를 삽입하십시오.

2 ~ 13 행은 필수 Python 패키지를 가져옵니다. 사전 학습 된 ResNet 아키텍처에 액세스 할 수 있도록 2 행에서 ResNet50 클래스를 가져옵니다. 또한 7 행에서 HDF5DatasetWriter를 사용하여 추출 된 기능을 효율적으로 HDF5 파일 형식으로 작성할 수 있습니다. 여기에서 명령 줄 인수를 구문 분석해 보겠습니다

여기에는 두 개의 필수 명령 줄 인수 인 –dataset 만 필요합니다.이 인수는 Dogs vs. Cats 이미지의 입력 데이터 세트 경로이고, –output은 ResNet을 통해 추출 된 기능을 포함하는 출력 HDF5 파일 경로입니다. 다음으로 디스크에있는 Dogs vs. Cats 이미지의 경로를 가져온 다음 파일 경로를 사용하여 레이블 이름을 추출해 보겠습니다.

이제 디스크에서 사전 훈련 된 ResNet50 가중치를 로드 할 수 있습니다 (FC 레이어 제외).#

ResNet50에서 추출한 기능을 디스크에 저장하려면 HDF5DatasetWriter 객체를 인스턴스화 해야합니다.

ResNet50의 최종 평균 풀링 레이어는 100352 (224 x 224 x 2 = 100352) 이므로 HDF5datasetWriter에 차원으로 100352 값을 제공합니다. 또한 기능 추출 프로세스를 추적 할 수 있도록 진행률 표시 줄을 초기화합니다.

CNN을 사용하여 데이터 세트에서 특징을 추출하는 것은 30 장에서와 동일합니다. 먼저, 일괄적으로 imagePath를 반복합니다

이어서 각 이미지를 사전 처리합니다.

그런 다음 네트워크 아키텍처를 통해 batchImage를 전달하여 ResNet50의 최종 POOL 계층에서 기능을 추출 할 수 있습니다.

이렇게 추출 된 피처는 데이터 세트에 추가 합니다.

ResNet을 활용하여 Dogs vs. Cats 데이터 세트에서 특징을 추출하려면 다음 명령을 실행하면됩니다.

명령 실행이 완료되면 이제 출력 디렉토리에 dogs_vs_cats_features.hdf5라는 파일이 있어야합니다.

이러한 기능이 주어지면 그 위에 로지스틱 회귀 분류기를 훈련하여 Kaggle Dogs vs. Cats 리더 보드에서 top-5위 자리를 얻을 수 있습니다.