Avvio di un modello Amazon Rekognition Custom Labels - Rekognition

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

Importante

I costi sono calcolati in base al numero di ore di funzionamento del modello e al numero di unità di inferenza utilizzate dal modello durante l'esecuzione. Per ulteriori informazioni, consulta Esecuzione di un modello Amazon Rekognition Custom Labels addestrato.

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)
  1. Apri la console Amazon Rekognition all'indirizzo https://console.aws.amazon.com/rekognition/.

  2. Scegli Usa etichette personalizzate.

  3. Scegli Avvia.

  4. Nel pannello di navigazione a sinistra, scegli Progetti.

  5. Nella pagina delle risorse Progetti, scegli il progetto che contiene il modello addestrato che desideri avviare.

  6. Nella sezione Modelli, scegli il modello per cui avviare l'avvio.

  7. Scegli la scheda Usa modello.

  8. Esegui una di queste operazioni:

    Start model using the console

    Nella sezione Avvia o interrompi modello, procedi come segue:

    1. Seleziona il numero di unità di inferenza da utilizzare. Per ulteriori informazioni, consulta Esecuzione di un modello Amazon Rekognition Custom Labels addestrato.

    2. Scegli Avvia.

    3. Nella finestra di dialogo Avvia modello, scegli Avvia.

    Start model using the AWS SDK

    Nella sezione Usa il modello, procedi come segue:

    1. Scegli Codice API.

    2. Scegli AWS CLI o Python.

    3. In Avvia modello copia il codice di esempio.

    4. Usa il codice di esempio per avviare il tuo modello. Per ulteriori informazioni, consulta Avvio di un modello Amazon Rekognition Custom Labels (SDK).

  9. Per tornare alla pagina di panoramica del progetto, scegli il nome del progetto nella parte superiore della pagina.

  10. 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)
  1. 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.

  2. 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); } } }