如何解释 deepmask getTopScores 函数的输出

我正在使用 facebookresearch 的 deepmask 对一个图像进行分割。我试图修改 computeProposals.lua 模块以对我的自己的图像进行分割。关键函数是 getTopProps。在下面的代码块中,它被用来查找与顶部建议相关联的掩码。

-- 获取顶部建议
local masks,_ = infer:getTopProps(.2,h,w)

infer 类来自于 InferDeepMask.lua 模块。getTopProps 返回两个值:掩码和分数。分数来自 Infer:getTopScores() 函数。

问题:如何解释 getTopScores 函数的输出?

代码注释:

-- 每行包含:分数值、比例值和 M(:) 的位置

示例输出(转换为 numpy 数组):

[[  0.9942829    2.          26.           6.        ]
 [  0.9942829    3.          26.           6.        ]
 [  0.98620307   2.           1.          29.        ]
 [  0.98620307   3.           1.          29.        ]
 [  0.97150999   2.          19.           8.        ]
 [  0.97150999   3.          19.           8.        ]
 [  0.97141284   2.          18.           8.        ]
 [  0.97141284   3.          18.           8.        ]
 [  0.9639107    2.          15.          11.        ]
 [  0.9639107    3.          15.          11.        ]]

第一列明显是一个分数。什么是比例值,以及 M(:) 的位置是什么?它们不是掩码上的像素位置。

注意:每个掩码的形状为(336,448)

谢谢!

点赞
用户1749629
用户1749629

我认为(尚未证明),输出如下:

  1. 分数值 - 介于 0 到 1 之间的值,描述该掩膜的好坏程度。
  2. scaleNb - 一个值,表示用于生成掩膜的边界框的大致大小。
  3. & 4. 位置(M(:)的) - 将边界框的位置与原始图像的较小版本相关联的方法。
2017-02-03 20:42:36
用户893697
用户893697

通过查看代码:

  • 分数相当容易理解

  • scaleNb 是采用比例尺的索引,即循环 for k = 1,nScales dok 的索引,其中包含不同比例尺值的表格通过 for scale = -3,2,.25 do table.insert(self.scales,scale) 的语句创建。

  • M(:) 部分有些棘手。如果我理解这段代码是正确的,pos 是一个包含 nScales 个 1 的张量,每当选择某个比例尺下的物体时(它们按分数排序),张量的第 k 个元素会增加。然后使用 temp 变量(用于计算形成他们称之为 M(:)xy 值的变量)的行是 local temp=sortedIds[pos[scale]][scale]。 它包含什么?它似乎包含探测到的比例尺上掩膜的位置。请参见以下代码片段:

    local sc=sc:view(h*w) local sS,sIds=torch.sort(sc,true) local sz = sS:size(1) sortedScores:narrow(2,s,1):narrow(1,1,sz):copy(sS) sortedIds:narrow(2,s,1):narrow(1,1,sz):copy(sIds)

sortedIds 似乎包含当前正在评估的分数的 xy 位置。

2017-02-04 00:24:29