【问题标题】:Uniquely assign predicted objects/regions to groundtruth objects/regions将预测对象/区域唯一分配给真实对象/区域
【发布时间】:2017-08-31 20:07:48
【问题描述】:

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

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

为了实现这一点,我创建了一个交集矩阵,其中包含所有对象的交集(具有重叠率 [Intersection/Union])。对于可视化的示例,它看起来如下所示(例如,表示 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_objects 进行迭代反而会导致解决方案 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. 这样的错误匹配

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

  • 这是否对应于一个已知的(并且经过充分描述和解决的)算法问题?
  • 是否已经有算法/实现 这个问题?
  • 或者有没有人知道如何在 有限且有效的方法?

【问题讨论】:

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


    【解决方案1】:
    1. 这是否对应于一个已知的(并且得到充分描述和解决的)算法问题?

    是的,这是Assignment problem

    1. 是否已有针对此问题的算法/实现?

    Hungarian method 是一种旨在解决分配问题的算法。它允许涉及某个分数/优先级,可以通过此处的重叠来表示。

    1. 或者有人知道如何以有限且有效的方式实现这一点吗?

    有几种不同语言的实现。在这种情况下可能适合的 MATLAB 实现是 this one

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 2012-03-27
      • 2016-02-17
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      相关资源
      最近更新 更多