1
votes

Essayer d'obtenir un openVino IR à partir d'un modèle TF gelé

J'ai un modèle inceptionV2 donné que je veux faire travailler sur le rPi, en utilisant le NCS2. Les exemples fonctionnent bien. Maintenant, le modèle qui me est donné est une démo basée sur la démo ssd_inceptionv2, qui, je sais, fonctionne, puisque j'ai pu convertir le pb gelé de cette démo en fichiers IR bin et xml, et les exécuter avec succès sur le pi. Cependant, lorsque j'essaye de convertir le modèle donné en IR, cela échoue. Pour être plus précis, il échoue de différentes manières, selon la façon dont je tente de le convertir.

Le modèle donné a un fichier .pb gelé, des fichiers de point de contrôle et un .pbtxt. En convertissant le fichier .pb, la commande que j'utilise est:

python3 /opt/intel/computer_vision_sdk/deployment_tools/model_optimizer/mo_tf.py 
  --input_model frozengraph.pb 
  --tensorflow_use_custom_operations_config /opt/intel/computer_vision_sdk/deployment_tools/model_optimizer/extensions/front/tf/ssd_v2_support.json 
  --tensorflow_object_detection_api_pipeline "PATH"/pipeline.config 
  --reverse_input_channels 
  --data_type FP16

cela donne l'erreur de forme d'entrée, que je corrige avec --input_shape [1,299,299,3] , mais cela ne conduit qu'à l'erreur:

Impossible de déduire des formes ou des valeurs pour le nœud

"Postprocessor / BatchMultiClassNonMaxSuppression / MultiClassNonMaxSuppression / SortByField / TopKV2"

J'essaye donc à la fois de recongeler le modèle et d'exécuter la conversion sur le graph.pbtxt. Pour les deux méthodes, cela génère des erreurs puisque le nombre de nœuds est respectivement de 0 et 1.

Des idées sur ce que je pourrais faire de mal ici?


0 commentaires

3 Réponses :


0
votes

En supposant que vous êtes en mesure de détecter les objets à l'aide du graphique figé, essayez une fois en modifiant l'argument de ligne de commande en tensorflow_object_detection_api_pipeline_config ainsi que le fichier pipeline.config que vous utilisez ? Vous devriez pouvoir créer des fichiers IR si vous utilisez le fichier pipeline.config qui a été généré avec le graphique figé pour votre modèle personnalisé.


0 commentaires

0
votes

Les modèles Tensorflow peuvent être un peu délicats, surtout lorsque vous modifiez ceux du zoo modèle, qui sont déjà assez complexes. Il y a quelques choses que je voudrais mentionner pour votre scénario:

Dans ce guide OpenVINO , à l'adresse " En utilisant TensorFlow * - Paramètres de conversion spécifiques ", vous trouverez que

Les modèles produits avec TensorFlow * n'ont généralement pas de formes entièrement définies (contiennent -1 dans certaines dimensions). Il est nécessaire de transmettre une forme explicite pour l'entrée en utilisant le paramètre de ligne de commande --input_shape ou -b pour remplacer uniquement la dimension du lot. Si la forme est entièrement définie, il n'est pas nécessaire de spécifier les options -b ou --input_shape.

Quelques exemples de cela incluent ce problème / réponse Openvino , et quelques autres dans le Model Guide de l'optimiseur dans la section " Rubriques avancées sur les composants internes de l'Optimiseur de modèle ".

Pour mémoire, j'ai pu convertir un plus rapide_rcnn_inception_v2 affiné du zoo modèle sans spécifier l'argument --input_shape , donc cela dépend vraiment de votre modèle .

De plus, cela peut être une faute de frappe ou un problème de version, mais l'argument --tensorflow_object_detection_api_pipeline est officiellement --tensorflow_object_detection_api_pipeline_config (comme mentionné par @Bhargavi).

Enfin, un bon moyen de déboguer vos commandes de conversion est d'utiliser le paramètre --log_level DEBUG pour voir la sortie complète.


0 commentaires

0
votes

Veuillez vous référer au lien ci-dessous

0 commentaires