기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
물체 감지 - TensorFlow
Amazon SageMaker Object Detection - TensorFlow 알고리즘은 TensorFlow Modeljpg
, .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
.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://
와(과) 비슷한 경로를 가진 Amazon S3 버킷에 호스팅되어야 합니다. 단, 후행 bucket_name
/input_directory
//
은(는) 필수입니다.
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 노트북을 열려면 사용 탭을 선택한 후 사본 생성을 선택합니다.