Rilevamento di anomalie in un'immagine - Amazon Lookout per Vision

Avviso di fine del supporto: il 31 ottobre 2025 AWS interromperà il supporto per Amazon Lookout for Vision. Dopo il 31 ottobre 2025, non potrai più accedere alla console Lookout for Vision o alle risorse Lookout for Vision. Per ulteriori informazioni, consulta questo post del blog.

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

Rilevamento di anomalie in un'immagine

Per rilevare anomalie in un'immagine con un modello Amazon Lookout for Vision addestrato, devi chiamare l'operazione. DetectAnomalies Il risultato di DetectAnomalies include una previsione booleana che classifica l'immagine come contenente una o più anomalie e un valore di confidenza per la previsione. Se il modello è un modello di segmentazione dell'immagine, il risultato include anche una maschera colorata che mostra le posizioni di diversi tipi di anomalie.

Le immagini fornite DetectAnomalies devono avere le stesse dimensioni di larghezza e altezza delle immagini utilizzate per addestrare il modello.

DetectAnomaliesaccetta immagini come immagini PNG o JPG formatta immagini. Si consiglia di utilizzare lo stesso formato di codifica e compressione delle immagini utilizzate per addestrare il modello. Ad esempio, se addestrate il modello con immagini in PNG formato, chiamate DetectAnomalies con immagini PNG in formato.

Prima di chiamareDetectAnomalies, è necessario avviare il modello con l'StartModeloperazione. Per ulteriori informazioni, consulta Avvio del modello Amazon Lookout for Vision. I costi vengono calcolati in base alla quantità di tempo, in minuti, di esecuzione di un modello e al numero di unità di rilevamento delle anomalie utilizzate dal modello. Se non si utilizza un modello, utilizzare l'StopModeloperazione per arrestare il modello. Per ulteriori informazioni, consulta Interruzione del modello Amazon Lookout for Vision.

Chiamata DetectAnomalies

Per chiamareDetectAnomalies, specificare quanto segue:

  • Progetto: il nome del progetto che contiene il modello che desiderate utilizzare.

  • ModelVersion— La versione del modello che si desidera utilizzare.

  • ContentType— Il tipo di immagine che si desidera analizzare. I valori validi sono image/png (PNGformato immagini) e image/jpeg (JPGformato immagini).

  • Body: i byte binari non codificati che rappresentano l'immagine.

    L'immagine deve avere le stesse dimensioni delle immagini utilizzate per addestrare il modello.

L'esempio seguente mostra come chiamareDetectAnomalies. È possibile utilizzare la risposta della funzione degli esempi Python e Java per chiamare le funzioni in. Determinare se un'immagine è anomala

AWS CLI

Questo AWS CLI comando visualizza l'JSONoutput dell'DetectAnomaliesCLIoperazione. Modificate i valori dei seguenti parametri di input:

  • project namecon il nome del progetto che si desidera utilizzare.

  • model versioncon la versione del modello che si desidera utilizzare.

  • content typecon il tipo di immagine che si desidera utilizzare. I valori validi sono image/png (PNGformato immagini) e image/jpeg (JPGformato immagini).

  • file namecon il percorso e il nome del file dell'immagine che si desidera utilizzare. Assicuratevi che il tipo di file corrisponda al valore dicontent-type.

aws lookoutvision detect-anomalies --project-name project name\ --model-version model version\ --content-type content type\ --body file name \ --profile lookoutvision-access
Python

Per un esempio di codice completo, vedete GitHub.

def detect_anomalies(lookoutvision_client, project_name, model_version, photo): """ Calls DetectAnomalies using the supplied project, model version, and image. :param lookoutvision_client: A Lookout for Vision Boto3 client. :param project: The project that contains the model that you want to use. :param model_version: The version of the model that you want to use. :param photo: The photo that you want to analyze. :return: The DetectAnomalyResult object that contains the analysis results. """ image_type = imghdr.what(photo) if image_type == "jpeg": content_type = "image/jpeg" elif image_type == "png": content_type = "image/png" else: logger.info("Invalid image type for %s", photo) raise ValueError( f"Invalid file format. Supply a jpeg or png format file: {photo}") # Get images bytes for call to detect_anomalies with open(photo, "rb") as image: response = lookoutvision_client.detect_anomalies( ProjectName=project_name, ContentType=content_type, Body=image.read(), ModelVersion=model_version) return response['DetectAnomalyResult']
Java V2
public static DetectAnomalyResult detectAnomalies(LookoutVisionClient lfvClient, String projectName, String modelVersion, String photo) throws IOException, LookoutVisionException { /** * Creates an Amazon Lookout for Vision dataset from a manifest file. * Returns after Lookout for Vision creates the dataset. * * @param lfvClient An Amazon Lookout for Vision client. * @param projectName The name of the project in which you want to create a * dataset. * @param modelVersion The version of the model that you want to use. * * @param photo The photo that you want to analyze. * * @return DetectAnomalyResult The analysis result from DetectAnomalies. */ logger.log(Level.INFO, "Processing local file: {0}", photo); // Get image bytes. InputStream sourceStream = new FileInputStream(new File(photo)); SdkBytes imageSDKBytes = SdkBytes.fromInputStream(sourceStream); byte[] imageBytes = imageSDKBytes.asByteArray(); // Get the image type. Can be image/jpeg or image/png. String contentType = getImageType(imageBytes); // Detect anomalies in the supplied image. DetectAnomaliesRequest request = DetectAnomaliesRequest.builder().projectName(projectName) .modelVersion(modelVersion).contentType(contentType).build(); DetectAnomaliesResponse response = lfvClient.detectAnomalies(request, RequestBody.fromBytes(imageBytes)); /* * Tip: You can also use the following to analyze a local file. * Path path = Paths.get(photo); * DetectAnomaliesResponse response = lfvClient.detectAnomalies(request, path); */ DetectAnomalyResult result = response.detectAnomalyResult(); String prediction = "Prediction: Normal"; if (Boolean.TRUE.equals(result.isAnomalous())) { prediction = "Prediction: Anomalous"; } // Convert confidence to percentage. NumberFormat defaultFormat = NumberFormat.getPercentInstance(); defaultFormat.setMinimumFractionDigits(1); String confidence = String.format("Confidence: %s", defaultFormat.format(result.confidence())); // Log classification result. String photoPath = "File: " + photo; String[] imageLines = { photoPath, prediction, confidence }; logger.log(Level.INFO, "Image: {0}\nAnomalous: {1}\nConfidence {2}", imageLines); return result; } // Gets the image mime type. Supported formats are image/jpeg and image/png. private static String getImageType(byte[] image) throws IOException { InputStream is = new BufferedInputStream(new ByteArrayInputStream(image)); String mimeType = URLConnection.guessContentTypeFromStream(is); logger.log(Level.INFO, "Image type: {0}", mimeType); if (mimeType.equals("image/jpeg") || mimeType.equals("image/png")) { return mimeType; } // Not a supported file type. logger.log(Level.SEVERE, "Unsupported image type: {0}", mimeType); throw new IOException(String.format("Wrong image type. %s format isn't supported.", mimeType)); }

Comprensione della risposta di DetectAnomalies

La risposta di DetectAnomalies varia a seconda del tipo di modello da addestrare (modello di classificazione o modello di segmentazione). In entrambi i casi la risposta è un DetectAnomalyResultoggetto.

Modello di classificazione

Se il modello è unModello di classificazione delle immagini, la risposta di DetectAnomalies contiene quanto segue:

  • IsAnomalous— Un indicatore booleano che indica che l'immagine contiene una o più anomalie.

  • Fiducia: la fiducia che Amazon Lookout for Vision ripone nell'accuratezza della IsAnomalous previsione delle anomalie (). Confidenceè un valore in virgola mobile compreso tra 0 e 1. Un valore più alto indica una maggiore confidenza.

  • Fonte: informazioni sull'immagine trasmessa aDetectAnomalies.

{ "DetectAnomalyResult": { "Source": { "Type": "direct" }, "IsAnomalous": true, "Confidence": 0.9996867775917053 } }

È possibile determinare se un'immagine è anomala controllando il IsAnomalous campo e confermando che il Confidence valore è sufficientemente alto per le proprie esigenze.

Se si ritiene che i valori di confidenza restituiti da DetectAnomalies siano troppo bassi, valutare la possibilità di aggiornare il modello. Per il codice di esempio, consulta Classificazione.

Modello di segmentazione

Se il modello è unModello di segmentazione delle immagini, la risposta include informazioni sulla classificazione e sulla segmentazione, come una maschera di immagine e i tipi di anomalia. Le informazioni sulla classificazione vengono calcolate separatamente dalle informazioni sulla segmentazione e non si deve presumere una relazione tra di esse. Se non ottieni informazioni sulla segmentazione nella risposta, verifica che sia AWS SDK installata la versione più recente del file (AWS Command Line Interface se utilizzi la AWS CLI). Per esempio di codice, vedi Segmentazione eVisualizzazione delle informazioni di classificazione e segmentazione.

  • IsAnomalous(classificazione) — Un indicatore booleano che classifica l'immagine come normale o anomala.

  • Fiducia (classificazione): la fiducia che Amazon Lookout for Vision ripone nell'accuratezza della classificazione dell'immagine IsAnomalous (). Confidenceè un valore in virgola mobile compreso tra 0 e 1. Un valore più alto indica una maggiore confidenza.

  • Fonte: informazioni sull'immagine trasmessa aDetectAnomalies.

  • AnomalyMask(segmentazione): una maschera di pixel che copre le anomalie rilevate nell'immagine analizzata. L'immagine può presentare più anomalie. Il colore di una mappa con maschera indica il tipo di anomalia. I colori della maschera corrispondono ai colori assegnati ai tipi di anomalia nel set di dati di addestramento. Per trovare il tipo di anomalia in base al colore di una maschera, controllate il PixelAnomaly campo di ogni anomalia restituita Color nell'elenco. Anomalies Per il codice di esempio, consulta Visualizzazione delle informazioni di classificazione e segmentazione.

  • Anomalie (segmentazione): un elenco di anomalie rilevate nell'immagine. Ogni anomalia include il tipo di anomalia () e le informazioni sui pixel (Name). PixelAnomaly TotalPercentageAreaè l'area percentuale dell'immagine coperta dall'anomalia. Colorè il colore della maschera per l'anomalia.

    Il primo elemento dell'elenco è sempre un tipo di anomalia che rappresenta lo sfondo dell'immagine (BACKGROUND) e non dovrebbe essere considerato un'anomalia. Amazon Lookout for Vision aggiunge automaticamente il tipo di anomalia di sfondo alla risposta. Non è necessario dichiarare un tipo di anomalia di fondo nel set di dati.

{ "DetectAnomalyResult": { "Source": { "Type": "direct" }, "IsAnomalous": true, "Confidence": 0.9996814727783203, "Anomalies": [ { "Name": "background", "PixelAnomaly": { "TotalPercentageArea": 0.998999834060669, "Color": "#FFFFFF" } }, { "Name": "scratch", "PixelAnomaly": { "TotalPercentageArea": 0.0004034999874420464, "Color": "#7ED321" } }, { "Name": "dent", "PixelAnomaly": { "TotalPercentageArea": 0.0005966666503809392, "Color": "#4DD8FF" } } ], "AnomalyMask": "iVBORw0....." } }