小编Mar*_*ari的帖子

TensorFlow对象检测API:评估mAP表现得很奇怪?

我正在使用Tensorflow Object Detection API为我自己的数据训练一个物体探测器.我正在关注Dat Tran的(精彩)教程https://towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9.我使用提供的ssd_mobilenet_v1_coco模型预训练模型检查点作为培训的起点.我只有一个对象类.

我导出了训练好的模型,在评估数据上运行它并查看结果边界框.训练有素的模型运作良好; 我会说如果有20个物体,通常会有13个物体在预测的边界框上有斑点("真正的正面"); 7未检测到物体的地方("假阴性"); 发生问题的2个案例是两个或多个对象彼此接近:在某些情况下,在对象之间绘制了边界框("误报"< - 当然,称这些"误报"等是不准确的,但这只是让我理解这里的精度概念).几乎没有其他"误报".这似乎比我希望获得的结果好得多,虽然这种视觉检查没有给出实际的mAP(根据预测和标记的边界框的重叠计算?),我粗略估计mAP为像13 /(13 + 2)> 80%的东西.

但是,当我运行eval.pyevaluate ()(在两个不同的评估集上)时,我得到以下mAP图(0.7平滑): mAP在训练期间

这将表明mAP的巨大变化,以及在训练结束时约0.3的水平,这比我根据在output_inference_graph.pb评估集上使用导出时绘制边界框的程度所假设的情况更糟糕.

以下是培训的总损失图: 培训期间的总损失

我的训练数据由200张图像组成,每张图像大约有20个标记对象(我使用labelImg app标记它们); 从视频中提取图像,对象很小,模糊不清.原始图像尺寸为1200x900,因此我将训练数据减少到600x450.评估数据(我用作评估数据集eval.py并用于在视觉上检查预测的外观)是相似的,由50个图像组成,每个图像有20个对象,但仍然是原始大小(训练数据是从前30分钟的视频和评估数据,最后30分钟).

问题1:当模型看起来效果如此之好时,为什么评估中的mAP如此之低?mAP图波动这么多是正常的吗?我没有触及张量板用于绘制图形的图像的默认值(我读过这个问题:Tensorflow对象检测api验证数据大小并且有一些模糊的想法,有一些默认值可以更改?)

问题2:这可能与不同大小的训练数据和评估数据(1200x700 vs 600x450)有关吗?如果是这样,我是否应该调整评估数据的大小?(我不想这样做,因为我的应用程序使用原始图像大小,我想评估模型对该数据的效果).

问题3:从每个图像有多个标记对象的图像形成训练和评估数据是否有问题(即,评估例程肯定会将一个图像中的所有预测边界框与一个图像中的所有标记边界框进行比较,以及不是所有预测的盒子在一个图像到一个标记的盒子中会产生许多"假误报"吗?)

(问题4:在我看来模型训练可能已经在大约10000次步骤后被停止了mAP类型的平稳,现在是否过度训练?当它波动如此之时很难分辨.)

我是对象检测的新手,所以我非常感谢任何人都能提供的见解!:)

tensorflow object-detection-api

8
推荐指数
1
解决办法
3531
查看次数

标签 统计

object-detection-api ×1

tensorflow ×1