Перейти к содержимому
Compvision.ru
mrgloom

Non maxima supression для heatmap?

Recommended Posts

Допустим есть некий стандартный pipeline HOG+LinearSVM, там мы ищем на нескольких скейлах и потом мерджим ректы через non-maxima supression.

Но если посмотреть на это с другой стороны то на каждом уровне мы имеем некую карту откликов - назовем её heatmap, можно ли как то замерджить эти heatmap'ы? Т.е. на выходе у нас по идее будет 1 heatmap и на его базе мы уже построим ректы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А почему нет ?

Привести к общему масштабу и сложить, неплохо еще после этого 3D гауссианом размыть (по слоям (X,Y) и между слоями (Z) ). 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
40 minutes ago, Smorodov said:

А почему нет ?

Привести к общему масштабу и сложить, неплохо еще после этого 3D гауссианом размыть (по слоям (X,Y) и между слоями (Z) ). 

Не эквивалентной же получится: на разных скейлах пирамиды ячейке одного и того же размера соответствуют боксы разного размера(с масштабом равным скейл фактору в пирамиде), а при апскейле и сложении ты потеряешь spatial информацию о размерах окон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не а, если размывать гауссианом в 3D, то мы и получим максимум в 3D точке, а масштаб можно легко вывести аппроксимацией (Z координата), впихнув точки в колокол и посмотрев где максимум.   

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
58 minutes ago, Smorodov said:

Не а, если размывать гауссианом в 3D, то мы и получим максимум в 3D точке, а масштаб можно легко вывести аппроксимацией (Z координата), впихнув точки в колокол и посмотрев где максимум.   

А можно ссылки на то, где так делают? Чет я не уловил идею, как размытие тут поможет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я так делал, размытие помогает собрать более-менее гладкий сгусток иначе получаются сплошные квадраты. Наслаивая как кальку, получим максимальную вероятность. Найдя x,y координаты, смотрим по слоям вдоль оси масштабов, там, при достаточном количестве этажей пирамиды будет кривая с максимумом. Аппроксимируем ее гауссианом или параболой и получаем координату максимума по масштабу. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 hours ago, Smorodov said:

Я так делал, размытие помогает собрать более-менее гладкий сгусток иначе получаются сплошные квадраты. Наслаивая как кальку, получим максимальную вероятность. Найдя x,y координаты, смотрим по слоям вдоль оси масштабов, там, при достаточном количестве этажей пирамиды будет кривая с максимумом. Аппроксимируем ее гауссианом или параболой и получаем координату максимума по масштабу. 

Стопэ :-) У нас heatmap'а скольки мерная?) Я правильно понимаю, что ты просто все фичамапы апскейлишь к одному размеру (максимальному для пирамиды), суммируешь, на посуммированой 2D хитмапе находишь локальные максимумы, а затем снова в 3D тензоре заапскейленой пирамиды, для соответствующих точек, берешь argmax по слоям и разворачиваешь точку в бокс правильного скейла? А это дает какой-то буст, относительно лобового решения с формированием боксов и последующим NMS на прямоугольниках?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Трехмерная мапа x,y и scale. Это дает менее дискретное нахождение масштаба, т.к. с интерполяцией, ну и еще надежнее получается, т.к. если объект присутствует в кадре, то он должен отметиться не на одном этаже пирамиды а на нескольких смежных. Причем эти этажи должны идти подряд, если нет, это шум. Если ищем на каждом отдельно, получается больше шума. Слой может дать высокий отклик а на соседних ничего нет, в таком случае, вряд-ли там есть объект, размытие по этажам, кстати, уменьшает вес таких пиков.  Затем убрав шум (взяв только правильные этажи), можно уточнить координаты рамки.

ЗЫ: ничего против NMS боксов не имею, работают в большинстве случаев отлично.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
53 minutes ago, Smorodov said:

Трехмерная мапа x,y и scale. Это дает менее дискретное нахождение масштаба, т.к. с интерполяцией, ну и еще надежнее получается, т.к. если объект присутствует в кадре, то он должен отметиться не на одном этаже пирамиды а на нескольких смежных. Причем эти этажи должны идти подряд, если нет, это шум. Если ищем на каждом отдельно, получается больше шума. Слой может дать высокий отклик а на соседних ничего нет, в таком случае, вряд-ли там есть объект, размытие по этажам, кстати, уменьшает вес таких пиков.  Затем убрав шум (взяв только правильные этажи), можно уточнить координаты рамки.

ЗЫ: ничего против NMS боксов не имею, работают в большинстве случаев отлично.

А как интерполируешь маленькие фича-мапы в большие? Просто биллинейной интерполяцией, или что-нибудь навороченое?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не, не сложно, большую часть работы делает сглаживание. Я только нахожу 2-3 точки ( в осях "вероятнисть", "масштаб" ), где значения вероятности максимальны, считаю взвешенную вероятностями сумму масштабов и нормирую суммой вероятностей. Получается такая линейная интерполяция на вершине горки образованной размытием.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так в итоге у нас всё равно скользящее окно? или мы ищем локальные максимумы типа http://stackoverflow.com/questions/3684484/peak-detection-in-a-2d-array

Только у нас в 3D.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я делал threshold по вероятности, затем искал максимумы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×