물체 감지 - TensorFlow - 아마존 SageMaker

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

물체 감지 - TensorFlow

Amazon SageMaker Object Detection - TensorFlow 알고리즘은 TensorFlow Model Garden에서 사전 학습된 여러 모델을 사용하여 전이 학습을 지원하는 지도 학습 알고리즘입니다. 대량의 이미지 데이터를 사용할 수 없는 경우에도 학습 전송을 이용하여 자체 데이터 세트에서 사전 훈련된 가용 모델 중 하나를 미세 조정할 수 있습니다. 객체 감지 알고리즘은 이미지를 입력으로 받아들여 경계 상자 목록을 출력합니다. 훈련 데이터 세트는 jpg, .jpeg 또는 .png 형식의 이미지로 구성되어야 합니다.

SageMaker 객체 감지 사용 방법 - 알고리즘 TensorFlow

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

객체 감지 - TensorFlow 알고리즘은 호환되는 사전 학습된 모든 TensorFlow 모델을 사용한 전이 학습을 지원합니다. 사용 가능한 모든 사전 훈련 모델의 목록은 TensorFlow 모델을(를) 참조하세요. 모든 사전 훈련 모델에는 고유한 model_id이(가) 있습니다. 다음 예제에서는 ResNet 50 (model_id:tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8) 을 사용하여 사용자 지정 데이터셋을 미세 조정합니다. 사전 학습된 모델은 모두 TensorFlow Hub에서 사전 다운로드되고 Amazon S3 버킷에 저장되므로 교육 작업을 네트워크 격리 상태에서 실행할 수 있습니다. 이러한 사전 생성된 모델 교육 아티팩트를 사용하여 Estimator를 구성하십시오. SageMaker

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

참고

기본 하이퍼파라미터 값은 모델마다 다릅니다. 그 예로 대형 모델일수록 기본 에포크 수가 적습니다.

이 예제에서는 거리의 보행자가 담긴 이미지를 포함하는 PennFudanPed 데이터 세트를 사용합니다. 데이터 세트를 사전 다운로드하여 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-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8", "*" 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 hyperparameters 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" # Sample training data is available in this bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/PennFudanPed_COCO_format/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-od-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" # Create an Estimator instance tf_od_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, ) # Launch a training job tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

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

객체 감지를 위한 입력 및 출력 인터페이스 - 알고리즘 TensorFlow

모델에 나열된 사전 훈련된 각 모델은 이미지 클래스의 TensorFlow 개수에 제한이 없는 모든 데이터셋에 맞게 미세 조정할 수 있습니다. Object Detection - 모델에 입력하기 위해 훈련 데이터의 형식을 지정하는 방법을 염두에 두세요. TensorFlow

  • 훈련 데이터 입력 형식: 훈련 데이터는 images 하위 디렉터리 및 annotations.json 파일이 있는 디렉터리여야 합니다.

다음은 입력 디렉터리 구조의 예제입니다. 입력 디렉터리는 s3://bucket_name/input_directory/와(과) 비슷한 경로를 가진 Amazon S3 버킷에 호스팅되어야 합니다. 단, 후행 /은(는) 필수입니다.

input_directory |--images |--abc.png |--def.png |--annotations.json

annotations.json 파일에는 경계 상자 및 해당 클래스 레이블에 대한 정보가 "images" 사전 및 "annotations"개 키의 형태로 들어 있어야 합니다. "images" 키의 값은 사전 목록이어야 합니다. 각 이미지에는 {"file_name": image_name, "height": height, "width": width, "id": image_id}에 해당하는 정보가 포함된 사전이 하나씩 있어야 합니다. "annotations" 키의 값 역시 사전 목록이어야 합니다. 각 경계 상자에는 {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}에 해당하는 정보가 포함된 사전이 하나씩 있어야 합니다.

훈련 이후에는 레이블 매핑 파일과 훈련된 모델이 Amazon S3 버킷에 저장됩니다.

증분 훈련

이전에 학습시킨 모델의 아티팩트를 사용하여 새 모델을 훈련시킬 수 있습니다. SageMaker 증분 훈련은 동일하거나 유사한 데이터로 새 모델을 훈련하려는 경우 훈련 시간을 절감시켜 줍니다.

참고

에서 SageMaker 학습된 다른 SageMaker 객체 탐지 모델로만 객체 탐지 ( TensorFlow 모델) 를 시드할 수 있습니다. TensorFlow

클래스 세트가 동일하게 유지되는 한 어떤 데이터 세트라도 증분 훈련에 사용할 수 있습니다. 증분 훈련 단계는 미세 조정 단계와 비슷하지만, 사전 훈련 모델로 시작되는 대신 기존의 미세 조정 모델로 시작됩니다. SageMaker 물체 감지 -와 함께 증분 훈련을 사용하는 방법에 대한 자세한 내용은 소개 SageMaker TensorFlow - TensorFlow 물체 감지 노트북을 참조하십시오.

객체 감지를 통한 추론 - 알고리즘 TensorFlow

추론을 위한 TensorFlow 객체 감지 훈련의 결과로 미세 조정된 모델을 호스팅할 수 있습니다. 모든 추론용 입력 이미지는 .jpg, jpeg 또는 .png 형식이면서 application/x-image 콘텐츠 유형이어야 합니다. 객체 감지 - TensorFlow 알고리즘은 입력 영상의 크기를 자동으로 조정합니다.

추론을 실행하면 경계 상자, 예측 클래스, 그리고 JSON 형식으로 인코딩된 각 예측의 점수가 생성됩니다. 객체 감지 - TensorFlow 모델은 요청당 단일 이미지를 처리하고 한 줄만 출력합니다. 다음은 JSON 형식 응답의 예제입니다.

accept: application/json;verbose {"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], "classes":[classidx1, class_idx2,...], "scores":[score_1, score_2,...], "labels": [label1, label2, ...], "tensorflow_model_output":<original output of the model>}

accept을(를) application/json로 설정하면 이 모델이 정규화 상자, 클래스 및 점수만 출력합니다.

객체 감지를 위한 Amazon EC2 인스턴스 권장 사항 - 알고리즘 TensorFlow

객체 감지 - TensorFlow 알고리즘은 다음을 포함하여 모든 GPU 인스턴스를 교육용으로 지원합니다.

  • ml.p2.xlarge

  • ml.p2.16xlarge

  • ml.p3.2xlarge

  • ml.p3.16xlarge

배치 크기가 큰 훈련일수록 메모리 용량이 많은 GPU 인스턴스를 사용하는 것이 좋습니다. CPU(예: M5) 인스턴스 및 GPU(P2 또는 P3) 인스턴스는 둘 다 추론에 사용할 수 있습니다. AWS 지역별 SageMaker 교육 및 추론 인스턴스의 포괄적인 목록은 Amazon SageMaker Pricing을 참조하십시오.

객체 감지 - TensorFlow 샘플 노트북

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

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