Aviso de fim do suporte: em 31 de outubro de 2025, o suporte para o Amazon Lookout for Vision AWS será interrompido. Depois de 31 de outubro de 2025, você não poderá mais acessar o console do Lookout for Vision ou os recursos do Lookout for Vision. Para obter mais informações, visite esta postagem do blog
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usando um modelo em seu componente de aplicativo cliente
As etapas para usar um modelo de um componente de aplicativo cliente são semelhantes ao uso de um modelo hospedado na nuvem.
Comece a executar o modelo.
Detecte anomalias nas imagens.
Pare o modelo, se não for mais necessário.
O Amazon Lookout for Vision Edge Agent fornece API para iniciar um modelo, detectar anomalias em uma imagem e interromper um modelo. Você também pode usar a API para listar os modelos em um dispositivo e obter informações sobre um modelo implantado. Para obter mais informações, consulte Referência da API do Amazon Lookout for Vision.
Você pode obter informações de erro verificando os códigos de status do gRPC. Para obter mais informações, consulte Obter informações de erro.
Para escrever seu código, você pode usar qualquer linguagem compatível com o gRPC. Fornecemos exemplos de código Python.
Tópicos
Usando o stub em seu componente de aplicativo cliente
Use o código a seguir para configurar o acesso ao seu modelo por meio do Lookout for Vision Edge Agent.
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
Iniciar o modelo
Você inicia um modelo chamando a Modelo inicial API. O modelo pode demorar um pouco para começar. Você pode verificar o status atual ligando paraDescreva o modelo. O modelo está em execução se o valor do status
campo estiver em execução.
Código de exemplo
Substitua component_name
pelo nome do componente do seu modelo.
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)
Detecção de anomalias
Você usa a Detectar anomalias API para detectar anomalias em uma imagem.
A operação DetectAnomalies
espera que o bitmap da imagem seja passado no formato compactado RGB888. O primeiro byte representa o canal vermelho, o segundo byte representa o canal verde e o terceiro byte representa o canal azul. Se você fornecer a imagem em um formato diferente, como BGR, as previsões de DetectAnomalies estão incorretas.
Por padrão, o OpenCV usa o formato BGR para bitmaps de imagem. Se você estiver usando o OpenCV para capturar imagens para análise, deverá converter DetectAnomalies
a imagem para o formato RGB888 antes de passá-la para o. DetectAnomalies
As imagens que você fornece DetectAnomalies
devem ter as mesmas dimensões de largura e altura das imagens que você usou para treinar o modelo.
Detectando anomalias usando bytes de imagem
Você pode detectar anomalias em uma imagem fornecendo a imagem como bytes de imagem. No exemplo a seguir, os bytes da imagem são recuperados de uma imagem armazenada no sistema de arquivos local.
Substitua sample.jpg
pelo nome do arquivo de imagem que você deseja analisar. Substitua component_name
pelo nome do componente do seu modelo.
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
")
Detectando anomalias usando o segmento de memória compartilhada
Você pode detectar anomalias em uma imagem fornecendo a imagem como bytes de imagem no segmento de memória compartilhada POSIX. Para proporcionar o melhor desempenho, recomendamos usar memória compartilhada para solicitações de DetectAnomalies. Para obter mais informações, consulte Detectar anomalias.
Parar o modelo
Se você não estiver mais usando o modelo, a Parar o modelo API para interromper a execução do modelo.
stop_model_response = stub.StopModel( pb2.StopModelRequest( model_component=model_component_name ) ) print(f"New status of the model is {stop_model_response.status}")
Listando modelos em um dispositivo
Você pode usar a ListModels API para listar os modelos que são implantados em um dispositivo.
models_list_response = stub.ListModels( pb2.ListModelsRequest() ) for model in models_list_response.models: print(f"Model Details {model}")
Descrever um modelo
Você pode obter informações sobre um modelo implantado em um dispositivo chamando a Descreva o modelo API. Usar o DescribeModel
é útil para obter o status atual de um modelo. Por exemplo, você precisa saber se um modelo está em execução antes de poder ligar DetectAnomalies
. Para ver um código demonstrativo, consulte Iniciar o modelo.
Obter informações de erro
Os códigos de status do gRPC são usados para relatar os resultados da API.
Você pode obter informações de erro detectando a RpcError
exceção, conforme mostrado no exemplo a seguir. Para obter informações sobre os códigos de status de erro, consulte o tópico de referência de uma API.
# Error handling. try: stub.DetectAnomalies(detect_anomalies_request) except grpc.RpcError as e: print(f"Error code: {e.code()}, Status: {e.details()}")