如何解释deepmask getTopScores函数的输出

时间:2017-02-02 19:25:43

标签: lua computer-vision deep-learning torch

我正在使用facebookresearch deepmask来分割图片。我正在尝试修改computeProposals.lua模块以分割我自己的图像。关键功能是getTopProps。在下面的代码块中,它用于查找与顶级提案相关联的掩码。

-- get top propsals
local masks,_ = infer:getTopProps(.2,h,w)

推断类来自InferDeepMask.lua模块。 getTopProps返回两件事:掩码和分数。分数来自Infer:getTopScores()函数。

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

代码评论:

-- each line contains: the score value, the scaleNb and position(of 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.        ]]

第一栏显然是一个得分。什么是scaleNb,M(:)的位置是什么?它们不是面具上的像素位置。

NB每个面具的形状(336,448)

谢谢!

2 个答案:

答案 0 :(得分:0)

我相信(但尚未证明)输出是这样的:

  1. 得分值 - 介于0和1之间的值,描述这是一个好的面具。
  2. scaleNb - 一个值,指示用于生成蒙版的边界框的粗略大小。
  3. &安培; 4. position(of M(:)) - 将边界框的位置与原始图像的较小版本相关联的某种方式。

答案 1 :(得分:0)

通过查看代码:

  • 得分相当不言自明

  • scaleNb是采用的比例的索引,即循环k中的索引for k = 1,nScales do,其中包含不同比例值的表由行{{1}创建}}

  • M(:)是棘手的部分。如果我正确理解了代码,for scale = -3,2,.25 do table.insert(self.scales,scale)是一个包含pos个的张量,每当选择了一个对象nScales时,张量的k-th元素就会递增(他们按分数排序)。 k(这是用于计算形成temp所谓xy值的变量,由M(:)行给出。 这包含什么?它似乎包含了检测到的刻度的掩模位置。请参阅以下代码:

    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)似乎包含当前正在评估的分数的sortedIdsx位置。