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)
通过这些索引,可以访问您的基本真相
标签