Amazon SageMaker의 TensorFlow 객체 감지 모델에 대한 전이 학습

아마존 세이지 메이커 의 제품군을 제공합니다 내장 알고리즘, 사전 훈련 된 모델사전 구축된 솔루션 템플릿 데이터 과학자와 머신 러닝(ML) 실무자가 ML 모델 교육 및 배포를 빠르게 시작할 수 있도록 지원합니다. 지도 및 비지도 학습 모두에 이러한 알고리즘과 모델을 사용할 수 있습니다. 표, 이미지, 텍스트 등 다양한 유형의 입력 데이터를 처리할 수 있습니다.

이 게시물은 SageMaker에 내장된 새로운 알고리즘에 대한 시리즈 중 두 번째 게시물입니다. 에서 첫 번째 게시물에서는 SageMaker가 이미지 분류를 위한 내장 알고리즘을 제공하는 방법을 보여주었습니다. 오늘 우리는 SageMaker가 TensorFlow를 사용하여 객체 감지를 위한 새로운 내장 알고리즘을 제공한다고 발표했습니다. 이 지도 학습 알고리즘은 TensorFlow에서 사용할 수 있는 다양한 사전 학습 모델에 대한 전이 학습을 지원합니다. 이미지를 입력으로 사용하고 경계 상자와 함께 이미지에 있는 객체를 출력합니다. 많은 수의 훈련 이미지를 사용할 수 없는 경우에도 전이 학습을 사용하여 이러한 사전 훈련된 모델을 미세 조정할 수 있습니다. SageMaker를 통해 사용할 수 있습니다. 내장 알고리즘 뿐만 아니라 SageMaker 점프스타트 UI in 아마존 세이지 메이커 스튜디오. 자세한 내용은 다음을 참조하십시오. 객체 감지 Tensorflow 그리고 예시 노트북 SageMaker Tensorflow 소개 – 객체 감지.

SageMaker에서 TensorFlow를 사용한 객체 감지는 TensorFlow Hub에서 사용할 수 있는 사전 훈련된 다양한 모델에 대한 전이 학습을 제공합니다. 훈련 데이터의 클래스 레이블 수에 따라 무작위로 초기화된 새로운 객체 감지 헤드가 TensorFlow 모델의 기존 헤드를 대체합니다. 사전 훈련된 모델을 포함한 전체 네트워크 또는 최상위 계층(객체 감지 헤드)만 새로운 훈련 데이터에 대해 미세 조정할 수 있습니다. 이 전이 학습 모드에서는 더 작은 데이터 세트로도 학습을 달성할 수 있습니다.

새로운 TensorFlow 객체 감지 알고리즘을 사용하는 방법

이 섹션에서는 TensorFlow 객체 감지 알고리즘을 사용하는 방법을 설명합니다. SageMaker Python SDK. Studio UI에서 사용하는 방법에 대한 자세한 내용은 세이지메이커 점프스타트.

알고리즘은 다음에 나열된 사전 훈련된 모델에 대한 전이 학습을 지원합니다. TensorFlow 모델. 각 모델은 고유한 model_id. 다음 코드는 다음으로 식별된 ResNet50 V1 FPN 모델을 미세 조정하는 방법을 보여줍니다. model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 커스텀 트레이닝 데이터셋에서 각각 model_id, 다음을 통해 SageMaker 교육 작업을 시작하려면 견적 SageMaker Python SDK의 클래스를 사용하려면 SageMaker에서 제공하는 유틸리티 함수를 통해 Docker 이미지 URI, 교육 스크립트 URI 및 사전 교육된 모델 URI를 가져와야 합니다. 훈련 스크립트 URI에는 데이터 처리, 사전 훈련된 모델 로드, 모델 훈련 및 추론을 위해 훈련된 모델 저장에 필요한 모든 코드가 포함되어 있습니다. 사전 학습된 모델 URI에는 사전 학습된 모델 아키텍처 정의와 모델 매개변수가 포함되어 있습니다. Docker 이미지 URI와 훈련 스크립트 URI는 모든 TensorFlow 객체 감지 모델에서 동일합니다. 사전 학습된 모델 URI는 특정 모델에 따라 다릅니다. 사전 훈련된 모델 타르볼은 TensorFlow에서 사전 다운로드되었으며 적절한 모델 서명과 함께 저장되었습니다. 아마존 단순 스토리지 서비스 (Amazon S3) 버킷(예: 교육 작업이 네트워크 격리에서 실행됨). 다음 코드를 참조하십시오.

from sagemaker import image_uris, model_uris, script_urisfrom 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 pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-od-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

이러한 모델별 교육 아티팩트를 사용하여 개체를 구성할 수 있습니다. 견적 수업:

# Create SageMaker 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,)

다음으로 사용자 지정 데이터 세트에 대한 전이 학습을 위해 다음 목록에 있는 훈련 하이퍼파라미터의 기본값을 변경해야 할 수 있습니다. 하이퍼 파라미터. 다음을 호출하여 기본값과 함께 이러한 하이퍼파라미터의 Python 사전을 가져올 수 있습니다. hyperparameters.retrieve_default, 필요에 따라 업데이트한 다음 Estimator 클래스에 전달합니다. 일부 하이퍼파라미터의 기본값은 모델마다 다릅니다. 대형 모델의 경우 기본 배치 크기가 더 작고 train_only_top_layer 하이퍼파라미터는 다음으로 설정됩니다. True. 초매개변수 train_only_top_layer 미세 조정 프로세스 중에 변경되는 모델 매개변수를 정의합니다. 만약에 train_only_top_layer is True, 분류 계층의 매개변수가 변경되고 나머지 매개변수는 미세 조정 프로세스 동안 일정하게 유지됩니다. 한편, 만약 train_only_top_layer is False, 모델의 모든 매개변수가 미세 조정됩니다. 다음 코드를 참조하십시오.

from sagemaker import hyperparameters# 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"

우리는 PennFudanPed 데이터 세트 모델을 미세 조정하기 위한 기본 데이터 세트로 사용됩니다. 데이터 세트는 보행자 이미지로 구성됩니다. 다음 코드는 S3 버킷에 호스팅되는 기본 교육 데이터 세트를 제공합니다.

# 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}"

마지막으로 모델 미세 조정을 위한 SageMaker 교육 작업을 시작하려면 다음을 호출합니다. .fit Estimator 클래스의 객체에서 훈련 데이터 세트의 S3 위치를 전달하는 동안:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

사용자 지정 데이터 세트에서 전이 학습을 위해 새로운 SageMaker TensorFlow 객체 감지 알고리즘을 사용하는 방법에 대한 자세한 내용을 보려면 미세 조정된 모델을 배포하고, 배포된 모델에서 추론을 실행하고, 먼저 미세 조정하지 않고 사전 훈련된 모델을 있는 그대로 배포하세요. 사용자 정의 데이터세트에 대해서는 다음 예시 노트북을 참조하세요. SageMaker TensorFlow 소개 – 객체 감지.

TensorFlow 객체 감지 알고리즘을 위한 입력/출력 인터페이스

에 나열된 사전 훈련된 각 모델을 미세 조정할 수 있습니다. TensorFlow 모델 임의의 수의 클래스에 속하는 이미지를 포함하는 임의의 주어진 데이터세트에. 목표는 입력 데이터의 예측 오류를 최소화하는 것입니다. 미세 조정으로 반환된 모델은 추론을 위해 추가로 배포할 수 있습니다. 다음은 모델에 입력하기 위해 훈련 데이터의 형식을 지정하는 방법에 대한 지침입니다.

  • 입력 – 하위 디렉터리 이미지와 파일이 있는 디렉터리 annotations.json.
  • 산출 – 두 가지 출력이 있습니다. 첫 번째는 추론을 위해 배포하거나 증분 학습을 통해 추가로 학습할 수 있는 미세 조정 모델입니다. 두 번째는 클래스 인덱스를 클래스 레이블에 매핑하는 파일입니다. 이는 모델과 함께 저장됩니다.

입력 디렉터리는 다음 예와 같아야 합니다.

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

XNUMXD덴탈의 annotations.json 파일에는 다음에 대한 정보가 있어야 합니다. bounding_boxes 그리고 그들의 클래스 라벨. 키가 포함된 사전이 있어야 합니다. "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}.

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

생성된 모델은 추론을 위해 호스팅될 수 있으며 인코딩된 .jpg, .jpeg 및 .png 이미지 형식을 application/x-image 컨텐츠 타입. 입력 이미지의 크기가 자동으로 조정됩니다. 출력에는 각 예측에 대한 상자, 예측 클래스 및 점수가 포함됩니다. TensorFlow 객체 감지 모델은 요청당 단일 이미지를 처리하고 JSON에서 한 줄만 출력합니다. 다음은 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":}

If acceptapplication/json, 모델은 예측된 상자, 클래스 및 점수만 출력합니다. 학습 및 추론에 대한 자세한 내용은 샘플 노트북을 참조하세요. SageMaker TensorFlow 소개 – 객체 감지.

JumpStart UI를 통해 SageMaker 내장 알고리즘 사용

JumpStart UI를 통해 몇 번의 클릭만으로 SageMaker TensorFlow 객체 감지 및 기타 내장 알고리즘을 사용할 수도 있습니다. JumpStart는 그래픽 인터페이스를 통해 다양한 ML 프레임워크 및 모델 허브에서 내장 알고리즘과 사전 훈련된 모델을 훈련하고 배포할 수 있는 SageMaker 기능입니다. 또한 ML 모델과 다양한 기타 AWS 서비스를 결합하여 목표 사용 사례를 해결하는 완전한 기능을 갖춘 ML 솔루션을 배포할 수 있습니다.

다음은 JumpStart UI를 통해 몇 번의 클릭으로 방금 수행한 것과 동일한 미세 조정 및 배포 프로세스를 복제하는 방법을 보여주는 두 개의 비디오입니다.

사전 훈련된 모델 미세 조정

다음은 동일한 사전 훈련된 객체 감지 모델을 미세 조정하는 프로세스입니다.

미세 조정된 모델 배포

모델 교육이 완료된 후 클릭 한 번으로 영구적인 실시간 엔드포인트에 모델을 직접 배포할 수 있습니다.

결론

이 게시물에서는 SageMaker TensorFlow 객체 감지 내장 알고리즘의 출시를 발표했습니다. 우리는 이 알고리즘을 사용하여 TensorFlow의 사전 훈련된 모델을 사용하여 사용자 정의 데이터세트에서 전이 학습을 수행하는 방법에 대한 예제 코드를 제공했습니다.

자세한 내용은 체크 아웃 선적 서류 비치 그리고 노트북 예.


저자 소개

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 TensorFlow 객체 감지 모델에 대한 전이 학습. 수직 검색. 일체 포함.비벡 마단 박사 는 응용 과학자입니다. Amazon SageMaker JumpStart 팀. 그는 일리노이 대학교 어바나-샴페인 캠퍼스에서 박사 학위를 취득했으며 조지아 공대에서 박사후 연구원을 역임했습니다. 그는 기계 학습 및 알고리즘 설계 분야의 활발한 연구원이며 EMNLP, ICLR, COLT, FOCS 및 SODA 컨퍼런스에 논문을 발표했습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 TensorFlow 객체 감지 모델에 대한 전이 학습. 수직 검색. 일체 포함.주앙 모 우라 Amazon Web Services의 AI/ML 전문가 솔루션 아키텍트입니다. 그는 주로 NLP 사용 사례에 초점을 맞추고 고객이 딥 러닝 모델 교육 및 배포를 최적화하도록 지원합니다. 그는 또한 로우 코드 ML 솔루션과 ML 전문 하드웨어의 적극적인 지지자입니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 TensorFlow 객체 감지 모델에 대한 전이 학습. 수직 검색. 일체 포함.Ashish Khetan 박사 는 수석 응용 과학자입니다. Amazon SageMaker 내장 알고리즘 기계 학습 알고리즘을 개발하는 데 도움이 됩니다. 그는 University of Illinois Urbana Champaign에서 박사 학위를 받았습니다. 그는 머신 러닝 및 통계 추론 분야의 활발한 연구원이며 NeurIPS, ICML, ICLR, JMLR, ACL 및 EMNLP 컨퍼런스에서 많은 논문을 발표했습니다.

타임 스탬프 :

더보기 AWS 기계 학습