オブジェクト検出 - TensorFlow - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

オブジェクト検出 - TensorFlow

Amazon SageMaker Object Detection - TensorFlow algorithm は、TensorFlow Modeldar からの多くの事前トレーニング済みモデルによる転送学習をサポートする教師あり学習アルゴリズムです。大量の画像データが使用可能でない場合でも、転移学習を使用して、使用可能な事前トレーニング済みモデルのいずれかを独自のデータセットで微調整できます。オブジェクト検出アルゴリズムは画像を入力として受け取り、境界ボックスのリストを出力します。トレーニングデータセットは jpg.jpeg、または .png フォーマット内の画像で構成されている必要があります。。

SageMaker オブジェクト検出 - TensorFlow アルゴリズムの使用方法

オブジェクト検出は、Amazon SageMaker 組み込みアルゴリズム TensorFlow として使用できます。次のセクションでは、 SageMaker Python SDK TensorFlow でオブジェクト検出を使用する方法について説明します。Amazon SageMaker Studio Classic UI TensorFlow からオブジェクト検出を使用する方法については、「」を参照してくださいで事前トレーニング済みモデルをトレーニング、デプロイ、評価する SageMaker JumpStart

オブジェクト検出 TensorFlow アルゴリズムは、互換性のある事前トレーニング済み TensorFlow モデルを使用した転送学習をサポートします。使用可能なすべての事前トレーニング済みモデルのリストについては、「TensorFlow モデル」を参照してください。すべての事前トレーニング済みモデルには一意の model_id があります。次の例では、 ResNet50 (model_id: tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8) を使用してカスタムデータセットを微調整します。トレーニング済みモデルはすべて TensorFlow Hub からプリダウンロードされ、Amazon S3 バケットに保存されるため、トレーニングジョブをネットワーク分離で実行できます。これらの事前に生成されたモデルトレーニングアーティファクトを使用して SageMaker 推定器を構築します。

まず、Docker イメージ URI、トレーニングスクリプト URI、および事前トレーニング済みのモデル URI を取得します。次に、必要に応じてハイパーパラメータを変更します。使用可能なすべてのハイパーパラメータとそのデフォルト値の Python ディクショナリは、hyperparameters.retrieve_default で確認できます。詳細については、「オブジェクト検出 - TensorFlow ハイパーパラメータ」を参照してください。これらの値を使用して 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 「モデル」にリストされている事前トレーニング済みモデルはそれぞれ、任意の数のイメージクラスを持つ任意のデータセットに微調整できます。オブジェクト検出 TensorFlow モデルへの入力用にトレーニングデータをフォーマットする方法に注意してください。

  • トレーニングデータ入力形式: トレーニングデータは、images サブディレクトリと annotations.json ファイルを含むディレクトリでなければなりません。

入力のディレクトリ構造の例を次に示します。入力ディレクトリは、次のようなパスの Amazon S3 バケットでホストされている必要があります。s3://bucket_name/input_directory/末尾の / は必須であることに注意してください。

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

annotations.json ファイルには、境界ボックスとそのクラスラベルに関する情報がディクショナリと "images" および "annotations"キーの形式で含まれている必要があります。"images" キーの値はディクショナリのリストである必要があります。画像ごとに以下の情報を含むディクショナリが 1 つある必要があります。{"file_name": image_name, "height": height, "width": width, "id": image_id}"annotations" キーの値もディクショナリのリストである必要があります。境界ボックスごとに、以下の情報を含む辞書が 1 つある必要があります。{"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}

トレーニング後、ラベルマッピングファイルとトレーニング済みモデルが Amazon S3 バケットに保存されます。

段階的トレーニング

で以前にトレーニングしたモデルのアーティファクトを使用して、新しいモデルのトレーニングをシードできます SageMaker。段階的トレーニングでは、同じモデルまたは類似のデータを使用して新しいモデルをトレーニングする際のトレーニング時間が短縮されます。

注記

SageMaker オブジェクト検出 TensorFlow モデルをシードできるのは、 でトレーニングされた別のオブジェクト検出 TensorFlow モデルのみです SageMaker。

一連のクラスが同じままである限り、任意のデータセットを段階的トレーニングに使用できます。段階的トレーニングのステップは微調整のステップと同様ですが、事前トレーニング済みモデルから始める代わりに、既存の微調整済みモデルから始めます。 SageMaker オブジェクト検出 - で段階的トレーニングを使用する方法の詳細については TensorFlow、「 入門 SageMaker TensorFlow - オブジェクト検出ノートブック」を参照してください。

オブジェクト検出による推論 - TensorFlow アルゴリズム

推論のための TensorFlow オブジェクト検出トレーニングの結果として生じる微調整されたモデルをホストできます。推論用の入力画像はすべて .jpgjpeg、または .png 形式で、コンテンツタイプ application/x-image である必要があります。オブジェクト検出 - TensorFlow アルゴリズムは、入力イメージのサイズを自動的に変更します。

推論を実行すると、境界ボックス、予測クラス、各予測のスコアが JSON 形式でエンコードされます。オブジェクト検出 - TensorFlow モデルはリクエストごとに 1 つのイメージを処理し、1 行のみを出力します。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>}

acceptapplication/json に設定されている場合、モデルは正規化されたボックス、クラス、スコアのみを出力します。

オブジェクト検出 - TensorFlow アルゴリズムに対する Amazon EC2 インスタンスの推奨事項

オブジェクト検出 - TensorFlow アルゴリズムは、以下を含むトレーニングのすべての GPU インスタンスをサポートします。

  • ml.p2.xlarge

  • ml.p2.16xlarge

  • ml.p3.2xlarge

  • ml.p3.16xlarge

大きなバッチサイズのトレーニングにはメモリが多い GPU インスタンスを使用することをお勧めします。CPU (M5 など) インスタンスと GPU (P2 または P3) インスタンスの両方を推論に使用できます。 AWS リージョン間の SageMaker トレーニングインスタンスと推論インスタンスの包括的なリストについては、「Amazon SageMaker 料金表」を参照してください。

オブジェクト検出 - TensorFlow サンプルノートブック

カスタムデータセットの転送学習に SageMaker オブジェクト検出アルゴリズムを使用する方法の詳細については、 TensorFlow 「 入門 SageMaker TensorFlow - オブジェクト検出ノートブック」を参照してください。

でサンプルを実行するために使用できる Jupyter Notebook インスタンスを作成してアクセスする方法については SageMaker、「」を参照してくださいAmazon SageMaker Notebook インスタンス。ノートブックインスタンスを作成して開いたら、SageMaker「例」タブを選択して、すべての SageMaker サンプルのリストを表示します。ノートブックを開くには、その [Use (使用)] タブを選択し、[Create copy (コピーを作成)] を選択します。