Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Avvio di un modello Amazon Rekognition Custom Labels
Puoi iniziare a eseguire un modello Amazon Rekognition Custom Labels utilizzando la console o utilizzando l'operazione Version. StartProject
Il completamento dell'avvio di un modello potrebbe richiedere alcuni minuti. Per verificare lo stato attuale della preparazione del modello, consulta la pagina dei dettagli del progetto o usa Versions. DescribeProject
Dopo aver avviato il modello, utilizzate DetectCustomLabels, per analizzare le immagini utilizzando il modello. Per ulteriori informazioni, consulta Analisi di un'immagine con un modello addestrato. La console fornisce anche un codice di esempio per chiamare DetectCustomLabels
.
Amazon Rekognition Custom Labels (console)
Utilizza la seguente procedura per iniziare a eseguire un modello Amazon Rekognition Custom Labels con la console. È possibile avviare il modello direttamente dalla console o utilizzare il codice AWS SDK fornito dalla console.
Per avviare un modello (console)
Apri la console Amazon Rekognition all'indirizzo https://console.aws.amazon.com/rekognition/.
Scegli Usa etichette personalizzate.
Scegli Avvia.
Nel pannello di navigazione a sinistra, scegli Progetti.
Nella pagina delle risorse Progetti, scegli il progetto che contiene il modello addestrato che desideri avviare.
Nella sezione Modelli, scegli il modello per cui avviare l'avvio.
Scegli la scheda Usa modello.
Esegui una di queste operazioni:
- Start model using the console
-
Nella sezione Avvia o interrompi modello, procedi come segue:
- Start model using the AWS SDK
-
Nella sezione Usa il modello, procedi come segue:
-
Per tornare alla pagina di panoramica del progetto, scegli il nome del progetto nella parte superiore della pagina.
Nella sezione Modello, controlla lo stato del modello. Quando lo stato del modello è IN ESECUZIONE, è possibile utilizzare il modello per analizzare le immagini. Per ulteriori informazioni, consulta Analisi di un'immagine con un modello addestrato.
Avvio di un modello Amazon Rekognition Custom Labels (SDK)
Puoi avviare un modello chiamando l'API StartProjectVersion e passando l'Amazon Resource Name (ARN) del modello nel parametro di ProjectVersionArn
input. Specifica anche il numero di unità di inferenza da utilizzare. Per ulteriori informazioni, consulta Esecuzione di un modello Amazon Rekognition Custom Labels addestrato.
L'avvio di un modello potrebbe richiedere alcuni istanti. Gli esempi Python e Java in questo argomento utilizzano waiter per attendere il completamento della addestramento. Un waiter è un metodo di utility che esegue il polling per il verificarsi di uno stato particolare. In alternativa, puoi controllare lo stato attuale chiamando DescribeProjectVersions.
Per avviare un modello (SDK)
-
Se non l'hai già fatto, installa e configura gli AWS CLI AWS SDK. Per ulteriori informazioni, consulta Passaggio 4: configura il AWS CLI e AWS SDKs.
Utilizza il seguente codice di esempio per avviare un modello.
- CLI
-
Modifica il valore di project-version-arn
per l’ARN del set di dati che desideri avviare. Modifica il valore di --min-inference-units
specificando il numero di unità di inferenza che desidera utilizzare. Facoltativamente, modifica --max-inference-units
al numero massimo di unità di inferenza che Amazon Rekognition Custom Labels può utilizzare per ridimensionare automaticamente il modello.
aws rekognition start-project-version --project-version-arn model_arn
\
--min-inference-units minimum number of units \
--max-inference-units maximum number of units \
--profile custom-labels-access
- Python
-
Fornisci i seguenti parametri di riga di comando:
project_arn
— l'ARN del progetto che contiene il modello che desideri avviare.
model_arn
— l'ARN del modello che desideri avviare.
min_inference_units
— il numero di unità di inferenza che desideri utilizzare.
(Facoltativo) --max_inference_units
Il numero massimo di unità di inferenza che Amazon Rekognition Custom Labels può utilizzare per scalare automaticamente il modello.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Purpose
Shows how to start running an Amazon Lookout for Vision model.
"""
import argparse
import logging
import boto3
from botocore.exceptions import ClientError
logger = logging.getLogger(__name__)
def get_model_status(rek_client, project_arn, model_arn):
"""
Gets the current status of an Amazon Rekognition Custom Labels model
:param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
:param project_name: The name of the project that you want to use.
:param model_arn: The name of the model that you want the status for.
:return: The model status
"""
logger.info("Getting status for %s.", model_arn)
# Extract the model version from the model arn.
version_name = (model_arn.split("version/", 1)[1]).rpartition('/')[0]
models = rek_client.describe_project_versions(ProjectArn=project_arn,
VersionNames=[version_name])
for model in models['ProjectVersionDescriptions']:
logger.info("Status: %s", model['StatusMessage'])
return model["Status"]
error_message = f"Model {model_arn} not found."
logger.exception(error_message)
raise Exception(error_message)
def start_model(rek_client, project_arn, model_arn, min_inference_units, max_inference_units=None):
"""
Starts the hosting of an Amazon Rekognition Custom Labels model.
:param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
:param project_name: The name of the project that contains the
model that you want to start hosting.
:param min_inference_units: The number of inference units to use for hosting.
:param max_inference_units: The number of inference units to use for auto-scaling
the model. If not supplied, auto-scaling does not happen.
"""
try:
# Start the model
logger.info(f"Starting model: {model_arn}. Please wait....")
if max_inference_units is None:
rek_client.start_project_version(ProjectVersionArn=model_arn,
MinInferenceUnits=int(min_inference_units))
else:
rek_client.start_project_version(ProjectVersionArn=model_arn,
MinInferenceUnits=int(
min_inference_units),
MaxInferenceUnits=int(max_inference_units))
# Wait for the model to be in the running state
version_name = (model_arn.split("version/", 1)[1]).rpartition('/')[0]
project_version_running_waiter = rek_client.get_waiter(
'project_version_running')
project_version_running_waiter.wait(
ProjectArn=project_arn, VersionNames=[version_name])
# Get the running status
return get_model_status(rek_client, project_arn, model_arn)
except ClientError as err:
logger.exception("Client error: Problem starting model: %s", err)
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 that contains that the model you want to start."
)
parser.add_argument(
"model_arn", help="The ARN of the model that you want to start."
)
parser.add_argument(
"min_inference_units", help="The minimum number of inference units to use."
)
parser.add_argument(
"--max_inference_units", help="The maximum number of inference units to use for auto-scaling the model.", 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()
# Start the model.
session = boto3.Session(profile_name='custom-labels-access')
rekognition_client = session.client("rekognition")
status = start_model(rekognition_client,
args.project_arn, args.model_arn,
args.min_inference_units,
args.max_inference_units)
print(f"Finished starting model: {args.model_arn}")
print(f"Status: {status}")
except ClientError as err:
error_message = f"Client error: Problem starting model: {err}"
logger.exception(error_message)
print(error_message)
except Exception as err:
error_message = f"Problem starting model:{err}"
logger.exception(error_message)
print(error_message)
if __name__ == "__main__":
main()
- Java V2
-
Fornisci i seguenti parametri di riga di comando:
project_arn
— l'ARN del progetto che contiene il modello che desideri avviare.
model_arn
— l'ARN del modello che desideri avviare.
min_inference_units
— il numero di unità di inferenza che desideri utilizzare.
(Facoltativo)max_inference_units
– il numero massimo di unità di inferenza che Amazon Rekognition Custom Labels può utilizzare per ridimensionare automaticamente il modello. Se non specifichi un valore, il ridimensionamento automatico non viene eseguito.
/*
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.DescribeProjectVersionsRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsResponse;
import software.amazon.awssdk.services.rekognition.model.ProjectVersionDescription;
import software.amazon.awssdk.services.rekognition.model.ProjectVersionStatus;
import software.amazon.awssdk.services.rekognition.model.RekognitionException;
import software.amazon.awssdk.services.rekognition.model.StartProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.StartProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.waiters.RekognitionWaiter;
import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
public class StartModel {
public static final Logger logger = Logger.getLogger(StartModel.class.getName());
public static int findForwardSlash(String modelArn, int n) {
int start = modelArn.indexOf('/');
while (start >= 0 && n > 1) {
start = modelArn.indexOf('/', start + 1);
n -= 1;
}
return start;
}
public static void startMyModel(RekognitionClient rekClient, String projectArn, String modelArn,
Integer minInferenceUnits, Integer maxInferenceUnits
) throws Exception, RekognitionException {
try {
logger.log(Level.INFO, "Starting model: {0}", modelArn);
StartProjectVersionRequest startProjectVersionRequest = null;
if (maxInferenceUnits == null) {
startProjectVersionRequest = StartProjectVersionRequest.builder()
.projectVersionArn(modelArn)
.minInferenceUnits(minInferenceUnits)
.build();
}
else {
startProjectVersionRequest = StartProjectVersionRequest.builder()
.projectVersionArn(modelArn)
.minInferenceUnits(minInferenceUnits)
.maxInferenceUnits(maxInferenceUnits)
.build();
}
StartProjectVersionResponse response = rekClient.startProjectVersion(startProjectVersionRequest);
logger.log(Level.INFO, "Status: {0}", response.statusAsString() );
// Get the model version
int start = findForwardSlash(modelArn, 3) + 1;
int end = findForwardSlash(modelArn, 4);
String versionName = modelArn.substring(start, end);
// wait until model starts
DescribeProjectVersionsRequest describeProjectVersionsRequest = DescribeProjectVersionsRequest.builder()
.versionNames(versionName)
.projectArn(projectArn)
.build();
RekognitionWaiter waiter = rekClient.waiter();
WaiterResponse<DescribeProjectVersionsResponse> waiterResponse = waiter
.waitUntilProjectVersionRunning(describeProjectVersionsRequest);
Optional<DescribeProjectVersionsResponse> optionalResponse = waiterResponse.matched().response();
DescribeProjectVersionsResponse describeProjectVersionsResponse = optionalResponse.get();
for (ProjectVersionDescription projectVersionDescription : describeProjectVersionsResponse
.projectVersionDescriptions()) {
if(projectVersionDescription.status() == ProjectVersionStatus.RUNNING) {
logger.log(Level.INFO, "Model is running" );
}
else {
String error = "Model training failed: " + projectVersionDescription.statusAsString() + " "
+ projectVersionDescription.statusMessage() + " " + modelArn;
logger.log(Level.SEVERE, error);
throw new Exception(error);
}
}
} catch (RekognitionException e) {
logger.log(Level.SEVERE, "Could not start model: {0}", e.getMessage());
throw e;
}
}
public static void main(String[] args) {
String modelArn = null;
String projectArn = null;
Integer minInferenceUnits = null;
Integer maxInferenceUnits = null;
final String USAGE = "\n" + "Usage: " + "<project_name> <version_name> <min_inference_units> <max_inference_units>\n\n" + "Where:\n"
+ " project_arn - The ARN of the project that contains the model that you want to start. \n\n"
+ " model_arn - The ARN of the model version that you want to start.\n\n"
+ " min_inference_units - The number of inference units to start the model with.\n\n"
+ " max_inference_units - The maximum number of inference units that Custom Labels can use to "
+ " automatically scale the model. If the value is null, automatic scaling doesn't happen.\n\n";
if (args.length < 3 || args.length >4) {
System.out.println(USAGE);
System.exit(1);
}
projectArn = args[0];
modelArn = args[1];
minInferenceUnits=Integer.parseInt(args[2]);
if (args.length == 4) {
maxInferenceUnits = Integer.parseInt(args[3]);
}
try {
// Get the Rekognition client.
RekognitionClient rekClient = RekognitionClient.builder()
.credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access"))
.region(Region.US_WEST_2)
.build();
// Start the model.
startMyModel(rekClient, projectArn, modelArn, minInferenceUnits, maxInferenceUnits);
System.out.println(String.format("Model started: %s", modelArn));
rekClient.close();
} catch (RekognitionException rekError) {
logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage());
System.exit(1);
} catch (Exception rekError) {
logger.log(Level.SEVERE, "Error: {0}", rekError.getMessage());
System.exit(1);
}
}
}