将预测的对象/区域唯一地分配给groundtruth对象/区域

时间:2017-04-06 01:34:53

标签: image-processing machine-learning object-detection

我有一个groundtruth对象列表(蓝色; 1-4)和一个预测对象列表(红色; a-d)。要计算评估预测性能的指标,我需要将预测对象分配给groundtruth对象。不应该使用任何对象两次!

图形右侧显示问题的一些可能解决方案(X,Y,Z),其中紫色区域表示匹配对象之间的重叠。

enter image description here

为了实现这一点,我创建了一个交叉矩阵,其中包含所有对象的交叉点(具有重叠比[交点/联合])。对于可视化示例,它看起来像下面(例如,意味着obj_2与obj_a重叠0.3,与obj_b重叠0.1,与obj_c重叠0.3,等等......)

    intersection_matrix

      | a   b   c   d
    --|-----------------
    1 | 0.1 -   -   -
    2 | 0.3 0.1 0.3
    3 | -   -   0.8 -
    4 | -   -   -   0.5 

每个对象仅使用一次的约束转换为最多具有一个条目的每个行和列。我首先想到这很简单,但考虑到这一点,我发现这很难以最佳方式解决。

作为一个简单的实现,我开始使用一种算法迭代groundtruth-objects并为其分配一个最大"得分"。

for i = 1:length(groundtruth_objects)
   highest_overlap = max(intersect_matrix(i,:));
   % take prediction_object with highest overlap as match
   match = find(intersect_matrix_iou(i,:) == highest_overlap);

   % remove matched objects from intersect_matrix (to avoid further matches)
   intersect_matrix(i,:) = 0;        % remove groundtruth_object
   intersect_matrix(:,match) = 0;    % remove prediction_object

   % save matched pair as entry in match matrix (which is the solution)
   match_matrix(i,match) = highest_overlap;
end

这会导致解决方案X,如示例中所示,这可能非常糟糕。迭代于prediction_object而不是导致解决方案Y,这在这里相当不错,但同样糟糕。

    Solution X              Solution Y              Solution Z

      | a   b   c   d         | a   b   c   d         | a   b   c   d
    --|-----------------    --|-----------------    --|-----------------
    1 | 0.1 -   -   -       1 | -   -   -   -       1 | 0.1 -   -   -
    2 | -   -   0.3 -       2 | 0.3 -   -   -       2 | -   0.1 -   -
    3 | -   -   -   0.1     3 | -   -   0.8 -       3 | -   -   0.8 -
    4 | -   -   -   -       4 | -   -   -   0.5     4 | -   -   -   0.5

问题是,为了确定匹配是否真的适合某个对象,检查相同的候选者是否在另一个对象上更好地匹配是有意义的(它具有更高的分数或者可能根本不被覆盖的分数。但它很快变得复杂,如图中左侧所示:

  • 判断是否匹配obj_1 - > obj_a,我们需要检查obj_a,它也可以匹配obj_2。
  • 要判断,我们需要检查obj_b和obj_c,后者也可以是obj_3。
  • 要判断,我们需要检查obj_d,它也可以匹配obj_4 ......

我认为对于最佳解决方案,需要迭代进行,如图中所示。

说明最优性的可能(且有意义的)规则是

  1. 将预测obj与最高得分相匹配......
  2. ...因为这并不妨碍其他对象的更高匹配
  3. 可能受到阈值的保护,以避免像
  4. 这样的不良匹配

    到目前为止我对此的看法。我现在的问题是:

    • 这是否与已知(且描述良好且已解决)的算法问题相对应?
    • 是否已有算法/实现 这个问题?
    • 或者有人知道如何在a中实现这一点 有限而有效的方式?

1 个答案:

答案 0 :(得分:0)

  1. 这是否与已知(且描述良好且已解决)的算法问题相对应?
  2. 是的,这是Assignment problem

    1. 此问题是否已有算法/实施?
    2. Hungarian method是一种旨在解决分配问题的算法。它允许涉及某个分数/优先级,这可以通过重叠来表示。

      1. 或者有没有人知道如何以有限和有效的方式实现这一点?
      2. 有多种语言实现。在这种情况下可能适合的MATLAB实现是this one