我正在通过tensorflow执行对象检测,并且我面临着目标检测不太准确的问题。我使用的架构是faster_rcnn_resnet_101
。
具体来说,我想提出的问题如下:
我正在尝试检测框,但我所附的图像检测到平板电脑为盒子,但有一个非常高的置信度水平(99%)。我想知道信心水平是在哪里定义和打印的,因为我真的很好奇为什么平板电脑有如此高的置信度,就像一个盒子一样。我输入的所有训练数据都是像我发现的那样的盒子。
有人能帮我找出Tensorflow对象检测API中定义的置信度在哪里吗?还是带我去解决这个问题?
发布于 2019-04-24 00:55:39
首先,我将解释分数是如何产生的。显示在框边的置信度分数是model faster_rcnn_resnet_101
的输出。下面是它的生成方式。
上面的数字是从Faster借来的,但是对于盒子预测部分,更快的R有相同的结构。我们从ROI池层开始,所有区域提案(在特征图上)都经过池层,并将被表示为固定的形状特征向量,然后通过完全连接的层,将成为如图所示的ROI特征向量。现在,相同的ROI特征向量将提供给用于类预测的softmax分类器和用于包围盒回归的bbox回归器。这是它们在tensorflow图中的样子。
在图中,平坦节点和Flatten_1节点都接收相同的特征张量,并执行平坦运算(在平坦op之后,它们实际上是第一个图形中的ROI特征向量),它们仍然是相同的。现在我们关注ClassPredictor,因为这实际上会给出最终的类预测。
上图是ClassPredictor内部的情况。实际上是一个完全连接的层,如第一个图所示。输出张量在图中是形状为64*24的,它代表了64个预测对象,每个都是24个类中的一个(23个类,1个背景类)。因此,对于每个物体,输出是一个1x24向量,99%和100%的置信度分数是向量中最大的值。
所以对于你的问题,置信度不是定义的,而是模型的输出,有一个可以在可视化函数中定义的置信度门限,所有大于这个阈值的分数都会显示在图像上。因此,除非您重新培训模型和/或提供更多的培训数据,否则无法更改信心分数。在您的数字,99%的检测平板将被归类为假阳性时,计算的精密度。
解决这一问题的办法是增加更多的培训数据和/或为更多的步骤(但不过分适合)进行培训。
https://stackoverflow.com/questions/55820012
复制