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.
Trainieren eines Amazon Rekognition Custom Labels-Modells
Sie können ein Modell mit der Amazon Rekognition Custom Labels-Konsole oder mit der Amazon Rekognition Custom Labels API trainieren. Wenn das Modelltraining fehlschlägt, verwenden Sie die Informationen in Debuggen eines fehlgeschlagenen Modelltrainings, um die Ursache des Fehlers zu ermitteln.
Ihnen wird die Zeit in Rechnung gestellt, die für das erfolgreiche Trainieren eines Modells benötigt wird. In der Regel dauert es zwischen 30 Minuten und 24 Stunden, bis das Training abgeschlossen ist. Weitere Informationen finden Sie unter Trainingsdauer.
Jedes Mal, wenn das Modell trainiert wird, wird eine neue Version eines Modells erstellt. Amazon Rekognition Custom Labels erstellt einen Namen für das Modell, der eine Kombination aus dem Projektnamen und dem Zeitstempel der Erstellung des Modells ist.
Um Ihr Modell zu trainieren, erstellt Amazon Rekognition Custom Labels eine Kopie Ihrer ursprünglichen Trainings- und Testbilder. Standardmäßig werden die kopierten Bilder im Ruhezustand mit einem Schlüssel verschlüsselt, der AWS gehört und von AWS verwaltet wird. Sie haben auch die Möglichkeit, Ihren eigenen AWS KMS key zu verwenden. Wenn Sie Ihren eigenen KMS-Schlüssel verwenden, benötigen Sie die folgenden Berechtigungen für den KMS-Schlüssel.
km: CreateGrant
km: DescribeKey
Weitere Informationen finden Sie unter AWS Key Management Service-Konzepte. Ihre Quellbilder sind davon nicht betroffen.
Sie können die serverseitige KMS-Verschlüsselung (SSE-KMS) verwenden, um die Trainings- und Testbilder in Ihrem Amazon-S3-Bucket zu verschlüsseln, bevor sie von Amazon Rekognition Custom Labels kopiert werden. Um Amazon Rekognition Custom Labels Zugriff auf Ihre Bilder zu gewähren, benötigt Ihr AWS Konto die folgenden Berechtigungen für den KMS-Schlüssel.
km: GenerateDataKey
kms:Decrypt
Weitere Informationen finden Sie unter Schutz von Daten mit serverseitiger Verschlüsselung mit in AWS Key Management Service (SSE-KMS) gespeicherten KMS-Schlüsseln.
Nachdem Sie ein Modell trainiert haben, können Sie dessen Leistung bewerten und Verbesserungen vornehmen. Weitere Informationen finden Sie unter Verbessern eines geschulten Amazon Rekognition Custom Labels-Modells.
Informationen zu anderen Modellaufgaben, wie z. B. dem Markieren eines Modells, finden Sie unter Verwalten eines Amazon Rekognition Custom Labels-Modells.
Ein Modell trainieren (Konsole)
Sie können die Amazon Rekognition Custom Labels-Konsole verwenden, um ein Modell zu trainieren.
Für das Training ist ein Projekt mit einem Trainingsdatensatz und einem Testdatensatz erforderlich. Wenn Ihr Projekt keinen Testdatensatz hat, teilt die Amazon Rekognition Custom Labels-Konsole den Trainingsdatensatz während des Trainings auf, um einen für Ihr Projekt zu erstellen. Bei den ausgewählten Bildern handelt es sich um eine repräsentative Stichprobe und sie werden nicht im Trainingsdatensatz verwendet. Wir empfehlen, Ihren Trainingsdatensatz nur aufzuteilen, wenn Sie keinen alternativen Testdatensatz haben. Durch das Aufteilen eines Trainingsdatensatzes wird die Anzahl der für das Training verfügbaren Bilder reduziert.
Ihnen wird die Zeit in Rechnung gestellt, die für das Trainieren eines Modells benötigt wird. Weitere Informationen finden Sie unter Trainingsdauer.
So trainieren Sie Ihr Modell (Konsole)
Öffnen Sie die Amazon Rekognition Rekognition-Konsole unter. https://console.aws.amazon.com/rekognition/
Wählen Sie Benutzerdefinierte Labels verwenden.
Wählen Sie im linken Navigationsbereich die Option Projekte aus.
Wählen Sie auf der Seite Projekte das Projekt aus, das das zu trainierende Modell enthält.
Wählen Sie auf der Seite Projekte Modell trainieren aus.
(Optional) Wenn Sie Ihren eigenen AWS KMS-Verschlüsselungsschlüssel verwenden möchten, gehen Sie wie folgt vor:
Wählen Sie unter Bilddatenverschlüsselung die Option Verschlüsselungseinstellungen anpassen (erweitert) aus.
Geben Sie in encryption.aws_kms_key den Amazon-Ressourcennamen (ARN) Ihres Schlüssels ein, oder wählen Sie einen vorhandenen AWS-KMS-Schlüssel aus. Um einen neuen Schlüssel zu erstellen, wählen Sie AWS IMS-Schlüssel erstellen.
(Optional) Gehen Sie wie folgt vor, wenn Sie Ihr Modell mit Tags versehen möchten:
Klicken Sie im Abschnitt Tags auf Neuen Tag hinzufügen.
Geben Sie Folgendes ein:
Den Namen des Schlüssels im Feld Schlüssel.
Den Wert des Schlüssels im Feld Wert.
Um weitere Tags hinzuzufügen, wiederholen Sie die Schritte 6a und 6b.
(Optional) Wenn Sie ein Tag entfernen möchten, wählen Sie neben dem Tag, das Sie entfernen möchten, die Option Entfernen aus. Wenn Sie ein zuvor gespeichertes Tag entfernen, wird es entfernt, wenn Sie Ihre Änderungen speichern.
Wählen Sie auf der Seite Modell trainieren die Option Modell trainieren aus. Der Amazon-Ressourcenname (ARN) für Ihr Projekt sollte im Bearbeitungsfeld Projekt auswählen angezeigt werden. Wenn nicht, geben Sie den ARN für Ihr Projekt ein.
Wählen Sie im Dialogfenster Möchten Sie Ihr Modell trainieren? Modell trainieren aus.
Im Bereich Modelle der Projektseite können Sie den aktuellen Status in der Model Status
Spalte überprüfen, in der das Training gerade läuft. Das Trainieren eines Modells ist zeitaufwändig.
Wählen Sie nach Abschluss des Trainings den Modellnamen aus. Das Training ist abgeschlossen, wenn der Modellstatus TRAINING_COMPLETED lautet. Wenn das Training fehlschlägt, lesen Sie Debuggen eines fehlgeschlagenen Modelltrainings.
Nächster Schritt: Bewerten Sie Ihr Modell. Weitere Informationen finden Sie unter Verbessern eines geschulten Amazon Rekognition Custom Labels-Modells.
Ein Modell trainieren (SDK)
Sie trainieren ein Modell, indem Sie anrufen. CreateProjectVersion Um ein Modell zu trainieren, werden die folgenden Informationen benötigt:
Name — Ein eindeutiger Name für die Modellversion.
Projekt-ARN — Der Amazon-Ressourcenname (ARN) des Projekts, das das Modell verwaltet.
Speicherort der Trainingsergebnisse — Der Amazon S3-Standort, an dem die Ergebnisse gespeichert werden. Sie können denselben Speicherort wie den Amazon-S3-Bucket für die Konsole verwenden oder einen anderen Speicherort wählen. Wir empfehlen, einen anderen Speicherort zu wählen, da Sie so Berechtigungen festlegen und potenzielle Namenskonflikte mit der Trainingsausgabe vermeiden können, wenn Sie die Amazon Rekognition Custom Labels-Konsole verwenden.
Beim Training werden die dem Projekt zugeordneten Trainings- und Testdatensätze verwendet. Weitere Informationen finden Sie unter Verwalten von Datensätzen.
Optional können Sie Manifestdateien für Trainings- und Testdatensätze angeben, die sich außerhalb eines Projekts befinden. Wenn Sie die Konsole öffnen, nachdem Sie ein Modell mit externen Manifestdateien trainiert haben, erstellt Amazon Rekognition Custom Labels die Datensätze für Sie, indem es den letzten Satz von Manifestdateien verwendet, der für das Training verwendet wurde. Sie können eine Modellversion für das Projekt nicht mehr trainieren, indem Sie externe Manifestdateien angeben. Weitere Informationen finden Sie unter CreatePrjectVersion.
Die Antwort von CreateProjectVersion
ist ein ARN, mit dem Sie die Modellversion in nachfolgenden Anfragen identifizieren. Sie können auch den ARN verwenden, um die Modellversion zu sichern. Weitere Informationen finden Sie unter Amazon Rekognition Custom Labels-Projekte sichern.
Das Trainieren einer Modellversion dauert eine Weile. In den Python- und Java-Beispielen in diesem Thema wird mithilfe von Waiters auf den Abschluss des Trainings gewartet. Waiter sind Hilfsprogrammmethoden, die einen bestimmten Status abfragen. Alternativ können Sie den aktuellen Status des Trainings erfahren, indem Sie DescribeProjectVersions
aufrufen. Das Training ist abgeschlossen, wenn der Status
Feldwert TRAINING_COMPLETED
lautet. Nach Abschluss des Trainings können Sie die Qualität des Modells anhand der Bewertungsergebnisse bewerten.
Ein Modell trainieren (SDK)
Das folgende Beispiel zeigt, wie ein Modell mithilfe der einem Projekt zugeordneten Trainings- und Testdatensätze trainiert wird.
So trainieren Sie ein Modell (SDK)
-
Falls Sie dies noch nicht getan haben, installieren und konfigurieren Sie das AWS CLI und das AWS SDKs. Weitere Informationen finden Sie unter Schritt 4: Richten Sie das und ein AWS CLIAWS SDKs.
Verwenden Sie den folgenden Beispielcode, um ein Projekt zu trainieren.
- AWS CLI
-
Im folgenden Beispiel wird ein Modell erstellt. Der Trainingsdatensatz wird aufgeteilt, um den Testdatensatz zu erstellen. Ersetzen Sie Folgendes:
-
my_project_arn
mit dem Amazon-Ressourcennamen (ARN) des Projekts.
-
version_name
mit einem eindeutigen Versionsnamen Ihrer Wahl.
-
output_bucket
mit dem Namen des Amazon-S3-Buckets, in dem Amazon Rekognition Custom Labels die Trainingsergebnisse speichert.
-
output_folder
mit dem Namen des Ordners, in dem die Trainingsergebnisse gespeichert werden.
(optionaler Parameter) --kms-key-id
mit der Kennung für Ihren AWS Key Management Service-Kunden-Masterschlüssel.
aws rekognition create-project-version \
--project-arn project_arn
\
--version-name version_name
\
--output-config '{"S3Bucket":"output_bucket
", "S3KeyPrefix":"output_folder
"}' \
--profile custom-labels-access
- Python
-
Im folgenden Beispiel wird ein Modell erstellt. Geben Sie die folgenden Befehlszeilenargumente an:
project_arn
– der Amazon-Ressourcenname (ARN) des Projekts.
version_name
– ein eindeutiger Versionsname Ihrer Wahl für das Modell.
output_bucket
– der Name des Amazon-S3-Buckets, in dem Amazon Rekognition Custom Labels die Trainingsergebnisse speichert.
output_folder
– der Name des Ordners, in dem die Trainingsergebnisse gespeichert werden.
Geben Sie optional die folgenden Befehlszeilenparameter an, um Ihrem Modell ein Tag zuzuweisen:
#Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
#PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-custom-labels-developer-guide/blob/master/LICENSE-SAMPLECODE.)
import argparse
import logging
import json
import boto3
from botocore.exceptions import ClientError
logger = logging.getLogger(__name__)
def train_model(rek_client, project_arn, version_name, output_bucket, output_folder, tag_key, tag_key_value):
"""
Trains an Amazon Rekognition Custom Labels model.
:param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
:param project_arn: The ARN of the project in which you want to train a model.
:param version_name: A version for the model.
:param output_bucket: The S3 bucket that hosts training output.
:param output_folder: The path for the training output within output_bucket
:param tag_key: The name of a tag to attach to the model. Pass None to exclude
:param tag_key_value: The value of the tag. Pass None to exclude
"""
try:
#Train the model
status=""
logger.info("training model version %s for project %s",
version_name, project_arn)
output_config = json.loads(
'{"S3Bucket": "'
+ output_bucket
+ '", "S3KeyPrefix": "'
+ output_folder
+ '" } '
)
tags={}
if tag_key is not None and tag_key_value is not None:
tags = json.loads(
'{"' + tag_key + '":"' + tag_key_value + '"}'
)
response=rek_client.create_project_version(
ProjectArn=project_arn,
VersionName=version_name,
OutputConfig=output_config,
Tags=tags
)
logger.info("Started training: %s", response['ProjectVersionArn'])
# Wait for the project version training to complete.
project_version_training_completed_waiter = rek_client.get_waiter('project_version_training_completed')
project_version_training_completed_waiter.wait(ProjectArn=project_arn,
VersionNames=[version_name])
# Get the completion status.
describe_response=rek_client.describe_project_versions(ProjectArn=project_arn,
VersionNames=[version_name])
for model in describe_response['ProjectVersionDescriptions']:
logger.info("Status: %s", model['Status'])
logger.info("Message: %s", model['StatusMessage'])
status=model['Status']
logger.info("finished training")
return response['ProjectVersionArn'], status
except ClientError as err:
logger.exception("Couldn't create model: %s", err.response['Error']['Message'] )
raise
def add_arguments(parser):
"""
Adds command line arguments to the parser.
:param parser: The command line parser.
"""
parser.add_argument(
"project_arn", help="The ARN of the project in which you want to train a model"
)
parser.add_argument(
"version_name", help="A version name of your choosing."
)
parser.add_argument(
"output_bucket", help="The S3 bucket that receives the training results."
)
parser.add_argument(
"output_folder", help="The folder in the S3 bucket where training results are stored."
)
parser.add_argument(
"--tag_name", help="The name of a tag to attach to the model", required=False
)
parser.add_argument(
"--tag_value", help="The value for the tag.", required=False
)
def main():
logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
try:
# Get command line arguments.
parser = argparse.ArgumentParser(usage=argparse.SUPPRESS)
add_arguments(parser)
args = parser.parse_args()
print(f"Training model version {args.version_name} for project {args.project_arn}")
# Train the model.
session = boto3.Session(profile_name='custom-labels-access')
rekognition_client = session.client("rekognition")
model_arn, status=train_model(rekognition_client,
args.project_arn,
args.version_name,
args.output_bucket,
args.output_folder,
args.tag_name,
args.tag_value)
print(f"Finished training model: {model_arn}")
print(f"Status: {status}")
except ClientError as err:
logger.exception("Problem training model: %s", err)
print(f"Problem training model: {err}")
except Exception as err:
logger.exception("Problem training model: %s", err)
print(f"Problem training model: {err}")
if __name__ == "__main__":
main()
- Java V2
-
Im folgenden Beispiel wird ein Modell trainiert. Geben Sie die folgenden Befehlszeilenargumente an:
project_arn
– der Amazon-Ressourcenname (ARN) des Projekts.
version_name
– ein eindeutiger Versionsname Ihrer Wahl für das Modell.
output_bucket
– der Name des Amazon-S3-Buckets, in dem Amazon Rekognition Custom Labels die Trainingsergebnisse speichert.
output_folder
– der Name des Ordners, in dem die Trainingsergebnisse gespeichert werden.
/*
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package com.example.rekognition;
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.core.waiters.WaiterResponse;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.rekognition.RekognitionClient;
import software.amazon.awssdk.services.rekognition.model.CreateProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.CreateProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsResponse;
import software.amazon.awssdk.services.rekognition.model.OutputConfig;
import software.amazon.awssdk.services.rekognition.model.ProjectVersionDescription;
import software.amazon.awssdk.services.rekognition.model.RekognitionException;
import software.amazon.awssdk.services.rekognition.waiters.RekognitionWaiter;
import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
public class TrainModel {
public static final Logger logger = Logger.getLogger(TrainModel.class.getName());
public static String trainMyModel(RekognitionClient rekClient, String projectArn, String versionName,
String outputBucket, String outputFolder) {
try {
OutputConfig outputConfig = OutputConfig.builder().s3Bucket(outputBucket).s3KeyPrefix(outputFolder).build();
logger.log(Level.INFO, "Training Model for project {0}", projectArn);
CreateProjectVersionRequest createProjectVersionRequest = CreateProjectVersionRequest.builder()
.projectArn(projectArn).versionName(versionName).outputConfig(outputConfig).build();
CreateProjectVersionResponse response = rekClient.createProjectVersion(createProjectVersionRequest);
logger.log(Level.INFO, "Model ARN: {0}", response.projectVersionArn());
logger.log(Level.INFO, "Training model...");
// wait until training completes
DescribeProjectVersionsRequest describeProjectVersionsRequest = DescribeProjectVersionsRequest.builder()
.versionNames(versionName)
.projectArn(projectArn)
.build();
RekognitionWaiter waiter = rekClient.waiter();
WaiterResponse<DescribeProjectVersionsResponse> waiterResponse = waiter
.waitUntilProjectVersionTrainingCompleted(describeProjectVersionsRequest);
Optional<DescribeProjectVersionsResponse> optionalResponse = waiterResponse.matched().response();
DescribeProjectVersionsResponse describeProjectVersionsResponse = optionalResponse.get();
for (ProjectVersionDescription projectVersionDescription : describeProjectVersionsResponse
.projectVersionDescriptions()) {
System.out.println("ARN: " + projectVersionDescription.projectVersionArn());
System.out.println("Status: " + projectVersionDescription.statusAsString());
System.out.println("Message: " + projectVersionDescription.statusMessage());
}
return response.projectVersionArn();
} catch (RekognitionException e) {
logger.log(Level.SEVERE, "Could not train model: {0}", e.getMessage());
throw e;
}
}
public static void main(String args[]) {
String versionName = null;
String projectArn = null;
String projectVersionArn = null;
String bucket = null;
String location = null;
final String USAGE = "\n" + "Usage: " + "<project_name> <version_name> <output_bucket> <output_folder>\n\n" + "Where:\n"
+ " project_arn - The ARN of the project that you want to use. \n\n"
+ " version_name - A version name for the model.\n\n"
+ " output_bucket - The S3 bucket in which to place the training output. \n\n"
+ " output_folder - The folder within the bucket that the training output is stored in. \n\n";
if (args.length != 4) {
System.out.println(USAGE);
System.exit(1);
}
projectArn = args[0];
versionName = args[1];
bucket = args[2];
location = args[3];
try {
// Get the Rekognition client.
RekognitionClient rekClient = RekognitionClient.builder()
.credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access"))
.region(Region.US_WEST_2)
.build();
// Train model
projectVersionArn = trainMyModel(rekClient, projectArn, versionName, bucket, location);
System.out.println(String.format("Created model: %s for Project ARN: %s", projectVersionArn, projectArn));
rekClient.close();
} catch (RekognitionException rekError) {
logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage());
System.exit(1);
}
}
}
Wenn das Training fehlschlägt, lesen Sie Debuggen eines fehlgeschlagenen Modelltrainings.