Ir para o conteúdo principal
Base de conhecimentos do Suporte

Divergência de resultados de inferência em comparação com o ambiente local e com o servidor de modelo OpenVINO™ (OVMS) para o mesmo modelo

Tipo de conteúdo: Solução de problemas   |   ID do artigo: 000098271   |   Última revisão: 01/04/2024

Descrição

  • Usou o repositório de processamento de solicitações de seguros e carregou o modelo YOLO para testar a precisão.
  • Os resultados de inferência divergiram entre o modelo YOLO ONNX carregado localmente e o mesmo modelo carregado em OVMS.
  • Os resultados observados em 04 acidentes-recog foram cerca de 86%, enquanto os OVMS devolveram cerca de 88%.

Resolução

Parece que os modelos OpenVINO™ e Ultralíticos carregados receberam entradas diferentes que causam a diferença nos resultados.

Algumas mudanças precisam ser feitas para serem executadas em um ambiente local. Estas são as mudanças:

04-04-accident-recog.ipynb

  1. Célula com imagem de entrada de leitura e previsão de execução:

    original_image: np.ndarray = cv2.imread("images/carImage3.jpg")
    blob = cv2.dnn.blobFromImage(original_image, size=(640, 640), swapRB=False)
    blob = np.ascontiguousarray(blob[0].transpose((1,2,0)))
    results = model.predict(blob)

  2. Célula que desenha resultados na imagem original:

    Image.fromarray(result.plot()[:,:,::-1].astype(np.uint8))

04-05-model-serving.ipynb

Nenhuma alteração no próprio notebook. São necessárias modificações no remote_infer.py.

  1. Método pré-processamento:

    // code placeholder
    def preprocess(image_path):
    original_image: np.ndarray = cv2.imread(image_path)
    [height, width, _] = original_image.shape

    # Calculate scale factor
    scale = (height/640, width/640)

    # Preprocess the image and prepare blob for model
    blob = cv2.dnn.blobFromImage(original_image, scalefactor=1 / 255, size=(640, 640), swapRB=True)
    return blob, scale, original_image

  2. Chame para draw_bounding_box dentro do pós-processo:

    draw_bounding_box(original_image, class_ids[index], scores[index], round(box[0] * scale[1]), round(box[1] * scale[0]),round((box[0] + box[2]) * scale[1]), round((box[1] + box[3]) * scale[0]))

Produtos relacionados

Este artigo aplica-se a 3 produtos.
Software do processador Intel® Xeon Phi™ OpenVINO™ toolkit Bibliotecas de desempenho

Avisos legais

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês prevalecerá e será a determinante. Exibir a versão em inglês desta página.