Modelli di visione artificiale - AWS Panorama

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

Modelli di visione artificiale

Un modello di visione artificiale è un programma software addestrato a rilevare oggetti nelle immagini. Un modello impara a riconoscere un insieme di oggetti analizzando innanzitutto le immagini di tali oggetti attraverso l'addestramento. Un modello di visione artificiale prende un'immagine come input e restituisce informazioni sugli oggetti che rileva, come il tipo di oggetto e la sua posizione. AWS Panorama supporta modelli di visione artificiale creati con PyTorch Apache MXNet e. TensorFlow

Nota

Per un elenco di modelli predefiniti che sono stati testati con AWS Panorama, consulta Compatibilità dei modelli.

Utilizzo dei modelli nel codice

Un modello restituisce uno o più risultati, che possono includere le probabilità delle classi rilevate, informazioni sulla posizione e altri dati. L'esempio seguente mostra come eseguire un'inferenza su un'immagine da un flusso video e inviare l'output del modello a una funzione di elaborazione.

Esempio application.py — Inferenza
def process_media(self, stream): """Runs inference on a frame of video.""" image_data = preprocess(stream.image,self.MODEL_DIM) logger.debug('Image data: {}'.format(image_data)) # Run inference inference_start = time.time() inference_results = self.call({"data":image_data}, self.MODEL_NODE) # Log metrics inference_time = (time.time() - inference_start) * 1000 if inference_time > self.inference_time_max: self.inference_time_max = inference_time self.inference_time_ms += inference_time # Process results (classification) self.process_results(inference_results, stream)

L'esempio seguente mostra una funzione che elabora i risultati del modello di classificazione di base. Il modello di esempio restituisce una serie di probabilità, che è il primo e unico valore nell'array dei risultati.

Esempio application.py — Elaborazione dei risultati
def process_results(self, inference_results, stream): """Processes output tensors from a computer vision model and annotates a video frame.""" if inference_results is None: logger.warning("Inference results are None.") return max_results = 5 logger.debug('Inference results: {}'.format(inference_results)) class_tuple = inference_results[0] enum_vals = [(i, val) for i, val in enumerate(class_tuple[0])] sorted_vals = sorted(enum_vals, key=lambda tup: tup[1]) top_k = sorted_vals[::-1][:max_results] indexes = [tup[0] for tup in top_k] for j in range(max_results): label = 'Class [%s], with probability %.3f.'% (self.classes[indexes[j]], class_tuple[0][indexes[j]]) stream.add_label(label, 0.1, 0.1 + 0.1*j)

Il codice dell'applicazione trova i valori con le probabilità più elevate e li associa alle etichette in un file di risorse che viene caricato durante l'inizializzazione.

Creazione di un modello personalizzato

Puoi usare modelli che crei in PyTorch Apache MXNet e TensorFlow nelle applicazioni AWS Panorama. In alternativa alla creazione e alla formazione di modelli inSageMaker, puoi utilizzare un modello addestrato o creare e addestrare il tuo modello con un framework supportato ed esportarlo in un ambiente locale o in Amazon EC2.

Nota

Per dettagli sulle versioni del framework e sui formati di file supportati da SageMaker Neo, consulta Supported Frameworks nella Amazon SageMaker Developer Guide.

L'archivio di questa guida fornisce un'applicazione di esempio che dimostra questo flusso di lavoro per un modello Keras in formato. TensorFlow SavedModel Utilizza TensorFlow 2 e può essere eseguito localmente in un ambiente virtuale o in un contenitore Docker. L'app di esempio include anche modelli e script per la creazione del modello su un'istanza Amazon EC2.

Esempio di applicazione di modello personalizzato

AWS Panorama utilizza SageMaker Neo per compilare modelli da utilizzare sull'appliance AWS Panorama. Per ogni framework, usa il formato supportato da SageMaker Neo e impacchetta il modello in un .tar.gz archivio.

Per ulteriori informazioni, consulta Compilazione e distribuzione di modelli con Neo nella Amazon SageMaker Developer Guide.

Imballaggio di un modello

Un pacchetto modello comprende un descrittore, una configurazione del pacchetto e un archivio del modello. Come in un pacchetto di immagini dell'applicazione, la configurazione del pacchetto indica al servizio AWS Panorama dove sono archiviati il modello e il descrittore in Amazon S3.

Esempio Pacchetti/123456789012-squeezenet_pytorch-1.0/descriptor.json
{ "mlModelDescriptor": { "envelopeVersion": "2021-01-01", "framework": "PYTORCH", "frameworkVersion": "1.8", "precisionMode": "FP16", "inputs": [ { "name": "data", "shape": [ 1, 3, 224, 224 ] } ] } }
Nota

Specifica solo la versione principale e secondaria della versione del framework. Per un elenco delle versioni e delle TensorFlow versioni supportate PyTorch di Apache MXNet, vedi Framework supportati.

Per importare un modello, usa il import-raw-model comando AWS Panorama Application CLI. Se apportate modifiche al modello o al relativo descrittore, è necessario eseguire nuovamente questo comando per aggiornare le risorse dell'applicazione. Per ulteriori informazioni, consulta Modifica del modello di visione artificiale.

Per lo schema JSON del file descrittore, vedete AssetDescriptor.schema.json.

Modelli di allenamento

Quando addestrate un modello, utilizzate immagini dall'ambiente di destinazione o da un ambiente di test che assomiglia molto all'ambiente di destinazione. Considerate i seguenti fattori che possono influire sulle prestazioni del modello:

  • Illuminazione: la quantità di luce riflessa da un soggetto determina la quantità di dettagli che il modello deve analizzare. Un modello addestrato con immagini di soggetti ben illuminati potrebbe non funzionare bene in un ambiente con scarsa illuminazione o retroilluminato.

  • Risoluzione: la dimensione di input di un modello è in genere fissata a una risoluzione compresa tra 224 e 512 pixel di larghezza in un rapporto di aspetto quadrato. Prima di passare un fotogramma di video al modello, potete ridimensionarlo o ritagliarlo per adattarlo alle dimensioni richieste.

  • Distorsione dell'immagine: la lunghezza focale e la forma dell'obiettivo di una fotocamera possono causare una distorsione delle immagini lontano dal centro dell'inquadratura. La posizione di una fotocamera determina anche quali caratteristiche del soggetto sono visibili. Ad esempio, una fotocamera aerea con obiettivo grandangolare mostrerà la parte superiore di un soggetto quando è al centro dell'inquadratura e una vista inclinata del lato del soggetto man mano che si allontana dal centro.

Per risolvere questi problemi, potete preelaborare le immagini prima di inviarle al modello e addestrare il modello su una più ampia varietà di immagini che riflettono le variazioni negli ambienti reali. Se un modello deve funzionare in situazioni di illuminazione e con una varietà di telecamere, sono necessari più dati per l'allenamento. Oltre a raccogliere più immagini, puoi ottenere più dati di allenamento creando varianti delle immagini esistenti che sono inclinate o con illuminazione diversa.