2017-02-02 23 views
1

Я использую facebookresearch's deepmask для сегментации изображения. Я пытаюсь изменить модуль computeProposals.lua, чтобы сегментировать мои собственные изображения. Ключевой функцией является getTopProps. В нижеприведенном блоке кода он используется для поиска масок, связанных с верхними предложениями.Как интерпретировать вывод функции getmopScores для глубокой маски

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

Infer класс от 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

Глядя на код:

  • счет довольно очевидны

  • scaleNb является показателем принятой шкалы, т.е. индекс k в петле for k = 1,nScales do где таблица, содержащая значения различных шкал, создается по линии

  • M (:) - сложная часть. Если я правильно понимаю код, 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, y партитуры, который в настоящее время оценивается.

0

Я считаю, (но не доказано), что выходной сигнал, таким образом:

  1. значение оценки - значение между 0 и 1, описывающий, насколько хорошо это маска.
  2. scaleNb - значение, которое указывает на грубый размер ограничивающей рамки, используемой для генерации маски.
  3. & 4. position (of M (:)) - некоторый способ связать положение ограничивающего прямоугольника с меньшей версией исходного изображения.