如何解释 deepmask getTopScores 函数的输出
How to interpret the output of deepmask getTopScores function
我正在使用 facebookresearch 的 deepmask to segment an image. I am trying to modify the computeProposals.lua 模块来分割我自己的图像。关键函数是 getTopProps。在下面的代码块中,它用于查找与顶级提案相关联的掩码。
-- get top propsals
local masks,_ = infer:getTopProps(.2,h,w)
推断class来自InferDeepMask.lua模块。 getTopProps returns 两件事:面具和分数。分数来自 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(:)的位置是什么?它们不是蒙版上的像素位置。
注意每个面具的形状都是 (336, 448)
谢谢!
我相信(但尚未证明)输出是这样的:
- 得分值 - 一个介于 0 和 1 之间的值,描述了这个面具有多好。
- scaleNb - 指示用于生成掩码的边界框的粗略大小的值。
- & 4. position(of M(:)) - 将边界框的位置与原始图像的较小版本相关联的某种方式。
通过查看代码:
分数还算self-explanatory
scaleNb是采用的尺度的索引,即循环for k = 1,nScales do
中的索引k
,其中table包含不同尺度的值由 for scale = -3,2,.25 do table.insert(self.scales,scale)
行创建
M(:) 是棘手的部分。如果我正确理解代码,pos
是一个包含 nScales
个的张量,并且每次选择 k
规模的对象时,张量的 k-th
元素都会递增(他们按分数排序)。 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
、y
位置。
我正在使用 facebookresearch 的 deepmask to segment an image. I am trying to modify the computeProposals.lua 模块来分割我自己的图像。关键函数是 getTopProps。在下面的代码块中,它用于查找与顶级提案相关联的掩码。
-- get top propsals
local masks,_ = infer:getTopProps(.2,h,w)
推断class来自InferDeepMask.lua模块。 getTopProps returns 两件事:面具和分数。分数来自 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(:)的位置是什么?它们不是蒙版上的像素位置。
注意每个面具的形状都是 (336, 448)
谢谢!
我相信(但尚未证明)输出是这样的:
- 得分值 - 一个介于 0 和 1 之间的值,描述了这个面具有多好。
- scaleNb - 指示用于生成掩码的边界框的粗略大小的值。
- & 4. position(of M(:)) - 将边界框的位置与原始图像的较小版本相关联的某种方式。
通过查看代码:
分数还算self-explanatory
scaleNb是采用的尺度的索引,即循环
for k = 1,nScales do
中的索引k
,其中table包含不同尺度的值由for scale = -3,2,.25 do table.insert(self.scales,scale)
行创建
M(:) 是棘手的部分。如果我正确理解代码,
pos
是一个包含nScales
个的张量,并且每次选择k
规模的对象时,张量的k-th
元素都会递增(他们按分数排序)。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
、y
位置。