【问题标题】:Classification report for Object Detection目标检测分类报告
【发布时间】:2019-11-15 02:04:06
【问题描述】:

我正在研究对象检测。我知道检查您的模型计算mAP 的标准,但我想更进一步。我想为每个类生成一个分类报告。为此,我想计算TPFPFN。我想在这里避免循环并找到一种快速计算的方法。简而言之,步骤包括:

1) 丢弃置信度分数 vectorized 3) 对于所有 IOU >= 0.5 的框,检查相应的 predictedground-truth 标签。 4)更新TPFPFN计数

这是一个例子:

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]

我以vectorized的方式计算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)

鉴于这个 IOUs 矩阵,现在我无法弄清楚如何以更快的方式匹配类标签。有谁能帮帮我吗?

【问题讨论】:

    标签: python python-3.x numpy object-detection


    【解决方案1】:

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

    indices = np.argmax(IOU, axis=1)
    

    使用这些索引,访问您的 ground-truth 标签。

    【讨论】:

      猜你喜欢
      • 2018-07-07
      • 1970-01-01
      • 2015-07-26
      • 2020-11-12
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 2019-11-11
      相关资源
      最近更新 更多