Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bildklassifizierung – TensorFlow
Der Amazon SageMaker Image Classification - TensorFlow Algorithmus ist ein Algorithmus für überwachtes Lernen, der Transfer Learning mit vielen vortrainierten Modellen aus dem TensorFlow Hub
Themen
- So verwenden Sie den SageMaker Bildklassifizierungsalgorithmus TensorFlow
- Eingabe- und Ausgabeschnittstelle für den Bildklassifizierungsalgorithmus TensorFlow
- Amazon EC2-Instance-Empfehlung für den Bildklassifizierungsalgorithmus TensorFlow
- Bildklassifizierung – TensorFlow Beispiel-Notebooks
- Funktionsweise TensorFlow der Bildklassifizierung –
- TensorFlow Hub-Modelle
- Bildklassifizierung – TensorFlow Hyperparameter
- Optimieren einer Bildklassifizierung – TensorFlow Modell
So verwenden Sie den SageMaker Bildklassifizierungsalgorithmus TensorFlow
Sie können die Bildklassifizierung TensorFlow als integrierten Amazon SageMaker -Algorithmus verwenden. Im folgenden Abschnitt wird beschrieben, wie Sie die Bildklassifizierung TensorFlow mit dem SageMaker Python-SDK verwenden. Informationen zur Verwendung der Bildklassifizierung über TensorFlow die Amazon SageMaker Studio Classic-Benutzeroberfläche finden Sie unter SageMaker JumpStart.
Der Bildklassifizierungsalgorithmus TensorFlow unterstützt Transfer Learning mit einem der kompatiblen vortrainierten TensorFlow Hub-Modelle. Eine Liste aller verfügbaren vortrainierten Modelle finden Sie unter TensorFlow Hub-Modelle. Jedes vortrainierte Modell hat ein Unikat model_id
. Im folgenden Beispiel wird MobileNet V2 1.00 224 (model_id
: tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4
) zur Feinabstimmung eines benutzerdefinierten Datensatzes verwendet. Die vortrainierten Modelle werden alle vorinstalliert und in Amazon S3-Buckets TensorFlow gespeichert, sodass Schulungsaufträge in Netzwerkisolierung ausgeführt werden können. Verwenden Sie diese vorgenerierten Modelltrainingsartefakte, um einen SageMaker Schätzer zu erstellen.
Rufen Sie zunächst den Docker-Image-URI, den Trainingsskript-URI und den vortrainierten Modell-URI ab. Ändern Sie dann die Hyperparameter nach Bedarf. Sie können ein Python-Wörterbuch mit allen verfügbaren Hyperparametern und ihren Standardwerten mit hyperparameters.retrieve_default
sehen. Weitere Informationen finden Sie unter Bildklassifizierung – TensorFlow Hyperparameter. Verwenden Sie diese Werte, um einen SageMaker Schätzer zu erstellen.
Anmerkung
Die Standard-Hyperparameterwerte sind für verschiedene Modelle unterschiedlich. Bei größeren Modellen ist die Standard-Batch-Größe kleiner und der train_only_top_layer
Hyperparameter ist auf "True"
eingestellt.
In diesem Beispiel wird der tf_flowers
.fit
indem Sie den Amazon S3 S3-Speicherort Ihres Trainingsdatensatzes verwenden.
from sagemaker import image_uris, model_uris, script_uris, hyperparameters from sagemaker.estimator import Estimator model_id, model_version =
"tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4"
, "*" 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 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" # The sample training data is available in the following S3 bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/tf_flowers/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-ic-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" # Create SageMaker Estimator instance tf_ic_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, ) # Use S3 path of the training data to launch SageMaker TrainingJob tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)
Eingabe- und Ausgabeschnittstelle für den Bildklassifizierungsalgorithmus TensorFlow
Jedes der unter TensorFlow Hub Models aufgeführten vortrainierten Modelle kann auf jeden Datensatz mit einer beliebigen Anzahl von Bildklassen abgestimmt werden. Beachten Sie, wie Sie Ihre Trainingsdaten für die Eingabe in das Bildklassifizierungsmodell TensorFlow formatieren.
-
Eingabeformat für Trainingsdaten: Ihre Trainingsdaten sollten ein Verzeichnis mit so vielen Unterverzeichnissen wie die Anzahl der Klassen sein. Jedes Unterverzeichnis sollte Bilder, die zu dieser Klasse gehören, im Format .jpg, .jpeg oder .png enthalten.
Es folgt ein Beispiel für eine Eingabeverzeichnisstruktur. Dieser Beispieldatensatz hat zwei Klassen: roses
und dandelion
. Die Bilddateien in jedem Klassenordner können einen beliebigen Namen haben. Das Eingabeverzeichnis sollte in einem Amazon S3-Bucket mit einem Pfad gehostet werden, der dem folgenden ähnelt: s3://
. Beachten Sie, dass das Trailing bucket_name
/input_directory
//
erforderlich ist.
input_directory |--roses |--abc.jpg |--def.jpg |--dandelion |--ghi.jpg |--jkl.jpg
Trainierte Modelle geben Beschriftungs-Mapping-Dateien aus, die Klassenordnernamen den Indizes in der Liste der Ausgabeklassenwahrscheinlichkeiten zuordnen. Diese Zuordnung ist in alphabetischer Reihenfolge. Im vorherigen Beispiel hat die Löwenzahnklasse beispielsweise den Index 0 und die Rosenklasse den Index 1.
Nach dem Training verfügen Sie über ein fein abgestimmtes Modell, das Sie mithilfe von inkrementellem Training weiter trainieren oder zu Inferenzzwecken einsetzen können. Der Bildklassifizierungsalgorithmus fügt dem fein abgestimmten Modell TensorFlow automatisch eine Vor- und Nachverarbeitungssignatur hinzu, sodass es Bilder als Eingabe aufnehmen und Klassenwahrscheinlichkeiten zurückgeben kann. Die Datei, die Klassenindizes Klassenbezeichnungen zuordnet, wird zusammen mit den Modellen gespeichert.
Inkrementelles Training
Sie können das Training eines neuen Modells mit Artefakten aus einem Modell starten, das Sie zuvor mit trainiert haben SageMaker. Diese inkrementelle Schulung verkürzt die Schulungsdauer, wenn Sie ein neues Modell mit denselben oder ähnlichen Daten schulen möchten.
Anmerkung
Sie können ein SageMaker TensorFlow Bildklassifizierungsmodell nur mit einem anderen TensorFlow Bildklassifizierungsmodell starten, das in trainiert wurde SageMaker.
Sie können jeden Datensatz für das inkrementelle Training verwenden, solange der Klassensatz derselbe bleibt. Der inkrementelle Trainingsschritt ähnelt dem Feinabstimmungsschritt, aber anstatt mit einem vortrainierten Modell zu beginnen, beginnen Sie mit einem vorhandenen fein abgestimmten Modell. Ein Beispiel für inkrementelles Training mit dem SageMaker TensorFlow Bildklassifizierungsalgorithmus finden Sie im Beispiel-Notebook Einführung in SageMaker TensorFlow – Bildklassifizierung
Inferenz mit dem Bildklassifizierungsalgorithmus TensorFlow
Sie können das fein abgestimmte Modell, das sich aus Ihrem TensorFlow Bildklassifizierungstraining ergibt, zur Inferenz hosten. Jedes Eingabebild für die Inferenz muss sich in .jpg
, .jpeg
, oder .png
Format befinden und vom Inhaltstyp application/x-image
sein. Die Bildklassifizierung – TensorFlow Der Algorithmus ändert die Größe der Eingabebilder automatisch.
Das Ausführen von Inferenzen führt zu Wahrscheinlichkeitswerten, Klassenbezeichnungen für alle Klassen und dem vorhergesagten Label, das dem Klassenindex mit der höchsten Wahrscheinlichkeit entspricht, kodiert im JSON-Format. Das TensorFlow Bildklassifizierungsmodell verarbeitet ein einzelnes Bild pro Anfrage und gibt nur eine Zeile aus. Nachfolgend finden Sie ein Beispiel für eine Antwort im JSON Lines-Format:
accept: application/json;verbose {"probabilities": [prob_0, prob_1, prob_2, ...], "labels": [label_0, label_1, label_2, ...], "predicted_label": predicted_label}
Wenn accept
auf application/json
gesetzt ist, gibt das Modell nur Wahrscheinlichkeiten aus. Weitere Informationen zum Training und zur Inferenz mit dem TensorFlow Bildklassifizierungsalgorithmus finden Sie im Beispiel-Notebook Einführung in SageMaker TensorFlow – Bildklassifizierung
Amazon EC2-Instance-Empfehlung für den Bildklassifizierungsalgorithmus TensorFlow
Der Bildklassifizierungsalgorithmus unterstützt alle CPU- und GPU- TensorFlow Instances für das Training, einschließlich:
-
ml.p2.xlarge
-
ml.p2.16xlarge
-
ml.p3.2xlarge
-
ml.p3.16xlarge
-
ml.g4dn.xlarge
-
ml.g4dn.16.xlarge
-
ml.g5.xlarge
-
ml.g5.48xlarge
Wir empfehlen die Verwendung von GPU-Instanzen mit mehr Arbeitsspeicher zum Training mit großen Stapelgrößen. Sowohl CPU- (wie M5) als auch GPU-Instanzen (P2, P3, G4dn oder G5) können für Inferenzen verwendet werden.
Bildklassifizierung – TensorFlow Beispiel-Notebooks
Weitere Informationen zur Verwendung des SageMaker Bildklassifizierungsalgorithmus TensorFlow für Transfer Learning für einen benutzerdefinierten Datensatz finden Sie im Notebook Einführung in SageMaker TensorFlow – Bildklassifizierung
Anweisungen zum Erstellen von Jupyter-Notebook-Instances, mit denen Sie das Beispiel in ausführen können SageMaker, finden Sie unter Amazon- SageMaker Notebook-Instances. Nachdem Sie eine Notebook-Instance erstellt und geöffnet haben, wählen Sie die Registerkarte SageMaker Beispiele aus, um eine Liste aller SageMaker Beispiele anzuzeigen. Zum Öffnen eines Notebooks wählen Sie die Registerkarte Verwenden und dann Kopie erstellen aus.