Verwenden Sie ein Modell in Ihrer Client-Anwendungskomponente - 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.

Verwenden Sie ein Modell in Ihrer Client-Anwendungskomponente

Die Schritte zur Verwendung eines Modells aus einer Client-Anwendungskomponente ähneln der Verwendung eines in der Cloud gehosteten Modells.

  1. Starten Sie die Ausführung des Modells.

  2. Erkennen Sie Anomalien in Bildern.

  3. Stoppen Sie das Modell, falls es nicht mehr benötigt wird.

Der Amazon Lookout for Vision Edge Agent bietet eine API zum Starten eines Modells, zum Erkennen von Anomalien in einem Bild und zum Stoppen eines Modells. Sie können die API auch verwenden, um die Modelle auf einem Gerät aufzulisten und Informationen über ein bereitgestelltes Modell abzurufen. Weitere Informationen finden Sie unter Referenz zur Amazon Lookout for Vision Edge Agent-API.

Sie können Fehlerinformationen abrufen, indem Sie die gRPC-Statuscodes überprüfen. Weitere Informationen finden Sie unter Fehlerinformationen abrufen.

Um Ihren Code zu schreiben, können Sie jede Sprache verwenden, die von gRPC unterstützt wird. Wir stellen Python-Beispielcode zur Verfügung.

Verwenden Sie den Stub in Ihrer Client-Anwendungskomponente

Verwenden Sie den folgenden Code, um den Zugriff auf Ihr Modell über den Lookout for Vision Edge Agent einzurichten.

import grpc from edge_agent_pb2_grpc import EdgeAgentStub import edge_agent_pb2 as pb2 # Creating stub. with grpc.insecure_channel("unix:///tmp/aws.iot.lookoutvision.EdgeAgent.sock") as channel: stub = EdgeAgentStub(channel) # Add additional code that works with Edge Agent in this block to prevent resources leakage

Das Modell starten

Sie starten ein Modell, indem Sie die StartModel API aufrufen. Es kann eine Weile dauern, bis das Modell gestartet wird. Sie können den aktuellen Status überprüfen, indem Sie anrufenDescribeModel. Das Modell wird ausgeführt, wenn der Wert des status Felds Wird ausgeführt lautet.

Beispiel-Code

Ersetzen Sie component_name durch den Namen Ihrer Modellkomponente.

import time import grpc from edge_agent_pb2_grpc import EdgeAgentStub import edge_agent_pb2 as pb2 model_component_name = "component_name" def start_model_if_needed(stub, model_name): # Starting model if needed. while True: model_description_response = stub.DescribeModel(pb2.DescribeModelRequest(model_component=model_name)) print(f"DescribeModel() returned {model_description_response}") if model_description_response.model_description.status == pb2.RUNNING: print("Model is already running.") break elif model_description_response.model_description.status == pb2.STOPPED: print("Starting the model.") stub.StartModel(pb2.StartModelRequest(model_component=model_name)) continue elif model_description_response.model_description.status == pb2.FAILED: raise Exception(f"model {model_name} failed to start") print(f"Waiting for model to start.") if model_description_response.model_description.status != pb2.STARTING: break time.sleep(1.0) # Creating stub. with grpc.insecure_channel("unix:///tmp/aws.iot.lookoutvision.EdgeAgent.sock") as channel: stub = EdgeAgentStub(channel) start_model_if_needed(stub, model_component_name)

Erkennung von Anomalien

Sie verwenden die DetectAnomalies API, um Anomalien in einem Bild zu erkennen.

Der DetectAnomalies Vorgang geht davon aus, dass die Bild-Bitmap im komprimierten RGB888-Format übergeben wird. Das erste Byte steht für den roten Kanal, das zweite Byte für den grünen Kanal und das dritte Byte für den blauen Kanal. Wenn Sie das Bild in einem anderen Format bereitstellen, z. B. in BGR, DetectAnomalies sind die Prognosen von falsch.

Standardmäßig verwendet OpenCV das BGR-Format für Bild-Bitmaps. Wenn Sie OpenCV verwenden, um Bilder zur Analyse aufzunehmenDetectAnomalies, müssen Sie das Bild in das RGB888-Format konvertieren, bevor Sie das Bild an übergeben. DetectAnomalies

Die Bilder, die Sie zur Verfügung stellen, DetectAnomalies müssen dieselben Breiten- und Höhenmaße haben wie die Bilder, mit denen Sie das Modell trainiert haben.

Erkennen von Anomalien mithilfe von Bildbytes

Sie können Anomalien in einem Bild erkennen, indem Sie das Bild als Bildbytes angeben. Im folgenden Beispiel werden die Bildbytes aus einem Bild abgerufen, das im lokalen Dateisystem gespeichert ist.

Ersetzen Sie sample.jpg durch den Namen der Bilddatei, die Sie analysieren möchten. Ersetzen Sie component_name durch den Namen Ihrer Modellkomponente.

import time from PIL import Image import grpc from edge_agent_pb2_grpc import EdgeAgentStub import edge_agent_pb2 as pb2 model_component_name = "component_name" .... # Detecting anomalies. def detect_anomalies(stub, model_name, image_path): image = Image.open(image_path) image = image.convert("RGB") detect_anomalies_response = stub.DetectAnomalies( pb2.DetectAnomaliesRequest( model_component=model_name, bitmap=pb2.Bitmap( width=image.size[0], height=image.size[1], byte_data=bytes(image.tobytes()) ) ) ) print(f"Image is anomalous - {detect_anomalies_response.detect_anomaly_result.is_anomalous}") return detect_anomalies_response.detect_anomaly_result # Creating stub. with grpc.insecure_channel("unix:///tmp/aws.iot.lookoutvision.EdgeAgent.sock") as channel: stub = EdgeAgentStub(channel) start_model_if_needed(stub, model_component_name) detect_anomalies(stub, model_component_name, "sample.jpg")

Erkennung von Anomalien mithilfe eines gemeinsam genutzten Speichersegments

Sie können Anomalien in einem Bild erkennen, indem Sie das Bild als Bildbytes im gemeinsamen POSIX-Speichersegment bereitstellen. Für eine optimale Leistung empfehlen wir, Shared Memory für Anfragen zu verwenden. DetectAnomalies Weitere Informationen finden Sie unter DetectAnomalies.

Das Modell wird gestoppt

Wenn Sie das Modell nicht mehr verwenden, stoppt die StopModel API die Ausführung des Modells.

stop_model_response = stub.StopModel( pb2.StopModelRequest( model_component=model_component_name ) ) print(f"New status of the model is {stop_model_response.status}")

Modelle auf einem Gerät auflisten

Sie können die ListModels API verwenden, um die Modelle aufzulisten, die auf einem Gerät bereitgestellt werden.

models_list_response = stub.ListModels( pb2.ListModelsRequest() ) for model in models_list_response.models: print(f"Model Details {model}")

Beschreibung eines Modells

Sie können Informationen über ein Modell abrufen, das auf einem Gerät bereitgestellt wurde, indem Sie die DescribeModel API aufrufen. Die Verwendung DescribeModel ist nützlich, um den aktuellen Status eines Modells abzurufen. Sie müssen beispielsweise wissen, ob ein Modell läuft, bevor Sie es aufrufen könnenDetectAnomalies. Beispielcode finden Sie unter Das Modell starten.

Fehlerinformationen abrufen

gRPC-Statuscodes werden verwendet, um API-Ergebnisse zu melden.

Sie können Fehlerinformationen abrufen, indem Sie die RpcError Ausnahme abfangen, wie im folgenden Beispiel gezeigt. Informationen zu den Fehlerstatuscodes finden Sie im Referenzthema für eine API.

# Error handling. try: stub.DetectAnomalies(detect_anomalies_request) except grpc.RpcError as e: print(f"Error code: {e.code()}, Status: {e.details()}")