Esempio: identificazione di oggetti nei flussi video utilizzando SageMaker - Flusso di video Amazon Kinesis

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à.

Esempio: identificazione di oggetti nei flussi video utilizzando SageMaker

Questo esempio dimostra come creare una soluzione che identifichi SageMakerquando determinati oggetti vengono visualizzati in un flusso video di Amazon Kinesis. SageMaker è la piattaforma gestita per sviluppatori e data scientist per creare, addestrare e distribuire modelli di machine learning in modo rapido e semplice.

L'esempio è costituito da un contenitore Docker che include le funzionalità dell'applicazione e un AWS CloudFormationmodello che automatizza la distribuzione delle risorse dell'applicazione. AWS

Il AWS CloudFormation modello crea le seguenti risorse:

L'applicazione è compatibile con qualsiasi SageMaker endpoint che elabora i dati. Questo esempio contiene istruzioni per la creazione di un SageMaker endpoint che utilizza un modello di algoritmo di identificazione degli oggetti di esempio. Puoi modificare o sostituire l'algoritmo in base ai casi d'uso e ai requisiti dell'applicazione.

Prerequisiti

L'applicazione di esempio include i seguenti prerequisiti:

SageMaker

Questo esempio richiede un SageMaker notebook. Per informazioni sulla creazione di un notebook, consulta Creating a Notebook Instance nella Amazon SageMaker Developer Guide. Durante la creazione del notebook, prendi nota di quanto segue:

  • Aggiungi l'Amazon_JumpStart_Object_Detection.ipynbesempio (dalla sezione Introduzione ad Amazon Algorithms nella scheda SageMaker Esempi della console Jupyter) al notebook.

  • Crea un bucket Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) e fornisci il suo nome nella fase Prerequisiti quando aggiungi l'esempio.

  • Dopo aver creato il notebook, scegli la configurazione dell'endpoint sulla SageMaker console e prendi nota del nome dell'endpoint.

Flusso video Kinesis

Questo esempio richiede uno o più Kinesis Video Streams con dati video live. Per informazioni sulla creazione di un flusso video Kinesis e sull'invio di dati ad esso da una videocamera, vedere. GStreamer Prendi nota del nome del tuo stream video Kinesis.

Ruolo collegato al servizio

Questo esempio richiede che l'account abbia un ruolo collegato al servizio per il funzionamento di Fargate. Per impostazione predefinita Account AWS , questo ruolo è abilitato per impostazione predefinita. Se viene visualizzato il seguente errore al momento della creazione dell'applicazione, è necessario abilitare il ruolo collegato ai servizi:

Unable to assume the service linked role. Please verify that the ECS service linked role exists

Per abilitare il ruolo collegato ai servizi, eseguire il seguente comando:

aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com

Creazione dell'applicazione

Per creare l'applicazione di esempio, si utilizzano AWS CloudFormation e i modelli forniti.

Da utilizzare AWS CloudFormation per creare l'applicazione
  1. Accedi a AWS Management Console e apri la AWS CloudFormation console utilizzando uno dei seguenti link per il tuo Regione AWS. Il collegamento avvia lo stack corretto per la regione:

  2. Nella pagina Create Stack (Crea stack), specificare i seguenti valori:

    • Assegna allo stack un nome univoco (ad esempio, nome utente -KVS-). SageMaker

    • Fornisci il nome dell' SageMaker endpoint (non l'ARN dell'endpoint) che hai creato nella sezione precedente.

    • Fornisci il nome del tuo stream video Kinesis. Se hai più di un flusso video Kinesis, fornisci i nomi degli stream tra virgolette e separati da virgole.

    • Lasciare inalterate le altre impostazioni.

    Seleziona Avanti.

  3. Nella pagina Options (Opzioni), non modificare le impostazioni.

  4. Seleziona la casella di controllo Riconosco che AWS CloudFormation potrebbe creare risorse IAM. Seleziona Avanti.

AWS CloudFormation crea l'applicazione.

La tabella seguente elenca diversi parametri utilizzati dal contenitore Docker quando si crea uno stack utilizzando questo AWS CloudFormation modello. I valori sono predefiniti nella risorsa SSM del modello, ma è possibile personalizzarli in base alle esigenze.

Nome risorsa Valore predefinito Descrizione
inferenceInterval 6 The sampling ratio for video frames that are sent to the SageMaker endpoint. Currently, we only support inferencing on I-Frames. The default value of 6 means that 1 out of every 6 I-Frames is sent to the SageMaker endpoint.
sageMakerTaskQueueSize 5000 The size of the queue that maintains the pending requests to the SageMaker endpoint. The size of the queue is affected by ‘inferenceInternval’ and ‘sageMakerTaskTimeoutInMilli’. If SageMaker inference takes longer, requests are buffered in this queue.
sageMakerTaskThreadPoolSize 20 Number of threads that's used to concurrently carry out SageMaker requests.
sageMakerTaskTimeoutInMilli 20000 The maximum duration accepted for a single request (or a retry request) that's sent to the SageMaker endpoint.
sageMakerTaskThreadPoolName SageMakerThreadPool-%d The name of the threadpool that's sending requests to the SageMaker endpoint.

Per personalizzare i valori di questi parametri, scarica il AWS CloudFormation modello scegliendo l'URL del modello nella pagina Create stack, quindi individua questi parametri nella Params sezione del modello simile alla seguente:

Params: Type: AWS::SSM::Parameter Properties: Name: Ref: AppName Description: "Configuration for SageMaker app" Type: String Value: Fn::Sub: | {"streamNames":[${StreamNames}], "tagFilters":[${TagFilters}],"sageMakerEndpoint":"${SageMakerEndpoint}", "endPointAcceptContentType": "${EndPointAcceptContentType}", "kdsStreamName":"${Kds}","inferenceInterval":6,"sageMakerTaskQueueSize":5000, "sageMakerTaskThreadPoolSize":20,"sageMakerTaskTimeoutInMilli":20000, "sageMakerTaskThreadPoolName":"SageMakerThreadPool-%d"}

Monitoraggio dell'applicazione

L'applicazione creata dal AWS CloudFormation modello include una CloudWatch dashboard Amazon e un flusso di CloudWatch log utilizzato per monitorare le metriche e gli eventi dell'applicazione.

Dashboard dell'applicazione

L'applicazione include una CloudWatch dashboard per il monitoraggio delle metriche delle applicazioni. Per visualizzare la dashboard dell'applicazione, apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/ e scegli Dashboards nella barra di navigazione a sinistra.

Scegli la dashboard di KVS- SageMaker -Driver- - KvsSageMakerIntegration aws-region. Il pannello di controllo mostra le seguenti informazioni:

  • Metriche dei frame: le metriche per l'elaborazione del flusso video, l'invio di frame all' SageMaker endpoint e la scrittura nel flusso di dati Kinesis che collega il SageMaker notebook alla AWS Lambda funzione che elabora i risultati dell'output dell'inferenza. SageMaker

  • IngestToProcessLatency: La differenza di tempo tra il momento in cui un fotogramma video viene inserito nel servizio Kinesis Video Streams e il momento in cui l'applicazione riceve il frame.

  • Leasing totale attuale: all'applicazione vengono concesse le autorizzazioni per leggere dal flusso video Kinesis utilizzando un leasing. Questo parametro mostra il numero di lease attivi. L'applicazione utilizza un lease per flusso video Kinesis e un leasing per la sincronizzazione tra i flussi.

  • Parametri di sincronizzazione lease: la frequenza e la durata della sincronizzazione dei lease di autorizzazione.

  • LeaseCount per Worker: la distribuzione dei leasing tra i thread di lavoro. SageMaker

  • Numero di lavoratori: il numero di lavoratori SageMaker che elaborano i flussi. Ogni attività in un cluster Amazon ECS ha un lavoratore in esecuzione. Un lavoratore può elaborare più flussi.

  • Utilizzo del servizio ECS: i parametri di utilizzo per il cluster Amazon ECS.

  • KinesisDataStream: le metriche di utilizzo del flusso di dati Kinesis.

  • SageMaker: Le operazioni eseguite dal notebook. SageMaker

  • Lambda: il numero e la durata della funzione Lambda che elabora l'output dal notebook. SageMaker

Se una qualsiasi delle informazioni di questi grafici indica un problema operativo (ad esempio un valore costantemente in aumento anziché stabile), consulta la sezione seguente per informazioni su come leggere i log delle applicazioni per determinare il problema.

CloudWatch Registri

L'applicazione include due CloudWatch registri:

Il registro dell'applicazione

Puoi utilizzare il log dell'applicazione per monitorare gli eventi e le condizioni di errore dell'applicazione. È inoltre possibile utilizzare questo registro se è necessario contattare l'assistenza del prodotto in caso di problemi.

Per leggere il log dell'applicazione
  1. Apri la console Amazon ECS all'indirizzo https://console.aws.amazon.com/ecs.

  2. Scegliere il cluster KVS-Sagemaker-Driver.

  3. Scegli lo stack-name - SageMakerDriverService service nella scheda Servizi.

  4. Scegliere la scheda Log.

Il log dell'applicazione mostra eventi quali l'inizializzazione, la configurazione e le attività dei lease.

Il registro delle funzioni Lambda

È possibile utilizzare il registro delle funzioni Lambda per tenere traccia delle identificazioni degli oggetti riuscite.

Per leggere il registro Lambda
  1. Apri la AWS Lambda console all'indirizzo https://console.aws.amazon.com/lambda.

  2. Scegli la funzione Lambda per la tua applicazione. Il nome della funzione Lambda ha il seguente formato:

    stack-name-LambdaFunction-A1B2C3D4E5F6G
  3. Scegliere il riquadro Monitoring (Monitoraggio).

  4. Scegli Visualizza i log in. CloudWatch

Il CloudWatch registro dell'applicazione mostra le identificazioni riuscite degli oggetti nel flusso video Kinesis e in altri eventi dell'applicazione.

Estensione dell'applicazione

È possibile aggiungere funzionalità personalizzate all'applicazione modificando i valori forniti nella finestra del AWS CloudFormation modello come segue:

  • EndPointAcceptContentType: È possibile modificare questo valore se l' SageMaker endpoint non accetta frame in formato JPG. Sono supportati i formati seguenti:

    • image/jpeg

    • image/png

    • image/bmp

    • image/gif

    • application/x-image

  • LambdaFunctionBucket, LambdaFunctionKey: Le impostazioni fornite utilizzano una AWS Lambda funzione che elabora l' SageMakeroutput e lo scrive nei CloudWatch registri. Se desideri inviare l' SageMaker output altrove, puoi fornire la tua funzione Lambda.

  • Filtri tag: se disponi di flussi contrassegnati da tag mediante l'operazione TagStream, puoi specificare i tag dei flussi da elaborare. Ad esempio, se disponi di due flussi con la chiave Location con i valori Front e Parking, potresti applicare filtri per utilizzare solo quei flussi immettendo quanto segue:

    {"key":"Location","values":["Front","Parking"]}

Pulizia dell'applicazione

Al termine dell'utilizzo dell'applicazione creata per questo tutorial, ti consigliamo di eliminare le risorse che non desideri conservare per evitare l'addebito di spese aggiuntive.

  1. SageMaker endpoint: se hai creato l' SageMaker endpoint per questo tutorial anziché utilizzare un endpoint esistente, elimina l'endpoint. Nel pannello di SageMaker controllo, scegli Configurazioni degli endpoint. Scegli l'endpoint che hai creato e scegli Azioni, Elimina. Conferma l'eliminazione.

  2. SageMaker notebook: sulla SageMaker console, scegli Istanze Notebook. Scegliere il notebook creato, quindi Actions (Operazioni), Stop (Arresta). Se lo Status (Stato) del notebook è Stopped (Arrestato), scegliere Actions (Operazioni), Delete (Elimina). Conferma l'eliminazione.

    Nota

    Per ulteriori informazioni sulla pulizia SageMaker delle risorse, consulta Pulisci nella guida per SageMaker sviluppatori.

  3. SageMaker politica di esecuzione: nella console IAM, nel pannello di navigazione, scegli Policies. Scegliere la policy creata per questo tutorial. Il nome della policy è simile al seguente:AmazonSageMaker-ExecutionPolicy-timestamp.

    Scegliere Policy actions (Operazioni policy), Delete (Elimina). Conferma l'eliminazione.

  4. SageMaker ruolo di esecuzione: Nella console IAM, nel riquadro di navigazione, scegli Ruoli. Scegliere il ruolo creato per questo tutorial. Il nome del ruolo è simile al seguente:AmazonSageMaker-ExecutionRole-timestamp.

    Scegli Delete role (Elimina ruolo). Conferma l'eliminazione.

  5. AWS CloudFormation pila: Sulla AWS CloudFormation console, scegli lo stack che hai creato per questo tutorial. Scegli Actions (Operazioni), quindi Delete Stack (Elimina stack). Conferma l'eliminazione.

  6. Bucket Amazon S3: sulla console Amazon S3, scegli il bucket che hai creato per archiviare gli asset. SageMaker Scegli Elimina. Immettere il nome del bucket e scegliere Confirm (Conferma) per confermare l'eliminazione.

  7. Stream video Kinesis: nella console Kinesis Video Streams, scegli il flusso video che hai creato per l'applicazione. Scegliere Delete (Elimina). Confermare l'eliminazione.