2

我正在通过 tensorflow 执行对象检测,但我面临的问题是对象检测不是很准确。我使用的架构是faster_rcnn_resnet_101.

更具体地说,我想解决的问题如下:

我正在尝试检测盒子,但我附加的图像将平板电脑检测为盒子,但置信度非常高(99%)。我想知道置信度是在哪里定义和打印的,因为我真的很好奇为什么平板电脑的置信度会像盒子一样高。我输入的所有训练数据都是像我检测到的那样的盒子。

这是物体检测的图像

谁能帮我找出 Tensorflow 对象检测 API 中定义的置信度在哪里?或者也许引导我解决这个问题?

4

1 回答 1

4

首先,我将解释如何生成分数。显示在框边缘的置信度分数是model faster_rcnn_resnet_101. 这是它的生成方式。

在此处输入图像描述

上图是从 Fast R-CNN 借来的,但是对于 box predictor 部分,Faster R-CNN 具有相同的结构。我们从 ROI 池化层开始,所有区域建议(在特征图上)都经过池化层,将被表示为固定形状的特征向量,然后通过全连接层,将成为ROI 特征向量,如图所示数字。现在,相同的 ROI 特征向量将被馈送到用于类预测的 softmax 分类器和用于边界框回归的 bbox 回归器。这是它们在张量流图中的样子。

在此处输入图像描述

在图中,Flatten 和 Flatten_1 节点都接收到相同的特征张量,并且进行了 flatten op(在 flatten op 之后,它们实际上就是第一张图中的 ROI 特征向量)并且它们仍然是相同的。现在我们关注ClassPredictor,因为它实际上会给出最终的类预测。

在此处输入图像描述

上图就是ClassPredictor里面的东西。它实际上是一个全连接层,如第一张图所示。输出张量在图中的形状为 64*24,它代表 64 个预测对象,每个是 24 个类别之一(23 个类别和 1 个背景类别)。所以对于每个对象,输出是一个 1x24 的向量,99% 和 100% 的置信度得分是向量中的最大值。

所以关于你的问题,没有定义置信度分数,而是模型的输出,你可以在可视化函数中定义一个置信度分数阈值,所有大于这个阈值的分数都将显示在图像上。因此,除非您重新训练模型和/或提供更多训练数据,否则您无法更改置信度得分。在您的图中,在计算精度时,99% 的片剂检测将被归类为假阳性。

解决这个问题的解决方案是添加更多的训练数据和/或训练更多的步骤(但不是过度拟合)

于 2019-04-24T08:55:39.957 回答