mrgloom 242 Жалоба Опубликовано March 14, 2017 Допустим есть некий стандартный pipeline HOG+LinearSVM, там мы ищем на нескольких скейлах и потом мерджим ректы через non-maxima supression. Но если посмотреть на это с другой стороны то на каждом уровне мы имеем некую карту откликов - назовем её heatmap, можно ли как то замерджить эти heatmap'ы? Т.е. на выходе у нас по идее будет 1 heatmap и на его базе мы уже построим ректы. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 14, 2017 А почему нет ? Привести к общему масштабу и сложить, неплохо еще после этого 3D гауссианом размыть (по слоям (X,Y) и между слоями (Z) ). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BeS 53 Жалоба Опубликовано March 14, 2017 40 minutes ago, Smorodov said: А почему нет ? Привести к общему масштабу и сложить, неплохо еще после этого 3D гауссианом размыть (по слоям (X,Y) и между слоями (Z) ). Не эквивалентной же получится: на разных скейлах пирамиды ячейке одного и того же размера соответствуют боксы разного размера(с масштабом равным скейл фактору в пирамиде), а при апскейле и сложении ты потеряешь spatial информацию о размерах окон. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 14, 2017 Не а, если размывать гауссианом в 3D, то мы и получим максимум в 3D точке, а масштаб можно легко вывести аппроксимацией (Z координата), впихнув точки в колокол и посмотрев где максимум. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BeS 53 Жалоба Опубликовано March 14, 2017 58 minutes ago, Smorodov said: Не а, если размывать гауссианом в 3D, то мы и получим максимум в 3D точке, а масштаб можно легко вывести аппроксимацией (Z координата), впихнув точки в колокол и посмотрев где максимум. А можно ссылки на то, где так делают? Чет я не уловил идею, как размытие тут поможет... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 14, 2017 Я так делал, размытие помогает собрать более-менее гладкий сгусток иначе получаются сплошные квадраты. Наслаивая как кальку, получим максимальную вероятность. Найдя x,y координаты, смотрим по слоям вдоль оси масштабов, там, при достаточном количестве этажей пирамиды будет кривая с максимумом. Аппроксимируем ее гауссианом или параболой и получаем координату максимума по масштабу. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BeS 53 Жалоба Опубликовано March 14, 2017 3 hours ago, Smorodov said: Я так делал, размытие помогает собрать более-менее гладкий сгусток иначе получаются сплошные квадраты. Наслаивая как кальку, получим максимальную вероятность. Найдя x,y координаты, смотрим по слоям вдоль оси масштабов, там, при достаточном количестве этажей пирамиды будет кривая с максимумом. Аппроксимируем ее гауссианом или параболой и получаем координату максимума по масштабу. Стопэ :-) У нас heatmap'а скольки мерная?) Я правильно понимаю, что ты просто все фичамапы апскейлишь к одному размеру (максимальному для пирамиды), суммируешь, на посуммированой 2D хитмапе находишь локальные максимумы, а затем снова в 3D тензоре заапскейленой пирамиды, для соответствующих точек, берешь argmax по слоям и разворачиваешь точку в бокс правильного скейла? А это дает какой-то буст, относительно лобового решения с формированием боксов и последующим NMS на прямоугольниках? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 14, 2017 Трехмерная мапа x,y и scale. Это дает менее дискретное нахождение масштаба, т.к. с интерполяцией, ну и еще надежнее получается, т.к. если объект присутствует в кадре, то он должен отметиться не на одном этаже пирамиды а на нескольких смежных. Причем эти этажи должны идти подряд, если нет, это шум. Если ищем на каждом отдельно, получается больше шума. Слой может дать высокий отклик а на соседних ничего нет, в таком случае, вряд-ли там есть объект, размытие по этажам, кстати, уменьшает вес таких пиков. Затем убрав шум (взяв только правильные этажи), можно уточнить координаты рамки. ЗЫ: ничего против NMS боксов не имею, работают в большинстве случаев отлично. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BeS 53 Жалоба Опубликовано March 14, 2017 53 minutes ago, Smorodov said: Трехмерная мапа x,y и scale. Это дает менее дискретное нахождение масштаба, т.к. с интерполяцией, ну и еще надежнее получается, т.к. если объект присутствует в кадре, то он должен отметиться не на одном этаже пирамиды а на нескольких смежных. Причем эти этажи должны идти подряд, если нет, это шум. Если ищем на каждом отдельно, получается больше шума. Слой может дать высокий отклик а на соседних ничего нет, в таком случае, вряд-ли там есть объект, размытие по этажам, кстати, уменьшает вес таких пиков. Затем убрав шум (взяв только правильные этажи), можно уточнить координаты рамки. ЗЫ: ничего против NMS боксов не имею, работают в большинстве случаев отлично. А как интерполируешь маленькие фича-мапы в большие? Просто биллинейной интерполяцией, или что-нибудь навороченое? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 14, 2017 Не, не сложно, большую часть работы делает сглаживание. Я только нахожу 2-3 точки ( в осях "вероятнисть", "масштаб" ), где значения вероятности максимальны, считаю взвешенную вероятностями сумму масштабов и нормирую суммой вероятностей. Получается такая линейная интерполяция на вершине горки образованной размытием. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано March 15, 2017 Так в итоге у нас всё равно скользящее окно? или мы ищем локальные максимумы типа http://stackoverflow.com/questions/3684484/peak-detection-in-a-2d-array Только у нас в 3D. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 15, 2017 Я делал threshold по вероятности, затем искал максимумы. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах