Python 目标检测分类报告

Python 目标检测分类报告,python,python-3.x,numpy,object-detection,Python,Python 3.x,Numpy,Object Detection,我正在研究目标检测。我知道检查你的模型有多好的标准是计算mAP,但我想更进一步。我想为每个类生成一个分类报告。为此,我要计算TP、FP和FN。我想在这里避免循环,并找到一种快速计算方法。简而言之,这些步骤包括: 1) 丢弃置信度得分=0.5的所有框,检查相应的predicted和ground truth标签。 4) 更新TP,FP和FN计数 以下是一个例子: Ground-Truth: [[142. 208. 158. 346.] person, [ 39. 63. 203. 112.

我正在研究目标检测。我知道检查你的模型有多好的标准是计算
mAP
,但我想更进一步。我想为每个类生成一个分类报告。为此,我要计算
TP
FP
FN
。我想在这里避免循环,并找到一种快速计算方法。简而言之,这些步骤包括:

1) 丢弃置信度得分<0.6的所有预测框 2) 使用GT计算剩余框的IOU。这是矢量化的 3) 对于IOU>=0.5的所有框,检查相应的
predicted
ground truth
标签。 4) 更新
TP
FP
FN
计数

以下是一个例子:

Ground-Truth:
[[142. 208. 158. 346.]  person,  
 [ 39.  63. 203. 112.]  dog,     
 [ 49.  75. 203. 125.]  person,
 [ 31.  69. 201. 125.]  dog,
 [ 50.  72. 197. 121.]  cat,
 [ 35.  51. 196. 110.]  dog]]


Predictions:

[[243. 203. 348. 279.]  cat     0.7,
 [ 54.  66. 198. 114.]  person  0.5,
 [ 42.  78. 186. 126.]  person  0.5,
 [ 18.  63. 235. 135.]  person  0.5,
 [ 54.  72. 198. 120.]  person  0.5]
我以向量化的方式计算IOU,得到这个数组:

IOU:

array([[0.        , 0.        , 0.        , 0.        , 0.        ],
       [0.        , 0.79577124, 0.48706725, 0.51433694, 0.62690467],
       [0.        , 0.6242775 , 0.787838  , 0.49283153, 0.79685193],
       [0.        , 0.65112543, 0.70033115, 0.609319  , 0.72605044],
       [0.        , 0.7406585 , 0.70739084, 0.4610215 , 0.94662803],
       [0.        , 0.6147791 , 0.39040923, 0.43102074, 0.48987743]],
      dtype=float32)


现在我无法找出如何以更快的方式匹配类标签,因为这是一个复杂的矩阵。有人能帮我吗?

如果我正确理解您的IOU度量输出(每一行表示一个边界框预测,每一列表示图像中每个对象的边界框)
然后您可以为每一行获取最大化IOU度量的列的索引:

索引=np.argmax(IOU,轴=1)

有了这些索引,就可以访问你的
地面真相
标签。

如果我正确理解你的IOU度量输出(每行代表一个边界框预测,每列代表图像中每个对象的边界框)
然后您可以为每一行获取最大化IOU度量的列的索引:

索引=np.argmax(IOU,轴=1)
通过这些索引,可以访问您的
基本真相
标签