我正在使用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)
谢谢!
答案 0 :(得分:0)
我相信(但尚未证明)输出是这样的:
答案 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
所谓x
和y
值的变量,由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)
似乎包含当前正在评估的分数的sortedIds
,x
位置。