How to evaluate a pretrained model in Tensorflow object detection api

后端 未结 3 534
一生所求
一生所求 2021-01-31 06:45

Trying work with the recently released Tensorflow Object Detection API, and was wondering how I could evaluate one of the pretrained models they provided in their model zoo? ex.

相关标签:
3条回答
  • 2021-01-31 07:13

    You can also used model_main.py to evaluate your model.

    If you want to evaluate your model on validation data you should use:

    python models/research/object_detection/model_main.py --pipeline_config_path=/path/to/pipeline_file --model_dir=/path/to/output_results --checkpoint_dir=/path/to/directory_holding_checkpoint --run_once=True
    

    If you want to evaluate your model on training data, you should set 'eval_training_data' as True, that is:

    python models/research/object_detection/model_main.py --pipeline_config_path=/path/to/pipeline_file --model_dir=/path/to/output_results --eval_training_data=True --checkpoint_dir=/path/to/directory_holding_checkpoint --run_once=True
    

    I also add comments to clarify some of previous options:

    --pipeline_config_path: path to "pipeline.config" file used to train detection model. This file should include paths to the TFRecords files (train and test files) that you want to evaluate, i.e. :

        ...
        train_input_reader: {
            tf_record_input_reader {
                    #path to the training TFRecord
                    input_path: "/path/to/train.record"
            }
            #path to the label map 
            label_map_path: "/path/to/label_map.pbtxt"
        }
        ...
        eval_input_reader: {
            tf_record_input_reader {
                #path to the testing TFRecord
                input_path: "/path/to/test.record"
            }
            #path to the label map 
            label_map_path: "/path/to/label_map.pbtxt"
        }
        ...
    

    --model_dir: Output directory where resulting metrics will be written, particularly "events.*" files that can be read by tensorboard.

    --checkpoint_dir: Directory holding a checkpoint. That is the model directory where checkpoint files ("model.ckpt.*") has been written, either during training process, or after export it by using "export_inference_graph.py". In your case, you should point to the pretrained model folder download from https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md.

    --run_once: True to run just one round of evaluation.

    0 讨论(0)
  • 2021-01-31 07:21

    You can evaluate the pretrained models by running the eval.py script. It will ask you to point to a config file (which will be in the samples/configs directory) and a checkpoint, and for this you will provide a path of the form .../.../model.ckpt (dropping any extensions, like .meta, or .data-00000-of-00001).

    You also have to create a file named "checkpoint" inside the directory that contains that checkpoint that you'd like to evaluate. Then inside that file write the following two lines:

    model_checkpoint_path: “path/to/model.ckpt"
    all_model_checkpoint_paths: “path/to/model.ckpt"

    (where you modify path/to/ appropriately)

    The number that you get at the end is mean Average Precision using 50% IOU as the cutoff threshold for true positives. This is slightly different than the metric that is reported in the model zoo, which uses the COCO mAP metric and averages over multiple IOU values.

    0 讨论(0)
  • 2021-01-31 07:29

    Try:

    python eval.py --logtostderr --checkpoint_dir=training --eval_dir=path/to/eval_dir --pipeline_config_path=path/to/pretrained_model.config
    

    For example:

    python eval.py --logtostderr --checkpoint_dir=training --eval_dir=images/val \
      --pipelineline_config_path=training/faster_rcnn_inception_v2.config
    

    Note:

    The training dir contains all your training checkpoints. During training Tensorflow generates a checkpoint file inside this directory with all your checkpoint metadata in it so you do not need to create another one. If you wish to evaluate your trained custom model after generating your inference graph then ensure your change your original pretrained_model/model.chpt to your new_trained_model/model.ckpt in the .config you used for training. You should get a similar output:

    Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.457
     Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.729
     Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.502
     Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.122
     Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.297
     Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.659
     Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.398
     Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.559
     Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.590
     Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.236
     Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.486
     Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.746
    INFO:tensorflow:Writing metrics to tf summary.
    INFO:tensorflow:DetectionBoxes_Precision/mAP: 0.456758
    INFO:tensorflow:DetectionBoxes_Precision/mAP (large): 0.659280
    INFO:tensorflow:DetectionBoxes_Precision/mAP (medium): 0.296693
    INFO:tensorflow:DetectionBoxes_Precision/mAP (small): 0.122108
    INFO:tensorflow:DetectionBoxes_Precision/mAP@.50IOU: 0.728587
    INFO:tensorflow:DetectionBoxes_Precision/mAP@.75IOU: 0.502194
    INFO:tensorflow:DetectionBoxes_Recall/AR@1: 0.397509
    INFO:tensorflow:DetectionBoxes_Recall/AR@10: 0.558966
    INFO:tensorflow:DetectionBoxes_Recall/AR@100: 0.590182
    INFO:tensorflow:DetectionBoxes_Recall/AR@100 (large): 0.745691
    INFO:tensorflow:DetectionBoxes_Recall/AR@100 (medium): 0.485964
    INFO:tensorflow:DetectionBoxes_Recall/AR@100 (small): 0.236275
    INFO:tensorflow:Losses/Loss/BoxClassifierLoss/classification_loss: 0.234645
    INFO:tensorflow:Losses/Loss/BoxClassifierLoss/localization_loss: 0.139109
    INFO:tensorflow:Losses/Loss/RPNLoss/localization_loss: 0.603733
    INFO:tensorflow:Losses/Loss/RPNLoss/objectness_loss: 0.206419
    
    0 讨论(0)
提交回复
热议问题