이미지 분류 - TensorFlow - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

이미지 분류 - TensorFlow

Amazon SageMaker 이미지 분류 - TensorFlow 알고리즘은 TensorFlow Hub에서 사전 학습된 여러 모델을 사용하여 전이 학습을 지원하는 지도 학습 알고리즘입니다. 전이 학습을 사용하면 대량의 이미지 데이터를 사용할 수 없는 경우에도 자체 데이터세트에서 사용 가능한 사전 학습된 모델 중 하나를 미세 조정할 수 있습니다. 이미지 분류 알고리즘은 이미지를 입력으로 받아 제공된 각 클래스 레이블에 대한 확률을 출력합니다. 학습 데이터세트는.jpg, .jpeg 또는.png 형식의 이미지로 구성되어야 합니다.

SageMaker 이미지 분류 - TensorFlow 알고리즘 사용 방법

이미지 분류를 Amazon SageMaker 내장 TensorFlow 알고리즘으로 사용할 수 있습니다. 다음 섹션에서는 SageMaker Python TensorFlow SDK와 함께 이미지 분류를 사용하는 방법을 설명합니다. Amazon SageMaker Studio TensorFlow UI에서 이미지 분류를 사용하는 방법에 대한 자세한 내용은 을 참조하십시오SageMaker JumpStart.

이미지 분류 - TensorFlow 알고리즘은 호환되는 사전 훈련된 TensorFlow Hub 모델을 사용하여 전이 학습을 지원합니다. 사용 가능한 모든 사전 훈련 모델의 목록은 단원을 참조하십시오TensorFlow 허브 모델. 사전 학습된 모든 모델에는 고유한 특성이model_id 있습니다. 다음 예제에서는 MobileNet V2 1.00 224 (model_id:tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4) 를 사용하여 사용자 지정 데이터세트를 미세 조정합니다. 사전 학습된 모델은 모두 TensorFlow Hub에서 사전 다운로드되고 Amazon S3 버킷에 저장되므로 교육 작업이 네트워크 격리 상태에서 실행될 수 있습니다. 사전 생성된 이러한 모델 학습 아티팩트를 사용하여 SageMaker Estimator를 구성하십시오.

먼저 Docker 이미지 URI, 학습 스크립트 URI 및 사전 학습된 모델 URI를 검색합니다. 그런 다음 하이퍼파라미터를 원하는 대로 변경합니다. 를 사용하여 사용 가능한 모든 하이퍼파라미터와 해당 기본값의 Python 사전을 볼 수hyperparameters.retrieve_default 있습니다. 자세한 정보는 이미지 분류 - TensorFlow 하이퍼파라미터을 참조하세요. 이 값을 사용하여 SageMaker Estimator를 구성하십시오.

참고

기본 하이퍼파라미터 값은 모델마다 다릅니다. 대형 모형의 경우 기본 배치 크기가 더 작고train_only_on_top 하이퍼파라미터는 로 설정됩니다"True".

이 예제에서는 5가지 클래스의 꽃 이미지가 포함된 tf_flowers데이터세트를 사용합니다. Apache 2.0 라이선스에 TensorFlow 따라 데이터 세트를 사전 다운로드하여 Amazon S3에서 사용할 수 있게 했습니다. 모델을 미세 조정하려면 학습 데이터 세트의 Amazon S3 위치를.fit 사용하여 호출하십시오.

from sagemaker import image_uris, model_uris, script_uris, hyperparameters from sagemaker.estimator import Estimator model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*" training_instance_type = "ml.p3.2xlarge" # Retrieve the Docker image train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None) # Retrieve the training script train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pretrained model tarball for transfer learning train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training") # Retrieve the default hyper-parameters for fine-tuning the model hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version) # [Optional] Override default hyperparameters with custom values hyperparameters["epochs"] = "5" # The sample training data is available in the following S3 bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/tf_flowers/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-ic-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" # Create SageMaker Estimator instance tf_ic_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location, ) # Use S3 path of the training data to launch SageMaker TrainingJob tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

이미지 분류를 위한 입력 및 출력 인터페이스 - TensorFlow 알고리즘

TensorFlow Hub Models에 나열된 사전 학습된 각 모델은 이미지 클래스 수에 관계없이 모든 데이터세트에 맞게 미세 조정할 수 있습니다. 영상 분류 - TensorFlow 모델에 입력할 훈련 데이터의 형식을 지정하는 방법을 염두에 두세요.

  • 훈련 데이터 입력 형식: 훈련 데이터는 클래스 수만큼 많은 하위 디렉토리가 있는 디렉터리여야 합니다. 각 하위 디렉터리에는 해당 클래스에 속하는.jpg, .jpeg 또는.png 형식의 이미지가 포함되어야 합니다.

다음은 입력 디렉터리 구조의 예제입니다. 이 예제 데이터세트에는roses 및 라는 두 개의 클래스가 있습니다dandelion. 각 클래스 폴더의 이미지 파일은 원하는 이름을 가질 수 있습니다. 입력 디렉터리는 다음과 비슷한 경로를 가진 Amazon S3 버킷에 호스팅되어야s3://bucket_name/input_directory/ 합니다. 참고로/ 후행은 필수입니다.

input_directory |--roses |--abc.jpg |--def.jpg |--dandelion |--ghi.jpg |--jkl.jpg

학습된 모델은 클래스 폴더 이름을 출력 클래스 확률 목록의 인덱스에 매핑하는 레이블 매핑 파일을 출력합니다. 이 매핑은 사전순으로 되어 있습니다. 예를 들어, 위 예제에서 민들레 클래스는 인덱스 0이고 장미 클래스는 인덱스 1입니다.

학습 후에는 점진적 훈련을 사용하여 추가로 훈련하거나 추론을 위해 배포할 수 있는 미세 조정된 모델을 갖게 됩니다. 이미지 분류 - TensorFlow 알고리즘은 이미지를 입력으로 받아 클래스 확률을 반환할 수 있도록 미세 조정된 모델에 전처리 및 후처리 서명을 자동으로 추가합니다. 클래스 레이블에 대한 파일 매핑 클래스 인덱스는 모델과 함께 저장됩니다.

증분 훈련

이전에 학습한 모델의 아티팩트를 사용하여 새 모델의 학습을 시드할 수 SageMaker 있습니다. 동일하거나 유사한 데이터로 새 모델을 훈련시키려는 경우 증분 훈련을 통해 학습 시간을 절약할 수 있습니다.

참고

이미지 분류 - 모델을 학습된 다른 SageMaker 이미지 분류 - TensorFlow TensorFlow 모델에만 시드할 수 SageMaker 있습니다.

클래스 세트가 동일하게 유지되는 한 모든 데이터세트를 증분 훈련에 사용할 수 있습니다. 증분 훈련 단계는 미세 조정 단계와 유사하지만 사전 훈련된 모델에서 시작하는 대신 기존의 미세 조정 모델에서 시작합니다. SageMaker이미지 분류 - TensorFlow 알고리즘을 사용한 증분 훈련의 예는 소개 SageMaker TensorFlow - 이미지 분류 샘플 노트북을 참조하십시오.

이미지 분류를 통한 추론 - TensorFlow 알고리즘

추론을 위한 TensorFlow 이미지 분류 학습의 결과로 미세 조정된 모델을 호스팅할 수 있습니다. 추론을 위한 모든 입력 이미지는.jpg, 에 있어야 합니다. jpeg또는.png 형식 및 콘텐츠 유형일 수application/x-image 있습니다. 이미지 분류 - TensorFlow 알고리즘은 입력 이미지의 크기를 자동으로 조정합니다.

추론을 실행하면 확률 값, 모든 클래스의 클래스 레이블, JSON 형식으로 인코딩된 확률이 가장 높은 클래스 인덱스에 해당하는 예측 레이블이 생성됩니다. 이미지 분류 - TensorFlow 모델은 요청당 하나의 이미지를 처리하고 한 줄만 출력합니다. 다음은 JSON 형식 응답의 예제입니다.

accept: application/json;verbose {"probabilities": [prob_0, prob_1, prob_2, ...], "labels": [label_0, label_1, label_2, ...], "predicted_label": predicted_label}

acceptapplication/json 설정된 경우 모델은 확률만 출력합니다. 이미지 분류 - TensorFlow 알고리즘을 사용한 학습 및 추론에 대한 자세한 내용은 소개 SageMaker TensorFlow - 이미지 분류 샘플 노트북을 참조하십시오.

이미지 분류를 위한 Amazon EC2 인스턴스 권장 사항 - TensorFlow 알고리즘

이미지 분류 - TensorFlow 알고리즘은 다음을 포함하여 트레이닝을 위한 모든 CPU 및 GPU 인스턴스를 지원합니다.

  • ml.p2.xlarge

  • ml.p2.16xlarge

  • ml.p3.2xlarge

  • ml.p3.16xlarge

  • ml.g4dn.xlarge

  • ml.g4dn.16.xlarge

  • ml.g5.xlarge

  • ml.g5.48xlarge

배치 크기가 큰 학습에는 메모리가 더 많은 GPU 인스턴스를 사용하는 것이 좋습니다. CPU (예: M5) 및 GPU (P2, P3, G4dn 또는 G5) 인스턴스를 모두 추론에 사용할 수 있습니다.

이미지 분류 - TensorFlow 샘플 노트북

사용자 지정 데이터세트에서 전이 학습을 위한 SageMaker 이미지 분류 - TensorFlow 알고리즘을 사용하는 방법에 대한 자세한 내용은 소개 SageMaker TensorFlow - 이미지 분류 노트북을 참조하십시오.

에서 SageMaker 예제를 실행하는 데 사용할 수 있는 Jupyter 노트북 인스턴스를 만들고 액세스하는 방법에 대한 지침은 을 참조하십시오Amazon SageMaker 노트북 인스턴스 사용. 노트북 인스턴스를 만들고 연 후 SageMakerExamples 탭을 선택하면 모든 SageMaker 샘플 목록이 표시됩니다. 노트북을 열려면 사용 탭을 선택한 후 Create copy(사본 생성)를 선택합니다.