Средняя точность и средний возврат всегда равны 0 в TFOD - PullRequest
0 голосов
/ 20 июня 2020

Во время тренировки с TensorFlow Object Detection API я всегда получаю накопленный результат оценки 0. Ниже приводится соответствующая подробная информация, которую я получил:

Accumulating evaluation results...
DONE (t=1.51s).
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.000
 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.000
 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.000
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.000
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.000
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.000
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.000
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.000
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.000
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.000

Почему это происходит? В качестве документации по TFOD я предоставил модели файлы train.record и test.record. Но не предоставил никаких наборов данных для проверки или оценки или чего-то в этом роде отдельно, так как я не нашел ничего подобного в качестве требования. Это причина этого?

Дополнительно вот обучающая команда:

!python /content/models/research/object_detection/model_main.py \
    --pipeline_config_path={pipeline_fname} \
    --model_dir={model_dir} \
    --alsologtostderr \
    --num_train_steps={num_train_steps} \
    --num_eval_steps={num_eval_steps}

Здесь я установил следующие значения для этих переменных:

  • pipeline_fname : 'ssd_mobilenet_v2_coco.config'
  • model_dir: '/ training' # просто папка с образцами для хранения модели
  • num_train_steps: 50000
  • num_eval_steps: 1

Дополнительная информация:

  • Использована предварительно обученная модель: 'ssd_mobilenet_v1_coco_2017_11_17'
  • Batch_size: 8
  • Tensorflow-GPU 1.x используется в COLAB
  • NumPy == 1.17.5 был установлен заранее, поскольку последняя версия создавала ошибку с именем Out of range: End of sequence и, вероятно, возникла из-за другой ошибки с именем TypeError: 'numpy.float64' object cannot be interpreted as an integer. Оба они были исправлены путем понижения версии NumPy.

EDIT: Помимо этого, я обнаружил еще одну проблему. Во время тестирования на тестовых изображениях не отображаются ограничительные рамки.

1 Ответ

0 голосов
/ 20 июня 2020

Хорошо! Я нашел подозрительную причину этого. Проблема, вероятно, в предварительно обученной модели. Первоначально я использовал ssd_mobilenet_v1_coco_2017_11_17 в качестве предварительно обученной модели и получал ошибку. Поэтому, когда я сменил модель, ошибка исчезла. В настоящее время я использую ssd_mobilenet_v2_coco_2018_03_29, который является его обновленной версией. Ниже приводится часть подробного сообщения, которое, надеюсь, теперь показывает, что все в порядке:

Accumulating evaluation results...
DONE (t=1.05s).
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.329
 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.835
 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.111
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.200
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.298
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.392
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.206
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.439
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.441
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.274
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.409
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.502

Изменить: Проблема отсутствия отображения ограничивающих рамок также была исправлена ​​автоматически после изменения предварительно обученных модель, как указано.

...