Amazon SageMaker での TensorFlow オブジェクト検出モデルの転移学習

アマゾンセージメーカー のスイートを提供します 組み込みアルゴリズム, 事前トレーニング済みモデル, 構築済みのソリューションテンプレート データサイエンティストと機械学習(ML)の実践者が、MLモデルのトレーニングと展開を迅速に開始できるように支援します。 これらのアルゴリズムとモデルは、教師あり学習と教師なし学習の両方に使用できます。 表形式、画像、テキストなど、さまざまな種類の入力データを処理できます。

この投稿は、SageMaker の新しい組み込みアルゴリズムに関するシリーズの XNUMX 番目です。 の中に 最初の投稿では、SageMaker が画像分類用の組み込みアルゴリズムをどのように提供するかを示しました。 本日、SageMaker が TensorFlow を使用したオブジェクト検出用の新しい組み込みアルゴリズムを提供することを発表します。 この教師あり学習アルゴリズムは、TensorFlow で利用可能な多くの事前トレーニング済みモデルの転移学習をサポートしています。 画像を入力として受け取り、画像内に存在するオブジェクトをバウンディング ボックスと共に出力します。 大量のトレーニング画像が利用できない場合でも、転移学習を使用してこれらの事前トレーニング済みモデルを微調整できます。 SageMaker から入手できます 組み込みアルゴリズム だけでなく、 SageMaker ジャンプスタート UI in Amazon SageMakerスタジオ。 詳細については、を参照してください。 オブジェクト検出 Tensorflow と例のノートブック SageMaker Tensorflow の紹介 – オブジェクト検出.

SageMaker の TensorFlow を使用したオブジェクト検出は、TensorFlow Hub で利用可能な多くの事前トレーニング済みモデルで転移学習を提供します。 トレーニング データ内のクラス ラベルの数に応じて、ランダムに初期化された新しいオブジェクト検出ヘッドが TensorFlow モデルの既存のヘッドに置き換わります。 事前トレーニング済みのモデルを含むネットワーク全体、または最上位レイヤー (オブジェクト検出ヘッド) のみを新しいトレーニング データで微調整できます。 この転移学習モードでは、より小さなデータセットでもトレーニングを実現できます。

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

このセクションでは、TensorFlow オブジェクト検出アルゴリズムを SageMaker Python SDK. Studio UI からの使用方法については、 SageMaker ジャンプスタート.

このアルゴリズムは、にリストされている事前トレーニング済みモデルの転移学習をサポートしています。 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 は、特定のモデルに固有です。 事前トレーニング済みのモデル tarball は、TensorFlow から事前にダウンロードされ、適切なモデル シグネチャで .xml に保存されています。 Amazon シンプル ストレージ サービス (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.
  • 出力 – XNUMX つの出力があります。 XNUMX つ目は微調整されたモデルで、推論用にデプロイしたり、増分トレーニングを使用してさらにトレーニングしたりできます。 XNUMX つ目は、クラス インデックスをクラス ラベルにマップするファイルです。 これはモデルとともに保存されます。

入力ディレクトリは次の例のようになります。

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

  annotations.json ファイルには次の情報が含まれている必要があります bounding_boxes およびそのクラス ラベル。 キーを含む辞書が必要です "images" & "annotations"。 の値 "images" キーは、フォームの画像ごとに XNUMX つのエントリのリストである必要があります {"file_name": image_name, "height": height, "width": width, "id": image_id}。 の価値 "annotations" key は、フォームの境界ボックスごとに XNUMX つのエントリのリストである必要があります {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

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

生成されたモデルは、推論のためにホストでき、エンコードされた .jpg、.jpeg、および .png 画像形式を application/x-image コンテンツ タイプ。 入力画像は自動的にリサイズされます。 出力には、各予測のボックス、予測クラス、およびスコアが含まれます。 TensorFlow オブジェクト検出モデルは、リクエストごとに XNUMX つの画像を処理し、JSON で XNUMX 行のみを出力します。 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 accept に設定されています application/jsonの場合、モデルは予測されたボックス、クラス、およびスコアのみを出力します。 トレーニングと推論の詳細については、サンプル ノートブックを参照してください。 SageMaker TensorFlow の紹介 – オブジェクト検出.

JumpStart UI を介して SageMaker 組み込みアルゴリズムを使用する

JumpStart UI から数回クリックするだけで、SageMaker TensorFlow オブジェクト検出やその他の組み込みアルゴリズムを使用することもできます。 JumpStart は SageMaker の機能であり、組み込みアルゴリズムと事前トレーニング済みのモデルをさまざまな ML フレームワークとモデル ハブからグラフィカル インターフェイスを介してトレーニングおよびデプロイできるようにします。 また、ML モデルとその他のさまざまな AWS サービスを組み合わせて、ターゲットを絞ったユースケースを解決する本格的な ML ソリューションをデプロイすることもできます。

次の XNUMX つのビデオでは、JumpStart UI を介して数回クリックするだけで、先ほど行ったのと同じ微調整およびデプロイ プロセスを再現する方法を示しています。

事前にトレーニングされたモデルを微調整します

これは、同じ事前トレーニング済みのオブジェクト検出モデルを微調整するプロセスです。

微調整されたモデルをデプロイする

モデルのトレーニングが完了したら、ワンクリックで永続的なリアルタイム エンドポイントにモデルを直接デプロイできます。

まとめ

この投稿では、SageMaker TensorFlow オブジェクト検出組み込みアルゴリズムのリリースを発表しました。 このアルゴリズムを使用して、TensorFlow の事前トレーニング済みモデルを使用して、カスタム データセットで転移学習を行う方法のサンプル コードを提供しました。

詳細については、チェックアウト ドキュメントサンプルノート.


著者について

Transfer learning for TensorFlow object detection models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.ヴィヴェック・マダン博士 応用科学者であり、 AmazonSageMakerJumpStartチーム. イリノイ大学アーバナ シャンペーン校で博士号を取得し、ジョージア工科大学で博士研究員を務めました。 彼は機械学習とアルゴリズム設計の活発な研究者であり、EMNLP、ICLR、COLT、FOCS、および SODA カンファレンスで論文を発表しています。

Transfer learning for TensorFlow object detection models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.ジョアンモウラ アマゾン ウェブ サービスの AI/ML スペシャリスト ソリューション アーキテクトです。 彼は主に NLP のユース ケースに焦点を当てており、顧客が深層学習モデルのトレーニングと展開を最適化するのを支援しています。 また、ローコード ML ソリューションと ML に特化したハードウェアの積極的な支持者でもあります。

Transfer learning for TensorFlow object detection models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.アシッシュ・ケタン博士 の上級応用科学者です AmazonSageMakerの組み込みアルゴリズム 機械学習アルゴリズムの開発を支援します。 イリノイ大学アーバナ シャンペーン校で博士号を取得。 彼は機械学習と統計的推論の活発な研究者であり、NeurIPS、ICML、ICLR、JMLR、ACL、および EMNLP カンファレンスで多くの論文を発表しています。

タイムスタンプ:

より多くの AWS機械学習