Passer au Contenu principal
Base de connaissances pour l'assistance

Les résultats d’inférence divergent par rapport à l’environnement local et au serveur de modèle OpenVINO™ (OVMS) pour le même modèle

Type de contenu: Dépannage   |   ID de l'article: 000098271   |   Dernière révision: 01/04/2024

Descriptif

  • Utilisation du référentiel de traitement des réclamations d’assurance et chargement du modèle YOLO pour tester la précision.
  • Les résultats de l’inférence divergent entre le modèle ONNX YOLO chargé localement et le même modèle chargé dans OVMS.
  • Les résultats observés dans 04-accident-recog étaient d’environ 86%, tandis que les OVMS ont retourné environ 88%.

Résolution

Il semble que les modèles chargés de OpenVINO™ et Ultralytics aient reçu des entrées différentes, ce qui entraîne une différence dans les résultats.

Quelques modifications doivent être apportées pour s’exécuter dans un environnement local, voici les modifications suivantes :

04-04-accident-recog.ipynb

  1. Cellule avec image d’entrée de lecture et prédiction en cours d’exécution :

    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. Cellule qui dessine les résultats sur l’image d’origine :

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

04-05-model-serving.ipynb

Aucun changement dans le bloc-notes lui-même. Modifications requises dans remote_infer.py.

  1. Méthode de prétraitement :

    // 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. Appel aux draw_bounding_box inside postprocess :

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

Produits associés

Cet article s'applique aux produits 3.
Logiciels pour processeurs Intel® Xeon Phi™ OpenVINO™ Toolkit Bibliothèques de performances

Avis de non-responsabilité

Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.