Erkennung von Anomalien in einem Bild - Amazon Lookout für Vision

Hinweis zum Ende des Supports: Am 31. Oktober 2025 AWS wird der Support für Amazon Lookout for Vision eingestellt. Nach dem 31. Oktober 2025 können Sie nicht mehr auf die Lookout for Vision Vision-Konsole oder die Lookout for Vision Vision-Ressourcen zugreifen. Weitere Informationen finden Sie in diesem Blogbeitrag.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erkennung von Anomalien in einem Bild

Um Anomalien in einem Bild mit einem trainierten Amazon Lookout for Vision Vision-Modell zu erkennen, rufen Sie den Vorgang auf. DetectAnomalies Das Ergebnis von DetectAnomalies beinhaltet eine boolesche Vorhersage, die das Bild so klassifiziert, dass es eine oder mehrere Anomalien enthält, und einen Konfidenzwert für die Vorhersage. Handelt es sich bei dem Modell um ein Bildsegmentierungsmodell, umfasst das Ergebnis auch eine farbige Maske, die die Positionen verschiedener Arten von Anomalien zeigt.

Die Bilder, die Sie bereitstellen, DetectAnomalies müssen dieselben Breiten- und Höhenmaße haben wie die Bilder, die Sie zum Trainieren des Modells verwendet haben.

DetectAnomaliesakzeptiert Bilder als Bilder PNG oder JPG formatiert sie. Wir empfehlen, dass die Bilder dasselbe Kodierungs- und Komprimierungsformat haben wie die Bilder, die zum Trainieren des Modells verwendet wurden. Wenn Sie das Modell beispielsweise mit PNG Formatbildern trainieren, rufen Sie es DetectAnomalies mit PNG Formatbildern auf.

Vor dem DetectAnomalies Aufrufen müssen Sie Ihr Modell zunächst mit der StartModel Operation starten. Weitere Informationen finden Sie unter Starten Sie Ihr Amazon Lookout for Vision Vision-Modell. Ihnen werden die Zeit in Minuten, die ein Modell ausgeführt wird, und die Anzahl der Einheiten zur Erkennung von Anomalien, die Ihr Modell verwendet, in Rechnung gestellt. Wenn Sie kein Modell verwenden, verwenden Sie den StopModel Vorgang, um Ihr Modell zu beenden. Weitere Informationen finden Sie unter Ihr Amazon Lookout for Vision Vision-Modell beenden.

Anrufen DetectAnomalies

Um anzurufenDetectAnomalies, geben Sie Folgendes an:

  • Projekt — Der Name des Projekts, das das Modell enthält, das Sie verwenden möchten.

  • ModelVersion— Die Version des Modells, das Sie verwenden möchten.

  • ContentType— Der Bildtyp, den Sie analysieren möchten. Gültige Werte sind image/png (Bilder PNG formatieren) und image/jpeg (Bilder JPG formatieren).

  • Body — Die uncodierten Binärbytes, die das Bild darstellen.

    Das Bild muss dieselben Abmessungen haben wie die Bilder, die zum Trainieren des Modells verwendet wurden.

Das folgende Beispiel zeigt, wie man anruftDetectAnomalies. Sie können die Funktionsantwort aus den Python- und Java-Beispielen verwenden, um Funktionen aufzurufenFeststellen, ob ein Bild anomal ist.

AWS CLI

Dieser AWS CLI Befehl zeigt die JSON Ausgabe für den DetectAnomalies CLI Vorgang an. Ändern Sie die Werte der folgenden Eingabeparameter:

  • project namemit dem Namen des Projekts, das Sie verwenden möchten.

  • model versionmit der Version des Modells, das Sie verwenden möchten.

  • content typemit dem Typ des Bildes, das Sie verwenden möchten. Gültige Werte sind image/png (Bilder PNG formatieren) und image/jpeg (Bilder JPG formatieren).

  • file namemit dem Pfad und dem Dateinamen des Bilds, das Sie verwenden möchten. Stellen Sie sicher, dass der Dateityp dem Wert von entsprichtcontent-type.

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

Das vollständige Codebeispiel finden Sie unter 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)); }

Die Antwort von verstehen DetectAnomalies

Die Antwort von DetectAnomalies hängt vom Typ des Modells ab, das Sie trainieren (Klassifikationsmodell oder Segmentierungsmodell). In beiden Fällen handelt es sich bei der Antwort um ein DetectAnomalyResultObjekt.

Klassifikationsmodell

Wenn es sich bei Ihrem Modell um ein handeltBildklassifizierungsmodell, DetectAnomalies enthält die Antwort von Folgendes:

  • IsAnomalous— Ein boolescher Indikator dafür, dass das Bild eine oder mehrere Anomalien enthält.

  • Vertrauen — Das Vertrauen, das Amazon Lookout for Vision in die Genauigkeit der Anomalievorhersage hat ()IsAnomalous. Confidenceist ein Fließkommawert zwischen 0 und 1. Ein höherer Wert steht für ein höheres Konfidenzniveau.

  • Quelle — Informationen über das Bild, an das übergeben wurdeDetectAnomalies.

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

Sie stellen fest, ob ein Bild anomal ist, indem Sie das IsAnomalous Feld markieren und sicherstellen, dass der Confidence Wert hoch genug für Ihre Bedürfnisse ist.

Wenn Sie feststellen, dass die von DetectAnomalies zurückgegebenen Konfidenzwerte zu niedrig sind, sollten Sie das Modell erneut trainieren. Beispielcode finden Sie unter Klassifizierung.

Segmentierungsmodell

Wenn es sich bei Ihrem Modell um ein handeltBildsegmentierungsmodell, umfasst die Antwort Klassifizierungs- und Segmentierungsinformationen, z. B. eine Bildmaske und Anomalietypen. Klassifizierungsinformationen werden getrennt von Segmentierungsinformationen berechnet, und Sie sollten nicht von einer Beziehung zwischen ihnen ausgehen. Wenn Sie in der Antwort keine Segmentierungsinformationen erhalten, überprüfen Sie, ob Sie die neueste Version von AWS SDK installiert haben (AWS Command Line Interface falls Sie die AWS CLI verwenden). Beispielcode finden Sie unter Segmentierung undInformationen zur Klassifizierung und Segmentierung werden angezeigt.

  • IsAnomalous(Klassifizierung) — Ein boolescher Indikator, der das Bild entweder als normal oder als anomal klassifiziert.

  • Vertrauen (Klassifizierung) — Das Vertrauen, das Amazon Lookout for Vision in die Genauigkeit der Klassifizierung des Bildes hat (IsAnomalous). Confidenceist ein Fließkommawert zwischen 0 und 1. Ein höherer Wert steht für ein höheres Konfidenzniveau.

  • Quelle — Informationen über das Bild, an das übergeben wurdeDetectAnomalies.

  • AnomalyMask(Segmentierung) — Eine Pixelmaske, die die im analysierten Bild gefundenen Anomalien abdeckt. Das Bild kann mehrere Anomalien aufweisen. Die Farbe einer Maskenkarte gibt den Typ einer Anomalie an. Die Maskenfarben sind den Farben zugeordnet, die den Anomalietypen im Trainingsdatensatz zugewiesen sind. Um den Anomalie-Typ anhand einer Maskenfarbe zu ermitteln, überprüfen Sie das PixelAnomaly Feld für jede Color in der Liste angegebene Anomalie. Anomalies Beispielcode finden Sie unter Informationen zur Klassifizierung und Segmentierung werden angezeigt.

  • Anomalien (Segmentierung) — Eine Liste der im Bild gefundenen Anomalien. Jede Anomalie enthält den Anomalie-Typ (Name) und Pixelinformationen (). PixelAnomaly TotalPercentageAreaist der prozentuale Bereich des Bildes, den die Anomalie bedeckt. Colorist die Maskenfarbe für die Anomalie.

    Das erste Element in der Liste ist immer ein Anomalie-Typ, der den Bildhintergrund (BACKGROUND) darstellt, und sollte nicht als Anomalie betrachtet werden. Amazon Lookout for Vision fügt der Antwort automatisch den Typ der Hintergrundanomalie hinzu. Sie müssen in Ihrem Datensatz keinen Hintergrundanomalie-Typ deklarieren.

{ "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....." } }