所以这个想法是为分割任务编写一个精度和召回指标。分割任务的常用指标通过逐像素比较地面实况和预测掩码来计算此指标。我要计算的方式是,即使预测了地面实况中对象的某些部分,那么整个对象 os 也被认为是真阳性。
我目前处理问题的方式是计算逻辑和基本事实和预测的掩码。然后使用skimage.measure.label为每个 blob 分配一个唯一的 id。然后我通过使用两者中的 blob 数来计算 True Positives、False Negatives 等
and_mask = np.logical_and(gt, pred)
labels1 = measure.label(gt, neighbors=8, background=0)
labels2 = measure.label(and_mask, neighbors=8, background=0)
这适用于大多数情况,但在我预测的 blob 掩码被预测为两部分的情况下,然后对其执行logical_and 会给我一个额外的对象。这搞砸了我对指标的计算。
有没有办法防止这种情况,还有一种更简单的方法吗?