跳转至主要内容
支持知识库

与相同模型的本地环境和OpenVINO™模型服务器 (OVMS) 相比,推理结果存在分歧

内容类型: 故障排除   |   文章 ID: 000098271   |   上次审核日期: 2024 年 04 月 01 日

说明

  • 使用 保险索赔处理 存储库并加载 YOLO 模型来测试准确性。
  • 推理结果在本地加载的 YOLO ONNX 模型与加载到 OVMS 中的相同模型之间存在分歧。
  • 04-accident-recog 中观察到的结果约为 86%,而 OVMS 的返回率约为 88%。

解决方法

OpenVINO™和Ultralytics加载的模型似乎收到了不同的输入,这导致了结果的差异。

要在本地环境中运行,需要进行一些更改,以下是更改:

04-04-accident-recog.ipynb

  1. 带有读取输入图像和运行预测的单元格:

    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. 在原始图像上绘制结果的单元格:

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

04-05-model-serving.ipynb

笔记本本身没有变化。所需的remote_infer.py更改。

  1. 预处理方法:

    // 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. 调用draw_bounding_box后处理:

    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]))

相关产品

本文适用于 3 产品。
英特尔® 至强融核™ 处理器软件 OpenVINO™ toolkit 性能函数库

免责声明

本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。