メインコンテンツへスキップ
サポート・ナレッジベース

同じモデルのローカル環境およびOpenVINO™・モデル・サーバー (OVMS) と比較した場合、推論結果が異なる

コンテンツタイプ: トラブルシューティング   |   記事 ID: 000098271   |   最終改訂日: 2024/04/01

詳細

  • 保険金請求処理リポジトリーを使用し、YOLO モデルをロードして精度をテストしました。
  • ローカルにロードされた YOLO ONNX モデルと、OVMS にロードされた同じモデルの間で、推論結果が異なります。
  • 04-事故認識で観察された結果は約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 製品に適用します。
インテル® Xeon Phi™ プロセッサー・ソフトウェア OpenVINO™ toolkit パフォーマンス・ライブラリー

免責条項

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。