Я начинающий на Halide, пытаюсь с его помощью ускорить maskrcnn.
К настоящему времени производительность действительно превосходна по сравнению с версией c. Затем я столкнулся с проблемой, которая беспокоила меня в течение нескольких дней: не максимальное подавление (nms), это классический алгоритм, но я не нашел подобного примера для него в галоиде, резюме таково:
Сначала отсортируйте поле массива, затем для каждого i в поле, от i+1 до конца этого массива, вычислите перекрытие с полем [i], затем либо сохраните его, либо удалите в соответствии с перекрытием. Можно ли это реализовать в галогениде? Должен ли я использовать define::extern? Appeciate много, если кто-нибудь может ответить.
Обновить:
Извините, что я не очень хорошо объяснил эту проблему. Немаксимальное подавление в MaskRcnn немного отличается от подавления в Canny Edge Detector. Вы можете обратиться к этому:
https://www.pyimagesearch.com/2015/02/16/faster-non-maximum-suppression-python/
где код Python является реализацией такого алгоритма.
Если это слишком долго, подумайте над этим простым вопросом:
Для массива a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} нам нужно вычислить произведение между a[i] и a[j](i+1 ‹=j ‹ 10), если это значение произведения меньше 6 (например), то мы удаляем a[j], повторяя эту операцию для всех i в диапазоне [0, 9]. Спасибо.