【问题标题】:Average precision and average recall both are always 0 in TFOD and not showing the bounding boxesTFOD 中的平均精度和平均召回率都始终为 0,并且不显示边界框
【发布时间】:2020-06-20 00:16:18
【问题描述】:

在使用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'
  • 批量大小:8
  • COLAB 中使用的 Tensorflow-GPU 1.x
  • NumPy==1.17.5 已预先安装,因为最新版本正在创建一个名为 Out of range: End of sequence 的错误,并且可能是由于另一个名为 TypeError: 'numpy.float64' object cannot be interpreted as an integer 的错误而发生的。通过降级 NumPy 版本修复了这两个问题。

编辑:除此之外,我还发现了另一个问题。在测试输出时,测试图像上没有显示任何边界框。

【问题讨论】:

    标签: tensorflow config object-detection


    【解决方案1】:

    好的!我找到了这背后的可疑原因。问题可能出在预训练模型上。最初我使用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
    

    编辑:如前所述更改预训练模型后,不显示边界框的问题也已自动修复。

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 1970-01-01
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 2018-07-23
      • 2017-04-13
      • 2020-09-30
      • 2012-11-30
      相关资源
      最近更新 更多