web-dev-qa-db-fra.com

Comment exécuter le travail eval.py pour les modèles de détection d'objets tensorflow

J'ai formé un détecteur d'objets à l'aide de l'API de détection d'objets de tensorflow sur Google Colab. Après avoir fait des recherches sur Internet pendant la majeure partie de la journée, je n'ai pas pu trouver de tutoriel sur la façon d'exécuter une évaluation pour mon modèle, donc je peux obtenir des métriques comme mAP.

J'ai compris que je devais utiliser le fichier eval.py du dossier models/research/object_detection, mais je ne suis pas sûr des paramètres à transmettre au script.

En bref, ce que j'ai fait jusqu'à présent, c'est de générer les étiquettes pour les images de test et de formation et de les stocker dans le dossier object_detection/images. J'ai également généré les fichiers train.record et test.record, et j'ai écrit le fichier labelmap.pbtxt. J'utilise le modèle fast_rcnn_inception_v2_coco du zoo du modèle tensorflow, j'ai donc configuré le fichier rapid_rcnn_inception_v2_coco.config et l'ai stocké dans le dossier object_detection/training. Le processus de formation s'est très bien déroulé et tous les points de contrôle sont également stockés dans le dossier object_detection/training.

Maintenant que je dois évaluer le modèle, j'ai exécuté le script eval.py comme ceci:

!python eval.py --logtostderr --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config --checkpoint_dir=training/ --eval_dir=eval/

Est-ce correct? Parce que cela a commencé à bien fonctionner, mais lorsque j'ai ouvert le tensorboard, il n'y avait que deux onglets, à savoir des images et un graphique, mais pas de scalaires. J'ai également exécuté tensorboard avec logdir = eval.

Je suis nouveau sur tensorflow, donc toute aide est la bienvenue. Je vous remercie.

8
Dragan Apostolski

La configuration semble bonne. J'ai dû attendre longtemps avant que l'onglet Scalars se charge/apparaisse avec les deux autres - comme 10 minutes après la fin du travail d'évaluation.

enter image description here

Mais à la fin du travail d'évaluation, il imprime dans la console toutes les métriques scalaires qui seront affichées dans l'onglet Scalars:

Accumulating evaluation results...
DONE (t=1.57s).
Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.434
Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.693
Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.470
Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000

etc.

Si vous souhaitez utiliser le nouveau model_main.py script au lieu de legacy/eval.py, vous pouvez l'appeler comme

python model_main.py --alsologtostderr --run_once --checkpoint_dir=/dir/with/checkpoint/at/one/timestamp --model_dir=eval/ --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config 

Notez que cette nouvelle API nécessiterait le champ optimizer dans train_config, qui est probablement déjà dans votre pipeline.config puisque vous utilisez la même chose pour la formation et l'évaluation.

7
yangsiyu

Pour ceux qui cherchent à exécuter le nouveau model_main.py en mode évaluation uniquement. Il y a un indicateur dans le paramètre que vous pouvez définir qui fait exactement cela. Ce drapeau est checkpoint_dir, si vous le définissez égal à un dossier contenant les points de contrôle de formation antérieurs, le modèle s'exécutera uniquement en évaluation.

J'espère pouvoir aider quelques-uns qui ont manqué ça comme moi! À votre santé,

2
ChowderII