跳到主要內容
支援知識庫

與同一模型的本機環境和OpenVINO™模型伺服器 (OVMS) 相比,推斷結果會有所不同

內容類型: 疑難排解   |   文章 ID: 000098271   |   最近查看日期: 2024 年 04 月 01 日

描述

  • 使用 保險理賠處理 存儲庫並載入 YOLO 模型來測試準確性。
  • 推斷結果在本地載入的YOLO ONNX模型和載入到 OVMS 中的相同模型之間存在差異。
  • 04-accident-recog 中觀察到的結果約為86%,而OVMS的回報率約為88%。

解決方法

OpenVINO™和Ultralytics載入的模型似乎接收了不同的輸入,從而導致結果不同。

需要進行一些更改才能在本地環境中運行,這些更改是:

04-04-意外-識別.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 產品。
Intel® Xeon Phi™ 處理器軟體 OpenVINO™ 工具套件 效能程式庫

免責聲明

此頁面上的內容是原始英文內容的人工和電腦翻譯的組合。此內容僅供您方便,僅供一般參考,不應被視為完整或準確。如果本頁面的英文版本與翻譯之間存在任何矛盾,則以英文版本為準。 查看此頁面的英文版本。