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

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

이미지 분류 - TensorFlow

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

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

이미지 분류 - Amazon의 SageMaker 내장 TensorFlow 알고리즘으로 사용할 수 있습니다. 다음 섹션에서는 SageMaker Python TensorFlow SDK와 함께 이미지 분류를 사용하는 방법을 설명합니다. Amazon SageMaker Studio Classic 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 버킷에 저장되므로 교육 작업을 네트워크 격리 상태에서 실행할 수 있습니다. 이러한 사전 생성된 모델 교육 아티팩트를 사용하여 Estimator를 구성하십시오. SageMaker

먼저 Docker 이미지 URI, 훈련 스크립트 URI, 사전 훈련 모델 URI를 검색하세요. 그런 다음 상황에 맞게 하이퍼파라미터를 변경하세요. hyperparameters.retrieve_default을(를) 사용하면 모든 가용 하이퍼파라미터와 해당 하이퍼파라미터의 기본값으로 구성된 Python 사전을 볼 수 있습니다. 자세한 설명은 이미지 분류 - TensorFlow 하이퍼파라미터 섹션을 참조하세요. 이 값을 사용하여 Estimator를 구성하십시오. SageMaker

참고

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

이 예제에서는 다섯 개의 꽃 이미지 클래스가 포함된 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 형식으로 포함되어야 합니다.

다음은 입력 디렉터리 구조의 예제입니다. 이 예제 데이터 세트에는 rosesdandelion이라는 두 개의 클래스가 있습니다. 각 클래스 폴더의 이미지 파일 이름은 임의로 지정할 수 있습니다. 입력 디렉터리는 s3://bucket_name/input_directory/와 비슷한 경로를 가진 Amazon S3 버킷에 호스팅되어야 합니다. 단, / 후행은 필수입니다.

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

훈련된 모델은 클래스 폴더 이름을 출력 클래스 확률 목록의 인덱스에 매핑하는 레이블 매핑 파일을 출력합니다. 매핑은 알파벳 순서로 표시됩니다. 예를 들어, 위 예제에서 dandelion 클래스는 인덱스 0이고 roses 클래스는 인덱스 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}

accept을(를) application/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 노트북 인스턴스를 만들고 액세스하는 방법에 대한 지침은 을 참조하십시오. 아마존 SageMaker 노트북 인스턴스 Notebook 인스턴스를 생성하여 연 후 SageMakerExamples 탭을 선택하면 모든 샘플 목록이 표시됩니다. SageMaker 노트북을 열려면 사용 탭을 선택한 후 사본 생성을 선택합니다.